这是我的情况:我将有一台运行 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 {
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.101: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;
}
}