Eu tenho uma instância nginx em execução no servidor A que passa solicitações para um servidor Apache no servidor B.
Testei várias(!) configurações... mas o seguinte problema ainda permanece:
Uma solicitação como https://example.com/myapp
é traduzida e http://example.com/
passada para o servidor B. O servidor B envia uma respostahttp://example.com/login
para o nginx/servidor A. Mas o nginx não traduz essa resposta para https://example.com/myapp/login
: o que recebo se usar wget https://example.com/myapp
é https://example.com/login
(o que falta na /myapp
parte).
Essa é minha configuração atual:
server {
listen 443 ssl;
server_name example.com;
location /myapp/ {
proxy_pass http://192.168.0.100/;
}
}
Eu li muitos tópicos e brinquei com muitos parâmetros proxy_redirect
como rewrite
e return
. Mas isso não funcionou para mim ...
Você provavelmente precisará reconfigurar o servidor B em vez de reconfigurar o Nginx. Quando o servidor B emite um redirecionamento, ele precisa incluir o diretório. Você pode passar cabeçalhos para o back-end para que ele saiba que está atrás de um proxy reverso e, em seguida, alterar o back-end para redirecionar de forma diferente quando detectar esses cabeçalhos:
Até onde eu sei, o Nginx não tem equivalente Ã
proxypass_reverse
diretiva do Apache, que altera os cabeçalhos de redirecionamento do servidor back-end. Portanto, outra solução seria mudar do Nginx para o Apache para o front end, que tem a funcionalidade de alterar o redirecionamento.