导读:本期聚焦于小伙伴创作的《宝塔面板怎么开启HSTS机制让网站更安全?Nginx严格传输安全头怎么配》,敬请观看详情。把站点从HTTP跳到HTTPS只是第一步,浏览器仍可能在首次访问时被劫持到明文链接。HSTS通过响应头告知客户端强制使用加密连接,彻底堵住SSL剥离漏洞。在宝塔面板里不需要手动改系统文件,进入网站设置的配置文件页,于Nginx的server块内添加add_header指令即可下发Strict-Transport-Security。需要注意max-age时间设定、includeSubDomains与preload参数的取舍,以及开启前必须保证全站HTTPS可用,否则会造成访问中断。掌握这些细节,才能既提升安全性又不影响业务。

网站接入HTTPS之后,很多站长以为流量就安全了,其实在用户第一次输入域名、还没跳转HTTPS的那一瞬间,攻击者依然可以用SSL剥离手段把请求拦到HTTP上。HSTS(HTTP Strict Transport Security)就是专门解决这个问题的机制:它让浏览器记住某个站点必须走HTTPS,连第一次访问都不允许用明文。

宝塔面板怎么开启HSTS机制让网站更安全?Nginx严格传输安全头怎么配

一、HSTS的工作原理与核心价值

HSTS的本质是一个HTTP响应头:Strict-Transport-Security。当浏览器收到这个头,就会在本地记录该域名在指定时长内只能使用HTTPS访问。即便用户手动把地址栏里的s删掉,或者点击了HTTP的链接,浏览器也会在内部先做307跳转再发请求,从而挡住中间人攻击。

这个机制特别适合已经全站HTTPS化的业务。没有HSTS时,从HTTP到HTTPS的跳转本身就可能被篡改;有了HSTS,浏览器根本不会发出HTTP请求。它还支持includeSubDomains参数,让所有子域名一并受保护,以及preload参数,允许把域名提交进浏览器内置列表,连首次访问都免遭降级。

二、宝塔面板中Nginx的配置文件位置

在宝塔面板里,我们不需要去SSH里找/etc/nginx/nginx.conf慢慢改,面板已经把每个站点的配置独立出来了。登录宝塔后台,打开左侧“网站”,点击目标站点右侧的“设置”,再选择“配置文件”选项卡,就能看到该站点对应的Nginx server块。

这个配置文件通常长这样:里面已经有listen 443 ssl、证书路径、根目录等基础内容。我们要做的就是在server块内部,找一个合适的位置(一般在ssl相关配置之后、location之前)加入HSTS响应头。宝塔不会覆盖你手动加的内容,只要语法正确,保存后重载Nginx即可生效。

三、在Nginx中添加HSTS响应头

最基础的写法是指定max-age,也就是浏览器记住HTTPS的秒数。下面是一段可直接粘贴进配置文件的示例:

server {
    listen 443 ssl;
    server_name example.ipipp.com;
    ssl_certificate /www/server/panel/vhost/cert/example/fullchain.pem;
    ssl_certificate_key /www/server/panel/vhost/cert/example/privkey.pem;

    # 开启HSTS,有效期一年,包含子域名并允许预加载
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

    root /www/wwwroot/example;
    index index.html;
}

注意上面的always参数很关键。Nginx的add_header默认只在响应码为200、201、204、206、301、302、303、304、307、308时才添加,加上always可以保证错误页也带上HSTS头,避免异常状态下策略失效。

如果你暂时只想在主域名生效、不想波及子域名,可以把includeSubDomains去掉;如果还没打算提交到预加载列表,也先别写preload。错误配置preload而又没真去提交,并不会出事,但写了却没全站HTTPS支撑,反而会导致子域无法访问。

四、开启前的必要检查与常见坑

在宝塔里点保存并重载Nginx之前,必须确认一件事:这个域名及其所有用到的子域名都已经能正常通过HTTPS访问。因为一旦浏览器收到HSTS头,在max-age时间内它拒绝任何HTTP连接。假如你的后台、接口或者静态资源还在用HTTP,用户就会直接看到连接失败。

另一个常见坑是只在80端口的server块里加HSTS。实际上HTTP响应里带这个头没有意义,甚至可能被攻击利用。正确做法是在443的server块加,同时把80的请求用return 301跳到https,示例如下:

server {
    listen 80;
    server_name example.ipipp.com;
    return 301 https://$host$request_uri;
}

这样用户即使访问HTTP,也会被重定向,且真正的HSTS策略由HTTPS响应下发。等配置稳定跑一段时间、确认无HTTP依赖后,再考虑把域名提交到hstspreload列表,获得更强保护。

五、验证HSTS是否生效

配置完在宝塔重载Nginx,可以用浏览器开发者工具看响应头。打开Network面板,访问一次站点,点开主文档请求,在Response Headers里应该能看到strict-transport-security: max-age=31536000; includeSubDomains; preload这一行。

也可以用命令行快速确认,例如执行:curl -I https://example.ipipp.com,在输出的头部里查找Strict-Transport-Security字段。看到它就意味着浏览器下次访问会强制走HTTPS,你的站点已经补上了传输层安全里最容易漏掉的那块短板。

HSTSNginx宝塔面板修改时间:2026-08-01 08:09:35

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。