Reverse-Proxy-Anwendung und ihre statischen Dateien mit Nginx


10

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.jsund nicht so etwas http://mywebserver/app1/static/custom/index.js.

Ich habe versucht, eine rootAnweisung 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.


3
Versuchen Sie, den Speicherort / app1 in / app1 / zu ändern (abschließender Schrägstrich). Der aktuelle Standort stimmt nicht mit den Unterverzeichnissen überein;)
Sebastian Neira

Omg, die / app1 / hat den Trick gemacht ... Vielen Dank! @ RichardSmith Ich finde es sehr seltsam, den Code der Anwendung ändern zu müssen, es scheint den Zweck des Reverse Proxys völlig zu
vereiteln

Offensichtlich haben wir verschiedene Fragen gesehen ;-)
Richard Smith

Antworten:


7

Der Vorschlag von @sikian hat es geschafft, ich habe die Standortdeklaration von location /app1 { ... }auf geändert location /app1/ { ... }.

Die statischen Dateien wurden fehlerfrei in der Konsole bereitgestellt, und die Anwendung scheint voll funktionsfähig zu sein.


OH MEIN GOTT. Schüttelte meinen Kopf so stark. Dadurch wurde mein Problem behoben, dass der Reverse-Proxy funktioniert, die statischen Assets jedoch nicht ordnungsgemäß bereitgestellt wurden. So viel Zeit habe ich verschwendet!
SMT
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.