myesn

myEsn2E9

hi
github

nginx: HSTS 设置和清除

介绍#

首先了解 HSTS 是什么。

简单说就是返回一个响应头,告诉浏览器这个域名和所有的子域名,以后都强制使用 https 进行访问,这样网站的应用程序就不需要再做重定向工作,并且也会更安全。

includeSubDomains#

需要注意的是,如果添加了 includeSubDomains 指令,那么 HSTS 规则将会应用到所有的子域名,比如在 example.com 中添加了该指令,那么以下子域都会应用该 HSTS 规则:

  • example.com
  • example.com:* 任意端口
  • *.example.com
  • *.example.com:* 任意端口

在 nginx 中配置#

server {
    ..

    # HSTS
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains=false;" always;

    ..
}

includeSubDomains=false 代表不应用规则到子域名。

禁止应用到子域名#

如果只是想配置当前指定的域名,不想影响子域名,那么可以添加为:

includeSubDomains=false;

清除已经应用到浏览器的 HSTS 规则#

如果配置了错误的 HSTS 规则,并且已经应用到浏览器,那么有两种方式可以解决:

  1. 清除浏览器所有的缓存
  2. 添加以下代码使其立刻失效,添加后重新启动 nginx:nginx -s reload,然后再次访问浏览器,访问之后,之前设置的 HSTS 就会失效:
    add_header Strict-Transport-Security "max-age=0" always;
    
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。