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

Nginx反向代理配置问题:多域名无法指向对应后端服务器

解决Nginx反向代理多域名匹配错误问题

你遇到的核心问题是server_name配置格式错误,导致Nginx无法正确区分两个域名的请求,最终所有访问都落到了默认站点。下面是具体的修正方案和原因分析:

错误根源

你的两个自定义server块中,server_name字段错误地包含了http://前缀:

server_name http://ineedbabypics.com www.ineedbabypics.com;

Nginx的server_name是用来匹配HTTP请求头里的Host字段,而Host字段只会包含纯域名(比如ineedbabypics.com或www.ineedbabypics.com),不会携带http://协议前缀。这就导致Nginx无法匹配到这两个自定义server块,所有请求都被默认的server_name _的server块处理,最终出现所有域名都跳转至同一站点的问题。

修正后的配置

1. 修正ineedbabypics.conf

server {
    listen 80;
    listen [::]:80;
    server_name ineedbabypics.com www.ineedbabypics.com;
    set $upstream 192.168.1.96;

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

2. 修正ineedtoclose.conf

server {
    listen 80;
    listen [::]:80;
    server_name ineedtoclose.com www.ineedtoclose.com;
    set $upstream 192.168.1.83;

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

3. 优化默认server块(可选但推荐)

为了避免默认server块干扰,你可以修改它的行为,比如直接返回404:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _;
    return 404;
}

验证步骤

  1. 保存所有配置文件后,执行nginx -t检查配置是否合法
  2. 如果检查通过,执行nginx -s reload重新加载配置
  3. 分别访问两个域名,验证是否正确指向对应的内网IP

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:24:17