nginx根据uri在上游选择合适的服务器

时间:2018-07-30 19:47:37

标签: nginx nginx-location nginx-reverse-proxy

我有在4个不同端口上侦听的应用程序,我想根据uri选择合适的服务器。

这是不同的端口

localhost:9090
localhost:9091
localhost:9092
localhost:9093

localhost:9090定义了1条路由:/ home

localhost:9091定义了2条路由:/ save和/ update

localhost:9092定义了2条路由:/ list和/ delete

localhost:9093定义了3条路由:/ closed,/ pending和/ active

我使用nginx代理使这些网址无法从外部访问,就像这样:

server_tokens off;

upstream backend{
    server localhost:9090;
    server localhost:9091;
    server localhost:9092;
    server localhost:9093;
}

server {
    listen       8887;
    server_name  localhost;

    location / {
        proxy_pass  http://backend;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
    }
}

server {
    listen       8888;
    server_name  localhost;

    location / {
        proxy_pass  http://backend;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
    }
}

如果用户在浏览器中键入 localhost:8887 / home ,我希望选择 localhost:9090

如果他键入 localhost:8888 / save或localhost:8888 / update ,我希望选择 localhost:9091

如果他键入 localhost:8888 / list或localhost:8888 / delete ,我希望选择 localhost:9092

我制作了一个与location部分中的if测试一起使用的版本,但我必须使用上游指令来实现。

预先感谢您的帮助。

0 个答案:

没有答案