如果说2015年是静态博客的发展年,那2016年绝对是https的发展年。去年开始,由于提供免费的SSL证书服务越来越多,全站HTTPS化俨然成为博客界的时尚之举。另一方面Apple强制要求ATS,Google从Chrome56开始,输入密码或者信用卡资料的网站使用HTTPS,将被Chrome浏览器标识为不安全,这已经意味着全站HTTPS时代已经来临。从某种意义上来说,开放的Let’s Encrypt免费证书加快推进了国内HTTPS的发展。
前不久看到又拍云支持https服务后,心痒难耐。春节假期刚好空闲在家,于是干脆动手把边走边说全站升级为https。我使用的是Nginx,在升级的过程中,跳转的问题一直没有得到解决,网上的各种教程,更多的只是提醒了HTTP强制HTTPS访问,并没有解决HTTPS下WWW之间的跳转。可能说的不是很清楚,来,我们理一下。
- https://www.huaqing.org
- http://www.huaqing.org
- https://huaqing.org
- https://www.huaqing.org
访问边走边说一共会有以上四种形式,但是我最终的目的是将1、2、3种强制跳转到第4种。通过以下两步也可以实现:
STEP1:将HTTP请求强制跳转到HTTPS
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| server { listen 80; server_name huaqing.org www.huaqing.org; return 301 https://www.huaqing.org$request_uri; location ~ /.well-known { allow all; } location ~ /\. { deny all; } access_log off; }
|
1 2 3 4 5 6 7 8 9 10
| server { listen 443 ssl http2; server_name huaqing.org; return 301 https://www.huaqing.org$request_uri; ssl_certificate /etc/letsencrypt/live/www.huaqing.org/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.huaqing.org/privkey.pem; ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5"; access_log off; }
|