nginx的反向代理多个后端(nginx reverse proxy multiple backen

2019-06-18 21:00发布

这里是我的情况:我将有一个前端服务器上运行Nginx等多个后端服务器上运行的Apache +乘客不同的Rails应用程序。 我不想做任何负载均衡。 我需要做的是建立以nginx的代理服务器连接到基于该URL特定的服务器。 IE,client.domain.com应指向xxx100:80,client2.domain.com应指向xxx101:80等

我不是那么熟悉nginx的,但我无法找到适合我的情况具体配置网上。

谢谢。

Answer 1:

可以匹配不同的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_pageaccess_log根据需要在每个...) server -块



Answer 2:

@ 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;
    }
}


文章来源: nginx reverse proxy multiple backends
标签: nginx