用于两个URL模式的Nginx位置块

时间:2019-04-09 21:38:51

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

我正在尝试使用nginx proxy_pass为我反向代理Web应用程序。非正式地,我正在尝试执行以下操作:

http://localhost/abc/$1 --> http://localhost:8080/$1

除了$1为空的特殊情况外,在这种情况下,我想:

http://localhost/abc --> http://localhost:8080/def

我注意到我可以这样做:

server {
    listen 80;

    location /abc/ {
        proxy_pass http://localhost:8080/;
    }
}

,后者与此:

server {
    listen 80;

    location /abc/ {
        proxy_pass http://localhost:8080/def;
    }
}

但是我似乎无法将它们结合起来做我想做的事。

1 个答案:

答案 0 :(得分:0)

看起来我可以使用一个额外的位置块来做到这一点:

server {
    listen 80;

    location = /abc/ {
        return 302 /abc/def;
    }

    location /abc/ {
        proxy_pass http://localhost:8080/;
    }
}