Apache-2.4

如何將 HSTS 標頭應用於 Apache 中超過 443 的所有虛擬主機

  • June 16, 2020

我正在尋找在 Apache 中添加 HSTS 標頭…

# HSTS / Header Strict Transport Security
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"

…但我有一長串不同但相關的站點/子站點的虛擬主機列表。我寧願不必在我的每個虛擬主機定義中都定義它,但我不知道有一種方法可以在主要https.conf中包含一個僅適用於443 / https這些虛擬主機版本的設置,因為它會在驗證器中引發警告你將 HSTS 應用於標準80 / http站點。

我嘗試將其包裝在<IfModule mod_ssl.c>...</IfModule>標籤中,但如果我沒記錯的話,這實際上只是在詢問SSL 模組是否已載入? 我嘗試了很多不同的方法,但是當您不知道要查找的術語時,很難對所有靜態進行分類。有什麼建議麼?謝謝!

您可以使用可用的<If>指令表達式來做到這一點;請求相關變數

  • REQUEST_SCHEME: 請求 URI 的方案部分
<If "%{REQUEST_SCHEME} == 'https'">
 Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
</If>
  • HTTPSon如果請求使用https,off否則
<If "%{HTTPS} == 'on'">
 Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
</If>

引用自:https://serverfault.com/questions/1021500