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.html
und 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.html
sollte 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.