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

Nginx Reverse Proxy with Multiple Backend Domains

我有 2 个服务器 :-

服务器 1:NGINX 反向代理。

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

所以基本上,所有用户都将访问服务器 1,服务器 1 将 proxy_pass 流量发送到服务器 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 中,在 virtual.conf 的 NGINX 中,我有以下配置:

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;
        }
    }

但是,每当我转到 http://example.com or http://server.com(通过作为反向代理的服务器 1 定向)时,它会显示服务器 2 的默认 NGINX 页面。我不确定我做错了什么。这种类型的设置也是正确的做事方式吗?

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

你可以通过在proxy_pass:
之前添加指令来解决这样的问题 proxy_set_header Host server.com