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

Nginx双域名双端口配置异常:两域名均显示同一站点内容

问题解决:Nginx多站点反向代理配置异常

问题分析

你的配置存在两个关键问题:

  • 同一个server块中同时使用root(静态文件服务)和proxy_pass(反向代理),导致Nginx请求处理逻辑混乱,第一个站点的规则未被正确触发。
  • 未将proxy_pass放入location块内,不符合反向代理的标准配置规范,引发匹配优先级问题。

修正后的配置

server {
    listen 80;
    server_name www.domain1.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        # 传递必要请求头,确保后端服务正确识别请求源
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

server {
    listen 80;
    server_name www.domain2.com domain2.com;

    location / {
        proxy_pass http://127.0.0.1:3004;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

操作步骤

  1. 验证配置语法:执行命令检查配置合法性
    nginx -t
    
  2. 重载Nginx配置:让新配置生效
    # Systemd系统
    systemctl reload nginx
    # SysVinit系统
    service nginx reload
    
  3. 验证域名解析:确保www.domain1.com和www.domain2.com/domain2.com正确指向服务器IP(测试环境可检查本地hosts文件)
  4. 清除浏览器缓存:避免旧缓存干扰测试结果

关键说明

  • 移除root指令:使用反向代理时,root用于静态文件服务,两者共存会干扰请求路由逻辑,无需保留。
  • 标准化反向代理配置:将proxy_pass放入location /块内,确保所有请求按规则转发到对应后端。
  • 添加请求头:后端服务依赖这些头部获取原始请求的域名、IP等信息,避免业务逻辑异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 14:40:29