具有多个后端域的Nginx反向代理

具有多个后端域的Nginx反向代理,nginx,reverse-proxy,Nginx,Reverse Proxy,我有两台服务器:- 服务器1:NGINX反向代理 服务器2:NGINX有5-6个不同域的网站 因此,基本上,所有用户都会来到服务器1,服务器1会将流量传递给服务器2,并返回响应。服务器1还将进行缓存、WAF等 以下是我对服务器1的配置:- server { listen 80; server_name example.com www.example.com; location ~* { proxy_pass http://mysite:80; } } server {

我有两台服务器:-

服务器1:NGINX反向代理

服务器2:NGINX有5-6个不同域的网站

因此,基本上,所有用户都会来到服务器1,服务器1会将流量传递给服务器2,并返回响应。服务器1还将进行缓存、WAF等

以下是我对服务器1的配置:-

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

  location ~* {
     proxy_pass http://mysite:80;
}
}

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

  location ~* {
     proxy_pass http://mysite:80;
}
}
在我的服务器2中,在NGINX的virtual.conf中,我有以下配置:

index index.php index.html;
server {
    listen   80;
    server_name  example.com www.example.com;

    location / {
        root   /var/www/websites/example/;
        include location-php;
    }
}

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

        location / {
            root   /var/www/websites/server/;
            include location-php;
        }
    }
但是,每当我转到或通过充当反向代理的服务器1进行指示时,它都会显示服务器2的默认NGINX页面。我不确定我做错了什么。这种类型的设置也是正确的做法吗?

这是您的主机问题。 因为您的上游名称是mysite,所以上游请求中的主机名也是mysqsite。 因此,主机与后端服务器不匹配

您可以通过在proxy_pass之前添加指令来解决如下问题:
proxy_set_header Host server.com

非常感谢ZYWG。它现在似乎起作用了。为此,我必须为server.com和example.com添加指向后端服务器IP的/etc/host条目。那么这是正确的方法吗?我有5-6个域,每个域都必须在/etc/hosts中添加IP。您不需要在/etc/hosts中添加任何内容。nginx.conf中的服务器名称只是一个字符串,用于匹配请求中的主机。您只需代理\u set\u头Host server.name;proxy_pass http://127.0.0.1;然后nginx将解析host.Aah。这样似乎更好。非常感谢你的帮助:干杯