新增Nginx-PHP站点后自动重定向至其他站点的排查请求
嘿,我仔细看了你的Nginx配置和目录结构,找到导致y2b.casvot.com自动跳转到主站的几个关键问题了,咱们一步步来解决:
问题根源分析
HSTS强制跳转的连锁影响
你的主站www.casvot.com配置了HTTPS,而Certbot生成的SSL配置(options-ssl-nginx.conf)里大概率包含了HSTS(HTTP严格传输安全)头,而且可能带了includeSubDomains参数。这会让浏览器强制要求所有casvot.com的子域名(包括y2b.casvot.com)使用HTTPS,但你没给y2b配置HTTPS的server块,导致HTTPS请求落到主站的443端口server块,进而触发跳转或者返回主站内容。y2b站点的Root路径配置错误
从你的/home目录结构来看,y2b的站点文件应该在/home/y2b目录下,但你配置的root /home;会让Nginx去/home根目录找文件,路径不匹配也可能导致请求处理异常。
分步解决方案
1. 先修正y2b站点的Root路径
找到y2b.casvot.com对应的server块,把root路径改成/home/y2b,两处都要改:
server{ listen 80; root /home/y2b; # 修正这里 index index.php index.html index.htm ; server_name y2b.casvot.com; location / { try_files $uri $uri/ =404; } location ~ \.php$ { root /home/y2b; # 这里也要同步修正 include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } }
2. 解决HSTS导致的强制跳转
有两种方式可选,按需选择:
临时方案(测试用):清除浏览器HSTS缓存
- Chrome:地址栏输入
chrome://net-internals/#hsts,在「Delete domain security policies」输入casvot.com,点击Delete。 - Firefox:地址栏输入
about:config,搜索network.stricttransportsecurity.preloadlist设为false,或者直接清除该站点的缓存数据。
- Chrome:地址栏输入
长期方案(推荐):给y2b配置HTTPS
用Certbot一键生成证书和配置:sudo certbot --nginx -d y2b.casvot.comCertbot会自动帮你生成对应的HTTPS server块,后续HSTS就不会再影响这个子域名了。
3. 验证配置并重启Nginx
先检查配置有没有语法错误:
sudo nginx -t
如果输出test is successful,就重启Nginx生效:
sudo systemctl restart nginx
最后提醒一下:如果之前浏览器缓存了旧的重定向规则,记得清一下浏览器缓存再测试哦~
内容的提问来源于stack exchange,提问作者GFLEE

