Wie überschreiben ich URLs in einer Proxyantwort in NGINX?
Bin ich auf Apache mit mod_proxy_html, und ich versuche, etwas zu erreichen, vergleichbar mit NGINX. Den konkreten Anwendungsfall ist, dass ich ein admin-UI läuft Tomcat auf port 8080 auf einem server in den root-Kontext:
http://localhost:8080/
Brauche ich, um die Oberfläche dieses auf port 80, aber ich habe in anderen Kontexten in der NGINX-server auf diesem host, also wollen versuchen, Zugriff unter:
http://localhost:80/admin/
Ich hoffe, dass der folgende super simple server block würde es auch tun, aber es hat nicht ganz:
server {
listen 80;
server_name screenly.local.akana.com;
location /admin/{
proxy_pass http://localhost:8080/;
}
}
Das problem ist, dass der zurückgegebene Inhalt (html) enthält URLs auf Skripte und style-Informationen, die alle Zugriff auf den root-Kontext, so dass ich brauchen, um diese URLs umgeschrieben zu starten mit /admin/anstelle von /.
Wie mache ich das in NGINX?
InformationsquelleAutor der Frage IanG | 2015-09-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es gibt zwei grundlegende Einstellungen für die Nginx "proxy_pass" Richtlinie je nachdem, ob ein trailing slash vorhanden ist oder nicht:
oder
Mit die ersten, die eine Anfrage für
http://your_server/some_dir/some_subdir/some_file
umgeleitet zuhttp://some_server/some_subdir/some_file
.Grundsätzlich
/some_dir/
wird ersetzt durch/
ändern Sie den Pfad der Anforderung von/some_dir/some_subdir/some_file
zu/some_subdir/some_file
.Mit der zweiten (no trailing slash), die gleiche Anforderung per Proxyfunktion an
http://some_server/some_dir/some_subdir/some_file
.Grundsätzlich die vollständige original-Anfrage-Pfad übergeben bekommt, ohne änderungen.
So, in Ihrem Fall scheint es, sollten Sie einfach den trailing slash zu bekommen, was Sie wollen.
BEARBEITEN
Lesen Sie Ihre Frage noch einmal, es scheint, dass ich möglicherweise übersehen haben, die Sie gerade Bearbeiten möchten, die html-Ausgabe.
Für die, die Sie verwenden können, die sub_filter Richtlinie. So etwas wie ...
Grundsätzlich die Zeichenfolge, die Sie ersetzen möchten, und die Ersatz-Zeichenfolge
InformationsquelleAutor der Antwort Dayo
Müssen Sie möglicherweise auch die folgende Richtlinie festgelegt werden, bevor die erste "sub_filter" für die backend-Server mit Daten-Kompression:
Sonst kann es nicht funktionieren.
Für dein Beispiel wird es wie folgt Aussehen:
InformationsquelleAutor der Antwort Vladimir Sh.