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;
    
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。