2015-10-10 34 views
0

我有一个2服务器: -Nginx反向代理与多个后端域

服务器1:NGINX逆向代理服务器。

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

因此,基本上,所有用户都将前来服务器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,在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; 
     } 
    } 

但是每当我去http://example.comhttp://server.com(通过服务器1充当反向代理执导),它显示了服务器2的默认NGINX页。我不确定我做错了什么。这种设置也是一种正确的做事方式吗?

回答

0

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

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

+0

非常感谢ZYWG。它现在似乎在工作。所以为此,我必须为server.com和example.com添加/ etc/host条目,指向后端服务器IP。那么这是做到这一点的正确方法吗?我有5-6个域,并且对于其中的每一个域,我都必须在/ etc/hosts中添加IP。 – zealvora

+0

您不需要在/ etc/hosts中添加任何内容。 nginx.conf中的server_name只是一个字符串,用于匹配请求中的主机。你只是proxy_set_header主机server.name; proxy_pass http:// 127.0.0.1;然后nginx会解析主机。 – zywj

+0

啊。这似乎更好的方式。非常感谢你的帮助:)干杯 – zealvora