![Nginx reescreve corretamente para um, mas não para o outro](https://rvso.com/image/769276/Nginx%20reescreve%20corretamente%20para%20um%2C%20mas%20n%C3%A3o%20para%20o%20outro.png)
Basicamente, estou tentando usar a proxy_pass
diretiva para chamar uma API remota.
Até agora, foi isso que consegui:
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
}
}
Estou preso ao fato de que location /a
funciona bem, mas location /b
por algum motivo não funciona ( HTTP/404
).
Eu tentei usar uma barra final location /b
desta forma
location /b/ {
proxy_pass https://b.com/;
rewrite ^/b/(.*)$ $1 break;
}
mas isso também não funciona.
Qualquer ajuda é muito bem vinda.
Responder1
Encontrei a resposta para meu problema específico.
Os dois servidores API não estão configurados da mesma maneira e tive que ajustar um pouco a configuração do nginx.
- O servidor
b.com
precisava de umaproxy_set_header Host $host
diretiva e nenhumarewrite
diretiva - O servidor
a.com
precisava darewrite
diretiva, mas não daproxy_set_header Host $host
Isso me deixa com a seguinte configuração (trabalhando para mim):
server {
location /a {
proxy_pass https://a.com;
rewrite ^/a(.*)$ $1 break;
}
location /b {
proxy_set_header Host $host;
proxy_pass https://b.com;
}
}