You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx子域名反向代理配置失效:所有请求均指向默认站点

解决Nginx反向代理子域名指向错误的问题

一、修正证书路径一致性

你的配置中第一个server块的ssl_certificate_key路径为/etc/nginx/ssl/domain.com/privkey.pem,而api、admin子域名的server块路径是/etc/nginx/ssl/live/domain.com/privkey.pem,两者路径不一致。若第一个server的证书路径不存在,Nginx启动时会加载失败,仅能正常运行第一个server块,导致所有请求都导向React应用。

修正后的第一个server块证书配置:

ssl_certificate /etc/nginx/ssl/live/domain.com/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/live/domain.com/privkey.pem;

二、重新加载Nginx配置

修改配置后必须让Nginx加载最新配置才能生效:

  • 单独运行Nginx容器时执行:
    docker exec <nginx容器名称> nginx -s reload
    
  • 使用docker-compose时执行:
    docker-compose exec nginx nginx -s reload
    

若reload失败,查看Nginx日志定位错误:

docker logs <nginx容器名称>

三、验证子域名DNS解析

确保admin.domain.com和api.domain.com已正确解析到Nginx所在服务器的公网IP,可通过以下命令测试:

nslookup admin.domain.com
nslookup api.domain.com

若解析结果错误,需在域名服务商后台添加对应子域名的A/CNAME记录,指向服务器IP。

四、清除缓存并测试请求头

浏览器缓存可能导致旧响应残留,使用Ctrl+Shift+R强制刷新或无痕模式访问。也可通过curl命令直接验证请求:

curl -v https://admin.domain.com
curl -v https://api.domain.com

查看输出中的Host头是否正确,以及返回内容是否来自目标容器。

五、确认Docker网络连通性

确保Nginx容器与container1、container2处于同一Docker网络:

  • 手动添加容器到同一网络:
    docker network connect <共用网络名称> nginx容器
    docker network connect <共用网络名称> container1
    docker network connect <共用网络名称> container2
    
  • 测试Nginx容器能否解析目标容器:
    docker exec nginx容器 ping container1
    docker exec nginx容器 ping container2
    

六、检查SSL证书覆盖范围

若你的SSL证书是单域名证书(仅包含domain.com),访问子域名会触发SSL错误,部分浏览器会自动跳转到主域名。可通过以下命令查看证书包含的域名:

openssl x509 -in /etc/nginx/ssl/live/domain.com/fullchain.pem -text -noout | grep DNS

若输出中无DNS:admin.domain.com和DNS:api.domain.com,需重新申请通配符证书(*.domain.com)或包含所有子域名的SAN证书。

内容的提问来源于stack exchange,提问作者Felipe Calixto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 16:59:51