Tengo esta situación en la que tengo muchas API ejecutándose en diferentes máquinas en diferentes puertos usando Tomcat. Puedo crear el flujo ascendente con esas direcciones IP, pero ¿cómo agregar la otra parte de la URL al flujo ascendente al configurar proxy_pass?
El aguas arriba:
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; }Luego creo la ubicación dentro de 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; }Como puede ver, debo agregar este "login-api/auth" porque la dirección URL real en la dirección redirigida es: http://10.2.54.8:8185/login-api/auth
¿Cómo puedo hacer eso?
Después de investigar un poco, terminé con esta solución:
El río arriba (es importante tener en cuenta que no puede usar este signo _ en el nombre del río arriba):
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; }La locación:
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; }Y luego en el navegador llamo:
http://MyNginxDomain/login-api/auth/