hsts导致浏览器主动拦截http请求,nginx未收到请求故无重定向;可通过chrome://net-internals/#hsts查询、删除策略,或用无痕窗口验证,同时检查nginx是否仍发送strict-transport-security头。

这不是在测试“Nginx是否做了降级重定向”,而是验证浏览器是否因HSTS策略主动拦截了HTTP访问——Nginx根本没收到请求,自然不会执行任何重定向逻辑。
确认HSTS是否已在本地生效
打开 Chrome 或 Edge,地址栏输入:
chrome://net-internals/#hsts
在下方“Query domain”框中输入你的测试域名(如 test.example.com),点击 Query。
若返回 Found,说明浏览器已强制 HTTPS;此时哪怕你把 Nginx 的 443 端口关掉、80 端口开着,浏览器也不会发 HTTP 请求过去,地址栏会卡在 http:// 并直接报错(如 ERR_CONNECTION_REFUSED 或 ERR_SSL_PROTOCOL_ERROR)。
用无痕窗口快速绕过缓存验证
无痕模式不读取已有的 HSTS 记录,是最轻量的验证方式:
• 启动无痕窗口
• 直接访问 http://test.example.com
• 若能正常加载(或跳转到 HTTPS),说明问题确由 HSTS 导致;若仍失败,则需排查其他原因(如 DNS、防火墙、Nginx 80 端口未监听等)
检查Nginx是否仍在发送HSTS头
即使你改了配置,旧策略可能还在响应里:
运行命令:curl -I https://test.example.com
查看响应头中是否存在:Strict-Transport-Security: max-age=31536000; includeSubDomains
如果存在,说明 Nginx 还在发 HSTS,需检查配置中是否遗漏了注释或删除 add_header Strict-Transport-Security 行,并执行 nginx -t && systemctl reload nginx
清除HSTS记录后重新验证
仅改服务端不够,客户端缓存必须手动清理:
• 回到 chrome://net-internals/#hsts
• 在“Delete domain security policies”下方输入相同域名
• 点击 Delete
• 再次 Query,确认返回 Not found
• 关闭所有普通窗口,用新无痕窗口重试 HTTP 访问











