在 apache 中为基于域名的虚拟主机配置 hsts(http strict transport security)安全头,需要在对应的 virtualhost 配置块中使用 header 指令设置 strict-transport-security。具体做法是确保该虚拟主机仅监听 https 端口(通常是 443),并在其中添加 header always set strict-transport-security "max-age=31536000; includesubdomains" 指令,这样所有通过该域名访问的 https 请求都会携带此头部,强制浏览器在未来一段时间内只使用 https 连接。

如何验证 HSTS 头是否生效
要验证 HSTS 头是否正确返回,可以使用 curl 命令向服务器发起 HTTPS 请求并查看响应头部。执行 curl -I https://yourdomain.com,如果配置成功,输出中应包含 strict-transport-security: max-age=31536000; includeSubDomains。若未看到该字段,需检查 Apache 是否已加载 mod_headers 模块以及 VirtualHost 配置语法是否正确。

# 确保加载了 mod_headers
LoadModule headers_module modules/mod_headers.so
# 虚拟主机配置示例
<virtualhost>
ServerName yourdomain.com
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /path/to/cert.pem
SSLCertificateKeyFile /path/to/key.pem
# 设置 HSTS 头
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</virtualhost>
预期结果:运行 curl -I https://yourdomain.com 后,响应头中包含 strict-transport-security 字段,且值为 max-age=31536000; includeSubDomains。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
HSTS 头中的参数含义是什么
HSTS 头中的 max-age 指定了浏览器记住该域名的时间长度(秒),includeSubDomains 表示该策略也适用于所有子域名。例如 max-age=31536000 代表一年,includeSubDomains 则扩展保护范围至 sub.yourdomain.com。若省略 includeSubDomains,子域名将不受 HSTS 保护。

# 不同参数的效果对比 # 仅主域名,有效期 1 小时 Header always set Strict-Transport-Security "max-age=3600" # 主域名+子域名,有效期 1 年 Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
预期结果:第一个配置仅对 yourdomain.com 生效,第二个配置对 yourdomain.com 及其所有子域名生效。可通过 curl -I https://sub.yourdomain.com 验证子域名是否返回 HSTS 头。










