Nginx访问dev.redacted.it跳转至错误站点问题求助
Nginx站点跳转异常排查与解决
问题场景
使用Nginx配置三个站点:
- 静态站点:
dev.redacted.it(监听80端口,根目录/var/www/annunci) - 静态站点:
redacted.it(监听80端口,根目录/var/www/html) - SpringBoot应用代理站点:
tickets.redacted.it(监听443端口,代理至127.0.0.1:8080)
所有配置已软链接至sites-enabled目录,重载配置无报错,nginx -T检查配置语法正常。但访问http://dev.redacted.it时自动跳转到https://tickets.redacted.it,http://redacted.it访问正常。已排查目录权限(755 | root:root)、更换端口,问题仍存在。
排查与解决步骤
1. 清除缓存与验证DNS解析
- 清除浏览器缓存(快捷键
Ctrl+Shift+Del),或使用隐私窗口访问http://dev.redacted.it,排除旧跳转记录干扰。 - 本地执行
nslookup dev.redacted.it,确认解析IP为目标服务器IP,排除DNS劫持或解析错误。
2. 检查默认服务器匹配规则
Nginx会将第一个加载的listen 80的server块作为默认服务器(未显式指定default_server时):
- 执行
nginx -T | grep -A 10 "listen 80",查看所有监听80端口的server块加载顺序。若存在未清理的ticket站点80端口配置,会导致匹配错误。 - 为
dev.redacted.it的server块强制指定默认服务器,避免被其他规则覆盖:
server { listen 80 default_server; server_name "dev.redacted.it"; root /var/www/annunci; location / { autoindex on; } }
重载配置:sudo nginx -s reload后重新测试。
3. 排查后端应用跳转逻辑
若请求被误代理至SpringBoot应用,会触发后端跳转:
- 查看Nginx访问日志:
tail -f /var/log/nginx/access.log,访问dev.redacted.it时,观察请求是否被转发至8080端口。 - 直接访问
http://127.0.0.1:8080,检查是否自动跳转到tickets.redacted.it。若是,需检查SpringBoot配置(如application.properties中的server.redirect-to-https、自定义跳转过滤器)。
4. 检查全局重定向规则
- 查看
nginx.conf的http块,确认无全局return或rewrite规则误匹配dev.redacted.it。 - 检查
sites-enabled目录下的其他配置文件(如默认的default文件),排除隐藏的跳转规则。
5. 验证HSTS与SSL证书影响
若浏览器曾访问过dev.redacted.it的HTTPS版本,可能触发HSTS强制跳转:
- Chrome浏览器中访问
chrome://net-internals/#hsts,查询并删除dev.redacted.it的HSTS记录。 - 检查
tickets.redacted.it的SSL证书SAN字段,确认未包含dev.redacted.it域名,避免浏览器混淆跳转。
内容的提问来源于stack exchange,提问作者user21318406
相关产品推荐
相关产品推荐

