我有几个基于 IP 的虚拟主机,我想Strict-Transport-Security
在这些主机上添加标头。我使用的是自定义编译的 Apache 2.4。
目前我<VirtualHost>
每个域有两个容器,如下所示:
<VirtualHost ${IP3}:80>
...
<IfModule rewrite_module>
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.${SITE}%{REQUEST_URI} [NE,R=301,L]
</IfModule>
...
</VirtualHost>
<VirtualHost ${IP3}:443>
...
</VirtualHost>
第一个 VirtualHost 对非 SSL 和非 www 请求执行了一个简单的 mod_rewrite,将所有请求重定向到第二个 VirtualHost。很简单。
问题 1
我应该在第一个 VirtualHost 容器 (:80)、第二个 (:443),还是两个容器中都设置 mod_headers 内容?
问题2
我的 mod_headers 内容应该放在 mod_rewrite 内容之前还是之后?
问题 3
我应该将Strict-Transport-Security
标题应用于所有文件,还是仅应用于 .htm、.html 和 .php 文件?(我已将 FilesMatch 指令设置为某些标题的限定符)
我的最佳猜测答案
在进行任何测试之前,我最好的猜测答案是:
Q1. 将 mod_headers 内容添加到两个都VirtualHost 容器。
Q2. mod_headers 应该出现前mod_rewrite 的东西。
Q3. 是的,只有您提供的 Web 文件类型才需要Strict-Transport-Security
。无需将其添加到 .gifs、.pngs、.svgs、.css、.js 等。
编辑:我看到 stackexchange 也将它们添加到他们的 robots.txt 文件中。
谢谢。
答案1
我将暂时发布一个答案,如果有人来纠正我,我会将您的答案标记为正确。
问 1.Strict-Transport-Security
一定要在 :80 和 :443 VirtualHosts 中设置标头。
问2.一定要在任何 mod_rewrite 重定向规则之前添加标题。
问3.我对这个答案不太确定。
有些网站同时使用 SSL 和非 SSL 资产(css、js、图像),但我的网站仅通过 SSL 提供内容。
所以答案是:这取决于您的设置和您想要什么。将标头添加到 css、js、图像等中没有坏处。相反,不将其添加到这些文件类型中也没有坏处。