Составьте URL-адрес в расположении с IP-адресом сервера, используя восходящую конфигурацию Nginx - PullRequest
0 голосов
/ 31 марта 2020

У меня есть ситуация, когда множество API работают на разных машинах на разных портах с использованием Tomcat. Я могу создать восходящий канал с этими IP-адресами, но как добавить другую часть URL-адреса в исходящий при настройке proxy_pass?

Исходящий поток:

upstream login_api_stream {
   least_conn; 
   server 10.2.54.8:8185;
   server 10.2.54.8:8285;
   server 10.2.54.8:8385;
   server 10.2.54.9:8085 backup;
}

Затем я создаю местоположение внутри http:

location /login-api/ {
    add_header X-Real-IP $remote_addr;
    add_header X-Forwarded-For $proxy_add_x_forwarded_for;
    add_header X-Forwarded-Proto $http_x_forwarded_proto;
    # I have to add "login-api/auth" on the upstream
    proxy_pass http://login_api_stream/login-api/auth;
}

Как видите, я должен добавить это "login-api / auth", потому что реальный URL-адрес на перенаправленном адресе: http://10.2.54.8: 8185 / login-api / auth

Как я могу это сделать?

1 Ответ

0 голосов
/ 02 апреля 2020

После некоторых раскопок я получил следующее решение:

Вверх по течению (важно отметить, что вы не можете использовать этот знак _ в имени восходящего потока):

upstream newlogin {
   least_conn; 
   server 10.2.54.8:8085;
   server 10.2.54.8:8285;
   server 10.2.54.8:8185;
   server 10.2.54.9:8085 backup;
}

местоположение:

location ~ ^/login-api/auth/ {
    add_header Host $host;
    add_header X-Real-IP $remote_addr;
    add_header X-Forwarded-For $proxy_add_x_forwarded_for;
    add_header X-Forwarded-Proto $http_x_forwarded_proto;
    proxy_pass http://newlogin$uri$is_args$args;
}

А потом в браузере звоню:

http://MyNginxDomain/login-api/auth/
...