这里是我的情况:我将有一个前端服务器上运行Nginx等多个后端服务器上运行的Apache +乘客不同的Rails应用程序。 我不想做任何负载均衡。 我需要做的是建立以nginx的代理服务器连接到基于该URL特定的服务器。 IE,client.domain.com应指向xxx100:80,client2.domain.com应指向xxx101:80等
我不是那么熟悉nginx的,但我无法找到适合我的情况具体配置网上。
谢谢。
这里是我的情况:我将有一个前端服务器上运行Nginx等多个后端服务器上运行的Apache +乘客不同的Rails应用程序。 我不想做任何负载均衡。 我需要做的是建立以nginx的代理服务器连接到基于该URL特定的服务器。 IE,client.domain.com应指向xxx100:80,client2.domain.com应指向xxx101:80等
我不是那么熟悉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
-块
@ 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.101:80;
}
}