Eu tenho um aplicativo atrás de um nginx e obviamente não está funcionando como desejado. Então tentei replicar em meu ambiente local.
Fundo O aplicativo da web está funcionando bem por si só e retorna um /static/index.html como a página padrão. por exemplo, no acessohttp://localhost:7777/retorna /static/index.html e tudo funciona bem. {http://localhost:7777/static/index.html}
Problema
Quando tento acessar o mesmo aplicativo por meio de um proxy, não funciona. Ao acessar
http://localhost/app
{o localhost é o nome do servidor padrão no nginx}, o aplicativo retorna normalmente /static/index.html e é redirecionado para tp http://localhost/static/index.html
e retorna 404.
Situação desejada
Mesmo que o aplicativo esteja atrás de um proxy, devo conseguir vê-lo. Em vez do http://localhost/static/index.html
URL deve ser semelhante ahttp://localhost/localhost:7777/static/index.html
nginx.conf
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location /app/ {
proxy_pass http://localhost:7777/;
proxy-redirect off;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_buffering off;
client_max_body_size 0;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Set-Cookie;
proxy_pass_header P3P;
}
Alguma idéia de como isso pode ser alcançado?
Responder1
Se você limitar o proxy, conforme seu nginx.conf, ao local /app/, não deverá se surpreender que /static/index.html não seja proxy. Adicione um
proxy_pass http://localhost:7777/;
para o local / e veja o que acontece então.