[https]HSTS与全站https

Head Pic: 【女の子】「miku 颓废」/「千夜QYS3」のイラスト [pixiv]

TLS1.3都来了,怎么能还支持http访问呢?

前言

18年11月,GFW停止了对阿里云香港节点https访问的干扰(关于干扰问题见这里),其实可能更早就结束了,也许在对p站和维基百科使用SNI阻断后就停止了,我也是在把cloudflare这个著名的云减速停掉之后才发现的,这意味着本站https恢复正常,大陆访问再次直连,而不是绕好大一圈回大陆。(当然全站https也就可以被SNI阻断了233)

既然这样,何不停止http访问呢?

开搞

网络上大多数全站https的教程都是直接nginx rewrite了,暴力且直接,但是这样会耗费一点服务器资源,也不够优雅,于是就去看了各大公司如何实现的。

百度的主页使用了<meta>标签做到的,其实本站主页cinema000.xyz的http访问也是这么搞的。但是这种方法只适合单页面的东东。

淘宝则使用了一个名为HSTS技术,nginx里面也有它的实现。

配置

直接在nginx的根server中加入如下配置:

1
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

这样就可以达到所有子域名都有HSTS效果。

效果

当有https访问记录后,HSTS便会生效,就是即使你在地址栏里输入http,浏览器都会自动改为https。

如果之前没有任何https访问记录,就不会生效,所以还是得来一个rewrite。

分享到: