这是一个过得糟糕透顶的周末。被一个Nginx配置强制全站https访问的问题折腾着,花上了不少时间去研究测试。当你实现以后发现其实也不过如此,简单容易。
关键地方在于带www和不带www的域名都是需要生成不同证书。
其实这个问题在前段时间启用了https以后一直都没有解决,启用Https是没有问题,但是如何更顺更完美的做好,则需要学习和花时间折腾,全站Https没想象的那么简单。
除了跳转配置,还要折腾配合着上http2,在全站启用Https才显得理想,还有压缩等,有很多坑需要去填。
关于全站Https跳转配置,我想要实现的需求是,即全站域名都指向一个「https://www.sungz.com</a>」:
http://sungz.com -> https://www.sungz.com
https://sungz.com ->https://www.sungz.com
http://www.sungz.com ->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 "max-age=31536000; includeSubdomains";
if ($ssl_protocol = "") { return 301 https://$server_name$request_uri; }
if ($host != 'www.sungz.com' ) { return 301 https://www.sungz.com$request_uri; }
}