Nginx全站Https跳转配置

Sep 25, 2017 • edited Mar 18, 2020

Nginx全站Https跳转配置

这是一个过得糟糕透顶的周末。被一个Nginx配置强制全站https访问的问题折腾着,花上了不少时间去研究测试。当你实现以后发现其实也不过如此,简单容易。

关键地方在于带www和不带www的域名都是需要生成不同证书。

其实这个问题在前段时间启用了https以后一直都没有解决,启用Https是没有问题,但是如何更顺更完美的做好,则需要学习和花时间折腾,全站Https没想象的那么简单。

除了跳转配置,还要折腾配合着上http2,在全站启用Https才显得理想,还有压缩等,有很多坑需要去填。

关于全站Https跳转配置,我想要实现的需求是,即全站域名都指向一个「https://www.sungz.com</a>」:

http://sungz.com -&gt; https://www.sungz.com
https://sungz.com -&gt;https://www.sungz.com
http://www.sungz.com -&gt;https://www.sungz.com

实现的跳转的配置

server { 
listen 80; 
listen 443 ssl http2; 
server_name www.sungz.com sungz.com ; 

ssl_certificate /etc/letsencrypt/live/www.sungz.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.sungz.com/privkey.pem;
#    ssl_session_timeout  5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers   on;
ssl_ciphers AES128:AES256:GCM:!DH:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS; #加密算法 
# enable HSTS including subdomains
add_header Strict-Transport-Security &quot;max-age=31536000; includeSubdomains&quot;;
if ($ssl_protocol = &quot;&quot;) { return 301 https://$server_name$request_uri; } 
if ($host != 'www.sungz.com' ) { return 301 https://www.sungz.com$request_uri; }
}
#技术笔记

Facebook发布React 16 专利条款改为MIT开源协议

禁止firefox自动更新,不许火狐耍流氓