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

Nginx双虚拟主机配置异常:两域名均指向同一后端服务

解决Nginx双虚拟主机均指向同一后端的问题

可能的原因及修复步骤

1. 验证本地域名解析配置

如果是本地测试场景,必须确保两个域名都正确映射到本机IP(通常为127.0.0.1):

  • 编辑本地hosts文件:
    • Windows路径:C:\Windows\System32\drivers\etc\hosts
    • Linux/macOS路径:/etc/hosts
  • 添加以下两行配置:
    127.0.0.1  my.first.domain
    127.0.0.1  my.second.domain
    
  • 保存后执行ping my.first.domain和ping my.second.domain,确认两者均指向127.0.0.1。

2. 确保Nginx配置生效

修改配置文件后,必须重载或重启Nginx才能让新配置生效:

  • 重载配置(不中断服务,推荐使用):
    nginx -s reload
    
  • 重启Nginx:
    nginx -s stop && nginx
    
  • 提前用nginx -t检查配置文件语法,避免因语法错误导致配置未加载。

3. 清除浏览器缓存或使用无痕模式

浏览器可能缓存了旧的请求跳转记录,导致配置更新后依然指向原后端:

  • 清除当前浏览器的缓存与Cookie
  • 或直接使用无痕/隐私窗口访问两个域名测试

4. 检查Nginx的server匹配逻辑

当多个server块监听同一端口时,Nginx的匹配优先级为:

  1. 匹配带有default_server标记的server块
  2. 匹配请求Host头与server_name完全一致的server块
  3. 若以上都不匹配,则使用第一个监听该端口的server块

如果域名解析失败导致请求Host头未正确传递,Nginx会默认走第一个server块(即指向3000端口的配置),进而出现两个域名均跳转同一后端的问题。可以给其中一个server块添加default_server明确默认行为,或确保域名解析和Host头传递正常。

额外验证方法

用curl命令发送指定Host头的请求,直接测试Nginx转发逻辑:

curl -H "Host: my.first.domain" http://localhost
curl -H "Host: my.second.domain" http://localhost

查看返回内容是否分别对应3000和4000端口的应用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 12:33:21