Блок расположения Nginx для двух шаблонов URL

#nginx #nginx-location #nginx-reverse-proxy

#nginx #nginx-расположение #nginx-обратный прокси

Вопрос:

Я пытаюсь использовать nginx proxy_pass для обратного прокси-сервера веб-приложения для меня. Неофициально я пытаюсь сделать следующее:

 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:

Похоже, я смог сделать это с помощью дополнительного блока местоположения:

 server {
    listen 80;

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

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