最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Nginx 如何排查 Nginx 开启 HSTS 策略后测试完成后无法安全退出的故障
时间:2026-08-16 12:14:48 编辑:袖梨 来源:一聚教程网
答案是浏览器HSTS缓存导致无法访问HTTP。浏览器强制HTTPS且不发送HTTP请求,与Nginx运行状态无关;需通过chrome://net-internals/#hsts查询并删除策略,同时服务端将HSTS max-age设为0并重载配置。
这个问题本质不是 Nginx “卡住”或“无法退出”,而是浏览器记住了 HSTS 策略,后续所有 HTTP 请求被主动拦截、根本没发出去——所以你感觉“切不回 HTTP”,其实和 Nginx 当前是否运行、是否重启完全无关。
一、确认浏览器是否已缓存该域名的 HSTS 策略
打开 Chrome 或 Edge,地址栏输入:
chrome://net-internals/#hsts
在下方 “Query domain” 输入你的测试域名(如 test.example.com),点击 Query。
若显示 Found,说明浏览器本地已强制启用 HTTPS;若为 Not found,问题不在 HSTS 缓存,需另查。
二、检查服务端是否还在发送 HSTS 响应头
即使你改了配置,只要 Nginx(或 Ingress)仍在返回 Strict-Transport-Security 头,浏览器就会持续刷新缓存。验证方式:
- 执行
curl -I https://test.example.com,查看响应头中是否含Strict-Transport-Security - 若使用裸 Nginx:检查
server { listen 443 ssl; ... }块中是否有add_header Strict-Transport-Security ... - 若使用 Kubernetes Ingress:检查 Ingress 注解(如
nginx.ingress.kubernetes.io/hsts: "true")或 Ingress Controller 的全局 HSTS 开关
三、安全退出 HSTS 的两个必要动作
仅停掉响应头还不够,必须同步清理客户端残留策略:
-
服务端操作:将 HSTS 的
max-age改为0,例如:add_header Strict-Transport-Security "max-age=0; includeSubDomains" always;然后重载 Nginx(
nginx -s reload)或更新 Ingress 配置 -
客户端操作:回到
chrome://net-internals/#hsts,在 “Delete domain security policies” 区域输入域名,点 Delete -
快速验证:用无痕窗口访问
http://test.example.com,若能正常加载,说明已生效
四、特别注意预加载带来的不可逆风险
如果你曾将域名提交至 hstspreload.org 并成功加入浏览器预加载列表,那么即使清空本地缓存、关闭服务端头,浏览器仍会永久强制 HTTPS——这种状态无法通过常规手段“退出”,只能等待最新移除(流程长、门槛高)。上线前务必避免对测试域名启用 preload。
相关文章
- 电脑微信传输助手网页版-微信传输助手网页版登录入口 08-16
- 华为路由器复位后怎么重新设置(华为路由器复位后重新设置方法) 08-16
- 0和1是什么梗-中间的0.5又是什么意思 08-16
- iphone17promax重量是多少 08-16
- 巴兔手游盒子app如何交易游戏账号 08-16
- 网易云游戏网页版登录入口详情 08-16