Apache中配置HSTS需在HTTPS虚拟主机内用Header指令添加Strict-Transport-Security头,确保启用headers和ssl模块,max-age建议先设为300秒验证,includeSubDomains和preload需谨慎启用。在 Apache 主配置文件中配置 HSTS,核心是通过 `Header` 指令添加 `Strict-Transport-Security` 响应头,但**必须确保该指令只作用于 HTTPS 虚拟主机**,否则浏览器会忽略它(HTTP 响应中发送 HSTS 头无效且可能被警告)。 以下为关键操作步骤和注意事项:
确认已启用必要模块
确保 apache 已加载 headers 和 ssl 模块:
- a2enmod headers ssl(Debian/Ubuntu)
- 或检查 httpd.conf 中存在:
LoadModule headers_module modules/mod_headers.so
LoadModule ssl_module modules/mod_ssl.so
在 HTTPS VirtualHost 块内添加 Header 指令
不要写在全局主配置顶层,而要嵌入到启用 SSL 的 <VirtualHost *:443> 块中:
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
- max-age=31536000 表示一年有效期(单位:秒),首次上线建议先用 max-age=300(5 分钟)验证
- includeSubDomains 需谨慎——所有子域名(如 api.example.com、blog.example.com)都必须能稳定提供 HTTPS,否则将导致它们完全无法访问
- preload 是可选标记,表示你有意提交至浏览器预加载列表;启用前请确认已满足 preload 要求(如全站 HTTPS、含 includeSubDomains、max-age ≥ 31536000 等)
避免常见错误
- 不在 HTTP(*:80)的 VirtualHost 中设置 HSTS —— 浏览器直接丢弃
- 不遗漏 always 参数,否则重定向响应(如 301)可能不携带该头
- 若使用反向代理(如 Nginx 前置),HSTS 应由终端 Web 服务器(Apache)设置,而非代理层重复设置
- 配置后务必用 curl -I https://yoursite.com 检查响应头是否出现 strict-transport-security

















