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 清单(可选)。

相关小抄