nginx 如何启用 HSTS
背景
网站配置好 HTTP 强制跳转 HTTPS 就万事大吉了吗?其实我们还可以让安全性更上一层楼,就是启用 HSTS。这是一项安全协议,网站通过特定响应头告诉浏览器,在一定时间内可以自作主张,把 HTTP 跳转到 HTTPS。
这样不仅更加安全,而且还可以略微加速网页的加载和显示。
代码片断
nginx 的配置方法如下:
server {
listen 443 ssl;
server_name www.my-website.com;
# enable HSTS
add_header Strict-Transport-Security "max-age=31536000";
# 以下是网站的常规配置和 HTTPS 配置(略)
# ...
}
其他 Web 服务器的配置方法类似,给 HTTPS 站点添加以下响应头即可:
Strict-Transport-Security: max-age=31536000
补充说明
上面列出的只是 Strict-Transport-Security
这个响应头的最小化写法。可扩展的写法如下:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
各部分的含义如下:
max-age=31536000
—— 表示浏览器接下来可以自作主张的有效期,单位秒。建议至少一年,即31536000
。includeSubDomains
—— 表示所有子域名也可以自动跳到 HTTPS(可选)。preload
—— 表示本网站同意加入 HSTS 清单(可选)。