Nginx-Proxypfade

Nginx-Proxypfade

Ich versuche, einen anderen Webserver auf localhost:20000 von nginx aus als Proxy zu verwenden. Das funktioniert:

location/ {
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 http://127.0.0.1:20000
}

Wenn ich es jedoch wie folgt ändere:

location /myApp {
proxy_set_header..

Ich kann nur die Datei index.html laden, alle anderen .css & .js geben 404 aus. Ich kann in den Headern des Browsers sehen, dass die Anforderung für diese Dateien an mysite.com/jquery.js statt an mysite.com/myApp/jquery.js geht, also nehme ich an, dass sie an dieser Stelle nicht geproxied werden, weshalb sie 404 ausgeben. Die Pfade zu diesen URLs sind relativ () codiert. Wie bekomme ich das zum Laufen? Ich kann die Pfade in den geproxieden index.html-Dateien nicht ändern. Danke

Bearbeiten. Der Backend-Webserver ist thttpd und er ist uralt. Würde dies den set_head-Host beeinflussen? Tut mir leid, ich bin nicht sehr vertraut damit, wie diese Schicht funktioniert.

Antwort1

Erstens location /myApp {}muss oben stehen location {}. Zweitens, was wahrscheinlich wichtiger ist, können Sie statische Dateien direkt bereitstellen, indem Sie rooteinen Abschnitt wie diesen richtig zuweisen und hinzufügen:

location ~* \.(css|jpg|png|gif|jpeg|js|ico|swf|mp3)$ { break; }

Wenn Sie stattdessen die URI ändern möchten, kann dies im folgenden location / {}Abschnitt hilfreich sein:

rewrite ^/(.*)$ /myApp/$1 break;

verwandte Informationen