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.

Спасибо заранее за вашу помощь.

0 ответов

Другие вопросы по тегам