Nginx配置https站点

Nginx配置HTTPS

最近配置了现网网站的HTTPS,简单记录一下配置过程。

先交代一下我的服务部署环境:Nginx监听80端口,转发到Tomcat8080端口;服务器使用的是阿里云的ECS,操作系统是Windows Server 2012CA证书也是在阿里云的CA证书服务上面申请的免费证书。
1. 申请CA证书
首先去购买CA证书。一般各大云服务提供商都会有此类证书服务,根据公司和业务需求,可以自己选择免费或者付费的证书。我选择的是Symantec 赛门铁克的免费型DV SSL,此类证书一个证书对应一个域名,如果涉及到二级域名需要另外申请一个二级域名的CA证书。阿里云上面的证书购买过程比较简单,需要注意的两个地方:1.要对域名进行验证;2.CSR的生成方式。如果自己的域名是放在阿里云解析上面的,阿里云会自动校验;如果域名没有在阿里云上面解析,需要按照阿里云的提示进行一下操作。另外CSR的生成方式建议选择系统生成CSR,自己生成CSR稍微麻烦一点。证书购买成功后补全好自己的域名即可。
2. Nginx配置
CA证书审核通过后,将证书下载到本地,会得到一个zip包,里面有xxx.keyxxx.pem两个文件。
1) 在Nginx的安装目录下创建cert目录,并将xxx.keyxxx.pem拷贝到该目录中。注意:如果是自己生成的CSR文件,应该只有一个xxx.key文件,将该文件拷贝进去就可以了。
2) 打开conf目录中的nginx.conf配置文件修改443端口监听配置。Nginx默认配置是将443端口的监听配置注释掉了的,如下:

# HTTPS server
# #server {
# listen 443;
# server_name localhost;
# ssl on;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_timeout 5m;
# ssl_protocols SSLv2 SSLv3 TLSv1;
# ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
# ssl_prefer_server_ciphers on;
# location / {
#
#
#}
#}

将注释打开,并对其中部分内容进行修改,修改后如下:

server {
    listen 443;
    server_name your-domain-name;
    ssl on;
    root html;
    index index.html index.htm;
    ssl_certificate   cert/214293826510663.pem;
    ssl_certificate_key  cert/214293826510663.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    location / {
        root html;
        index index.html index.htm;
    }
}

3) 修改配置并保存后,Nginx安装目录运行nginx.exe -s reload命令可重启Nginx使配置生效。
4) 通过https:\\xxxx.com方式访问你的网站,如果能够正常访问,浏览器左边出现绿色的标记或者出现锁的标记那就成功了。

几点注意事项:
1. 如果HTTPS方式访问网站出现无响应的情况,可以看看自己的服务器防火墙配置,是不是需要将443端口加到例外中去;
2. 注意自己xxx.pemxxx.key的存放路径,区分相对路径和决定路径使用方式;
3. 通过Nginx安装目录下的logs文件夹中的access.logerror.log日志文件来进行排错;
4. 同一个Nginx可以配置多个HTTPS的域名,只需要将上面443端口的监听配置复制一份加到配置文件中,然后修改好相应的server_namexxx.pemxxx.key文件路径即可。

补充一点配置:
如果Nginx配置了HTTPS,那背后的Tomcat就没有必要再进行配置了,另外,为了兼容原来80端口的HTTP方式的访问,可以将80端口的访问请求全部转发到443端口上,增加配置如下:

server {
    listen       80;
    server_name  your-domain.com;

    location = / {
        rewrite ^(.*) https://your-domain.com/$1 permanent;
    }

    location / {
        rewrite ^(.*) https://your-domain.com/$1 permanent;
    }
}

--------------------- 本文来自 肖老板 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/cloume/article/details/78252319?utm_source=copy

猜你喜欢

转载自blog.csdn.net/HoeWang/article/details/82840721