Básicamente, estoy intentando utilizar la proxy_pass
directiva para llamar a una API remota.
Hasta ahora, esto es lo que obtuve:
server {
location /a {
proxy_pass https://a.com;
rewrite ^/a(.*)$ $1 break; # no trailing slash, defined in application code
}
location /b {
proxy_pass https://b.com;
rewrite ^/b(.*)$ $1 break; # no trailing slash, defined in application code
}
location / {
# Rest of configuration
}
}
Me quedo atascado con el hecho de que location /a
funciona bien pero location /b
por alguna razón no funciona ( HTTP/404
).
Intenté usar una barra diagonal de location /b
esta manera.
location /b/ {
proxy_pass https://b.com/;
rewrite ^/b/(.*)$ $1 break;
}
pero esto tampoco funciona.
Cualquier ayuda es bienvenida.
Respuesta1
Encontré la respuesta a mi problema particular.
Los dos servidores API no están configurados de la misma manera y tuve que modificar un poco la configuración de nginx.
- El servidor
b.com
necesitaba unaproxy_set_header Host $host
directiva y ningunarewrite
directiva - El servidor
a.com
necesitaba larewrite
directiva pero no laproxy_set_header Host $host
Esto me deja con la siguiente configuración (que funciona para mí):
server {
location /a {
proxy_pass https://a.com;
rewrite ^/a(.*)$ $1 break;
}
location /b {
proxy_set_header Host $host;
proxy_pass https://b.com;
}
}