Nginx Reverse Proxy ersetzt nicht die Anwendungs-IP

Nginx Reverse Proxy ersetzt nicht die Anwendungs-IP

Ich habe eine Anwendung hinter einem Nginx, die offensichtlich nicht wie gewünscht funktioniert. Also habe ich versucht, sie in meiner lokalen Umgebung zu replizieren.

Hintergrund Die Webanwendung läuft einwandfrei und gibt eine /static/index.html als Standardseite zurück. Beispielsweise beim Zugriff aufhttp://localhost:7777/gibt /static/index.html zurück und alles funktioniert einwandfrei. {http://localhost:7777/static/index.html}

Problem Wenn ich versuche, auf dieselbe App hinter einem Proxy zuzugreifen, funktioniert es nicht. Beim Zugriff auf http://localhost/app{der lokale Host ist der Name des Serverstandards in nginx} gibt die App wie üblich /static/index.html zurück, wird umgeleitet http://localhost/static/index.htmlund gibt 404 zurück.

Wunschsituation Auch wenn die App hinter einem Proxy liegt, sollte ich die App sehen können. Stattdessen http://localhost/static/index.htmlsollte die URL ähnlich sein wiehttp://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;
    }

Irgendwelche Ideen, wie das erreicht werden kann?

Antwort1

Wenn Sie das Proxying gemäß Ihrer nginx.conf auf den Speicherort /app/ beschränken, sollte es Sie nicht überraschen, dass /static/index.html nicht geproxied wird. Fügen Sie ein

proxy_pass http://localhost:7777/;

zum Standort / und sehen, was dann passiert.

verwandte Informationen