這裏是我的情況:我將有一個運行nginx的前端服務器,以及運行帶有不同rails應用程序的apache +乘客的多個後端服務器。我不想做任何負載平衡。我需要做的是設置nginx根據url來代理連接到特定的服務器。 IE,client.domain.com應該指向xxx100:80,client2.domain.com應該指向xxx101:80等等。nginx反向代理多個後端
我對nginx不是很熟悉,但是我找不到特定的配置在線適合我的情況。
謝謝。
這裏是我的情況:我將有一個運行nginx的前端服務器,以及運行帶有不同rails應用程序的apache +乘客的多個後端服務器。我不想做任何負載平衡。我需要做的是設置nginx根據url來代理連接到特定的服務器。 IE,client.domain.com應該指向xxx100:80,client2.domain.com應該指向xxx101:80等等。nginx反向代理多個後端
我對nginx不是很熟悉,但是我找不到特定的配置在線適合我的情況。
謝謝。
可以匹配不同的URL與服務器塊 那麼每個服務器塊內,你就會有反向代理服務器設置
server {
server_name client.domain.com;
# app1 reverse proxy follow
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://x.x.x.100:80;
}
server {
server_name client2.domain.com;
# app2 reverse proxy settings follow
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://x.x.x.100:80;
}
顯然進一步增加nginx的設置(如error_page
,access_log
,...)作爲在每個server
-block
完美。謝謝! –
是否可以根據路徑配置每個源服務器進行代理,而不僅僅是傳入主機/權限?即'/ system1 /'被代理到'http:// x.x.x.100 /',而'/ system2 /'被代理到'http:// x.x.x.120 /'? –
當然,在這種情況下,你只需將代理指令放在適當的位置塊,而不是在主服務器塊 – cobaco
@ mohamnag的評論是正確的。 proxy_pass
只允許一個location
看到裏面:
http://wiki.nginx.org/HttpProxyModule#proxy_pass
https://www.nginx.com/resources/admin-guide/reverse-proxy/
因此正確的配置將是
server {
server_name client.domain.com;
location/{
# app1 reverse proxy follow
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://x.x.x.100:80;
}
}
server {
server_name client2.domain.com;
location/{
# app2 reverse proxy settings follow
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://x.x.x.100:80;
}
}
哎是你能夠找到一個解決方案?在我的情況下,我希望同一客戶端訪問多個這些後端服務器,你能幫我找到一個配置嗎? – Vinodborole