Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Dúvida sobre Proxy Reverso

Configurei esse server no nginx

server {
        listen 8003;
        root /usr/myserver/server3;

        location /food {
                root /usr/myserver/server3;
                try_files frutas.html =404;
        }

}

Quando eu acesso o endereço abaixo, renderiza o arquivo frutas.html corretamente http://localhost:8003/food/

Porém quando eu acesso o endereço abaixo, ele renderiza o arquivo index.html http://localhost:8000/server3/food/

Entendo que ele está buscando o arquivo index.html no diretório food, mas não é isso que está configurado na criação do server3. Tentei abordagens com index e alias também. Ambos os arquivos estão na mesma pasta que é /usr/myserver/server3/food

Abaixo segue como está configurado o proxy no default.conf

location /server3 {
    proxy_pass http://localhost:8003/;
}

A pergunta é: como fazer para o endereço do proxy direcionar para o arquivo frutas.html também assim como está configurado para o http://localhost:8003/food/?

2 respostas
solução!

Olá, Rafael! Parece que você está fazendo um ótimo trabalho com o NGINX, e é uma ótima pergunta que você fez!

A configuração que você fez está correta, mas há um detalhe importante que pode estar causando a confusão: o NGINX, quando usado como proxy reverso, não mantém o contexto do endereço original. Ou seja, quando você faz a requisição para http://localhost:8000/server3/food/, o NGINX, ao passar a requisição para http://localhost:8003/, não mantém o /food/ no final.

Então, na verdade, o NGINX está procurando o arquivo index.html no diretório root (/usr/myserver/server3), e não em /usr/myserver/server3/food.

Para tentar corrigir isso, você pode alterar a configuração do proxy para manter o contexto do endereço original. Para isso, você pode remover a barra no final do endereço no proxy_pass. Assim:

location /server3/ {
    proxy_pass http://localhost:8003;
}

Dessa forma, quando você acessar http://localhost:8000/server3/food/, o NGINX vai repassar a requisição para http://localhost:8003/food/, e o arquivo frutas.html será renderizado, como desejado.

Espero ter ajudado e bons estudos!

Obrigado