Ich richte also einen virtuellen Pfad ein, wenn ich auf eine node.js-App in meiner nginx conf zeige. Der entsprechende Abschnitt sieht folgendermaßen aus:
location /app {
rewrite /app/(.*) /$1 break;
proxy_pass http://localhost:3000;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Funktioniert hervorragend, außer dass meine node.js-App (eine Express-App) eine Umleitung aufruft.
Beispiel: Auf der Dev-Box wird Nginx auf Port 8080 ausgeführt. Die URL zum Stammverzeichnis der Node-App sieht also folgendermaßen aus:
http: // localhost: 8080 / app
Wenn ich eine Weiterleitung vom Knoten zu '/ app' aufrufe, wird die eigentliche Weiterleitung an folgende Adresse gesendet:
Antworten:
Das Problem ist, dass die Node.js-Anwendung die Umleitung nicht korrekt ausgibt. Möglicherweise können Sie
proxy_redirect
dies in nginx folgendermaßen korrigieren:quelle
Ich musste nur das gleiche Problem lösen, als Jenkins hinter Nginx lief. Für mich war es wichtig, den Server-Port in den
Host
Header aufzunehmen, der an Jenkins gesendet wird:Hoffentlich hilft das.
quelle
Ich habe die obigen Lösungen ausprobiert, aber alle sind fehlgeschlagen, wenn die Knotenanwendung eine vollqualifizierte URL im Standortheader ausgegeben hat, z. B. " http://nodeapp.com:8080/new/location ".
Also habe ich den $ http_host verwendet, um Host und Port zu übergeben. Und mit einem Match ~ ^ können Sie die URLs komplett umschreiben.
In unserem Fall läuft der Knotenserver auf 8080 und unser Nginx-Proxy auf 8000. Dies bedeutet, dass jede vollqualifizierte URL in einem Standortheader neu geschrieben werden muss. Hoffe das hilft jemandem !!
quelle
Gemäß der Konversation zu dieser Frage besteht die richtige Lösung darin, die
Host
Header-Direktive des Proxys anzupassen .Ändere das:
Dazu:
$http_host
Enthält den im HTTP-HOST-Header angegebenen Wert, der den Port enthält. Redirects sollten den benutzerdefinierten Port ohne weitere Anpassung des OP-Setups abrufen.Diese Antworten (dasselbe Ticket) werden weiter ausgeführt:
quelle