这里是我的情况:我将有一个运行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