nginx配置https实践以及遇到的问题

HTTP以明文的形式在浏览器之间进行数据的交互,没有任何数据加密,很容易被攻击者拦截并读懂,这很不安全。因此现在很多浏览器都要求网站域名配置SSL证书,以HTTPS协议进行传输。HTTPS可以看作是HTTP+SSL协议,SSL依靠证书来验证服务器的身份,同时对浏览器与服务器之间通信进行加密。

SSL证书可以通过腾讯云进行免费申请,但前提是域名必须备案,证书的有效期为1年,1年后需手动再申请。


申请通过后便可下载,腾讯提供的证书可以配置到APache、Nginx和Tomcat等服务器。

nginx下配置服务器:

第一步将下载下来nginx目录下的两个证书文件上传到服务器上nginx安装目录下的conf目录中


接着修改nginx.conf

server {
    listen    80; 
    server_name  www.hsfeng.cn;
    rewrite ^(.*) https://$server_name$1 permanent;   #将http强制转换为https

    location /upload{
        alias  /home/upload;
    }

} 

server {
    listen       443;
    server_name  www.hsfeng.cn;

    ssl on;
    ssl_certificate 1_www.hsfeng.cn_bundle.crt;
    ssl_certificate_key 2_www.hsfeng.cn.key;
    ssl_session_timeout  5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_ciphers ECDH:AESGCM:HIGH:!RC4:!DH:!MD5:!3DES:!aNULL:!eNULL;

    location / {
        proxy_set_header  Host $host:443;
        proxy_set_header  REMOTE-HOST $remote_addr;  
        proxy_set_header  X-Real-IP $remote_addr;  
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;   
        proxy_pass  http://project_nginx; 
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

    location /upload{
       alias  /home/upload; 
    }

}

这样,便完成了nginx下https的配置,结果如下:


最后讲讲配置过程中容易忽略的地方:

1. 首先确保机器上安装了openssl和openssl-devel,一开始我没安装,nginx重启时候会报识别不出ssl。安装命令:

  • #yum install openssl   
  • #yum install openssl-devel

2. 第二个是记得开放防火墙的443端口,https默认是443端口进行访问,Linux默认是不开放的,可使用命令 -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT,最后别忘了重启防火墙。

猜你喜欢

转载自blog.csdn.net/hsf15768615284/article/details/80779812
今日推荐