nginx配置ssl实现https

HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。现在信息安全越来做受到重视,https势在必行。

https采用非对称加密,非对称加密中:公钥和私钥成对出现,公钥由私钥取出。私钥只能由对应公钥解开,公钥也只能由对应私钥打开。网站证书里会包含网站公钥信息,其对应的私钥会不对外公开。当网站用户提交信息时会客户端会使用网站证书中的公钥对数据进行加密。而唯一能解开公钥加密数据的对应私钥只存在于网站服务器上。所以,就算数据传输过程中有人拿到了数据,也只是加密后的一堆符号。这样我们就保证了我们想要发送的信息能够准确的传达到目标网站。

nginx配置ssl很简单,只需要在nginx对应的nginx. cnf文件中配置添加server,具体代码如下:

server {
        listen        443  ssl;
        server_name     example.com;  #把此处的example.com改为你网站的域名
        ssl_certificate      cert/test.crt;  #此处把cert/test.crt改为你ssl证书文件路径
        ssl_certificate_key  cert/test.key;  #把此处cert/test.key改成你ssl私钥文件路径
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location ~ \.php$ {
            root   html;   #此处将html改为你网站文件根目录
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

location / {
        root   html;   #此处将html改为你网站文件根目录
        index  index.php index.html index.htm;
          }      
}                                                       

代码中需要自己进行相应修改的地方已经用红色标出。其中蓝色部分是对nginx原始配置文件的一个修正,如果不进行此处的修正,lnmp环境下会导致网站无法解析. php文件。

发表评论