2015-10-10 36 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