O proxy reverso nginx não substitui o IP do aplicativo

O proxy reverso nginx não substitui o IP do aplicativo

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.htmle 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.htmlURL 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.

informação relacionada