nginx выбирает правильный сервер в апстриме в соответствии с URI
У меня есть приложение, которое прослушивает 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 маршрута: / закрытый, / ожидающий и / активный
Я использовал прокси-сервер nginx, чтобы сделать эти URL-адреса недоступными извне:
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 был выбран.
Я сделал версию, которая работает с тестами if в разделе location, но я должен сделать это с помощью директивы upstream.
Спасибо заранее за вашу помощь.