Nginx多域名代理异常:cards.mywebsite跳转至qbit.mywebsite求助
问题修复方案
问题根源
你的Nginx配置中,qbit.mywebsite的HTTPS server块未在listen指令后添加ssl参数,导致Nginx将该server作为默认HTTPS服务器(配置文件中第一个出现的443端口server块)。所有HTTPS请求(包括cards.mywebsite)都会被匹配到这个默认server,从而返回qbit的证书并代理到qbit后端,这就是你看到证书错误、显示qbit内容的原因。
修复步骤
修正qbit的HTTPS server配置
在listen 443后添加ssl参数,让Nginx正确识别这是HTTPS虚拟主机:server { listen 443 ssl; # 添加ssl参数 server_name qbit.mywebsite; ssl_certificate C:\sslqbit\certificate.crt; ssl_certificate_key C:\sslqbit\private.key; location / { proxy_pass http://localhost:8080; proxy_set_header X-Forwarded-Host $host:$server_port; } }完善cards的反向代理配置
为WordPress补充必要的代理头,确保WordPress能正确识别域名和请求协议:server { listen 443 ssl; server_name cards.mywebsite; ssl_certificate C:\sslcards\certificate.crt; ssl_certificate_key C:\sslcards\private.key; location / { proxy_pass http://localhost:32769; # 补充代理头 proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }验证Docker端口映射
确认localhost:32769确实是WordPress容器的对外映射端口,可通过docker ps命令查看容器的PORTS列信息。重启Nginx生效
在Windows命令行执行:nginx -s reload若配置有误,Nginx会输出错误提示,根据提示修正即可。
额外说明
- 添加
ssl参数后,Nginx会基于SNI(服务器名称指示)正确匹配不同域名的HTTPS请求,确保cards.mywebsite请求路由到对应的server块。 - 补充的代理头能让WordPress获取到正确的请求域名和协议,避免出现内容路径错误或强制跳转问题(这也是本地访问正常、反向代理后异常的常见原因)。
内容的提问来源于stack exchange,提问作者Eli Gibbs
相关产品推荐
相关产品推荐

