nginx反向代理到多个后端服务器,具体取决于URL

时间:2018-06-27 08:11:31

标签: nginx webserver reverse-proxy

我有1个前端Nginx服务器和2个后端Nginx服务器。

前端服务器确实将代理传递给后端服务器。以前只有1个后端服务器,所以我所有的查询都转到单个后端服务器,但是随着流量的增加,我又增加了1个用于搜索查询的后端服务器。

但是我不能只进行搜索查询去第二台后端服务器。

我当前的配置是这样的。

server {
listen 80;
server_name example.com;

    location /search/ {
        proxy_pass https://search.example.com/;
        proxy_set_header Host search.example.com;

        #set custom headers for upstream server
        proxy_set_header Accept-Encoding "";
        proxy_set_header CF-Connecting-IP "";
        proxy_ssl_verify off;
        proxy_ssl_server_name on;

        proxy_set_header    X-Real-IP   $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location / {
        proxy_pass https://box1.example.com/;
        proxy_set_header Host box1.example.com;

        #set custom headers for upstream server
        proxy_set_header Accept-Encoding "";
        proxy_set_header CF-Connecting-IP "";
        proxy_ssl_verify off;
        proxy_ssl_server_name on;

        proxy_set_header    X-Real-IP   $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

我想做的是

如果URL是

https://example.com/search/test/1/8/0 

然后反向代理到search.example.com

将其他所有请求反向代理到box1.example.com

我当前的配置为404 not found带来了search queries错误。

我该如何解决?

0 个答案:

没有答案