Ich versuche etwas zu tun, das mir sehr einfach erscheint, aber ich muss dumm sein oder etwas sehr Offensichtliches verpassen, weil ich es nicht herausfinden kann.
Ich möchte auf die mehreren Webanwendungen zugreifen, die auf meinem Server ausgeführt werden, und für jede einzelne ein eindeutiges Präfix verwenden:
http://mywebserver/app1 -> localhost:9001
http://mywebserver/app2 -> localhost:9002
...
Soweit ich verstanden habe, muss ich Nginx als Reverse-Proxy konfigurieren, also habe ich Folgendes getan:
server {
listen 80;
server_name mywebserver;
location /app1{
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_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:9001/;
}
...
}
Diese Konfiguration ermöglicht mir den Zugriff auf die Homepage der Anwendung unter http://mywebserver/app1
, aber der statische Inhalt wird nicht geladen.
Wenn ich die Konsole meines Browsers öffne, kann ich sehen, dass versucht wird, die Ressourcen abzurufen, http://mywebserver/static/custom/index.js
und nicht so etwas http://mywebserver/app1/static/custom/index.js
.
Ich habe versucht, eine root
Anweisung in den Standortblock einzufügen, um die statische Anweisung bereitzustellen, diese wird jedoch nicht berücksichtigt, da die Anforderung des statischen Inhalts aktiviert /
und nicht aktiviert wird /app1
.
Wie kann ich das beheben? Gibt es etwas Offensichtliches, das mir fehlt, oder habe ich das Konzept des Reverse Proxy völlig falsch verstanden?
Vielen Dank.
Antworten:
Der Vorschlag von @sikian hat es geschafft, ich habe die Standortdeklaration von
location /app1 { ... }
auf geändertlocation /app1/ { ... }
.Die statischen Dateien wurden fehlerfrei in der Konsole bereitgestellt, und die Anwendung scheint voll funktionsfähig zu sein.
quelle