Nginx配置异常:子域名app.zerp.io被重定向至主域名zerp.io
问题分析与解决建议
1. 修复Nginx配置拼写错误
你的配置文件中存在明显拼写错误:proxy_ser_header host $host; 应为 proxy_set_header Host $host;。这个错误会导致后端服务无法正确识别请求的Host头,可能触发错误的重定向逻辑。
修改后执行以下命令验证配置并重启Nginx:
sudo nginx -t && sudo systemctl reload nginx
2. 排查主域名HSTS配置
如果主域名zerp.io的Nginx配置中设置了Strict-Transport-Security(HSTS)头且包含includeSubDomains参数,浏览器会强制所有子域名(包括app.zerp.io)使用HTTPS。即使子域名没有SSL证书,浏览器也会自动发起重定向,最终可能被路由到主域名的HTTPS地址。
检查zerp.io的Nginx配置,查看是否存在类似配置:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
若存在includeSubDomains,可暂时移除该参数,直到app.zerp.io配置好SSL证书(HSTS是浏览器端强制规则,用户浏览器需要一段时间才能失效,可通过清除浏览器HSTS缓存加速测试)。
3. 检查Nginx全局与其他站点配置
- 查看
/etc/nginx/nginx.conf全局配置,确认无默认重定向规则 - 检查
/etc/nginx/sites-enabled/目录,确保仅存在app.zerp.io和zerp.io的配置链接,无残留默认配置 - 执行
nginx -T查看所有生效配置,搜索是否存在针对app.zerp.io的隐藏重定向规则
4. 验证React应用内部重定向逻辑
- 检查
package.json中的homepage字段,确认未错误设置为zerp.io - 查看React路由配置,确认无全局重定向到主域名的规则
- 若使用开发服务器(
npm start),检查是否设置了HOST或PUBLIC_URL环境变量指向主域名
5. 确认DNS解析与缓存
- 在本地执行
nslookup app.zerp.io或dig app.zerp.io,验证返回IP为目标服务器公网IP - 更换本地DNS服务器(如8.8.8.8或1.1.1.1)测试是否仍存在重定向
- 检查域名服务商后台,确认无默认子域名重定向到主域名的规则
内容的提问来源于stack exchange,提问作者Hassaan Elahi
相关产品推荐
相关产品推荐

