Mein Titel ist nicht der beste, meine Kenntnisse von Webstuff ist ziemlich einfach, sorry.Server hinter Nginx Reverse Proxy ignoriert relativen Pfad in URL
Was ich
Ich habe eine Box fanbox läuft nginx auf Archlinux erreichen will, dass ich als Haupteinstiegspunkt zu mir nach Hause benutzen LAN aus dem Internet (nämlich arbeiten, wo ich nur in dem Hafen aussteigen kann 80 und 443) über die Reverse-Proxy-Einrichtung unter Verwendung eines sich ändernden Domain-Namens, über den ich keine Kontrolle habe und den wir home.net vorerst anrufen werden.
fanbox seine Ports 80 und 443 bis home.net abgebildet, war das Teil einfach.
Ich habe 2 webservers hinter der Firewall, web1.lan, web2.lan, web2ilo.lan. Beide haben verschiedene Anwendungen (die gleichen Namen auf verschiedenen Maschinen haben kann), die direkt auf dem LAN über Standard-URLs zugegriffen werden kann (die Namen werden als Beispiele gegeben, ich habe keine Kontrolle über den Inhalt):
http://web1.lan/phpAdmin/
http://web1.lan/gallery/
http://web2.lan/phpAdmin/
http://web2.lan/dlna/
... und so weiter ...
Jetzt web2ilo.lan ist ein besonderer Fall. Es ist die Out-of-Band-Management-Weboberfläche des HP Servers web2.lan. Dieser spezielle Web-Server bietet nur 1 Anwendung, so kann es nur über seine Stamm-URL zugegriffen werden:
http://web2ilo/login.html
Mein Ziel ist es, diese über subpath von home.net wie diese zuzugreifen:
http://home.net/web1/phpAdmin/
http://home.net/web1/gallery/
http://home.net/web2/phpAdmin/
http://home.net/web2/dlna/
http://home.net/web2ilo/login.html
Mein Problem
, dass fast funktioniert, aber die Web-Anwendungen sind in der Regel URLs neu zu schreiben, so dass, nachdem ich mich ein, um jeweils:
http://home.net/web1/phpAdmin/login.php
http://home.net/web2ilo/login.html
wird der Browser umgeleitet jeweils
http://home.net/phpAdmin/index.php
http://home.net/index.html
Beachten Sie, dass die relative Subpfade web1 und web2ilo, gegangen ist, die eine 404.
Meine Config
gib mir logisch So Bis jetzt habe ich viel gesucht und viele Optionen in nginx ausprobiert, ohne zu viel zu verstehen, was ich gemacht habe. Hier ist meine Konfiguration, die dieses Problem reproduziert. Ich habe SSL aus Gründen der Übersichtlichkeit weggelassen.
server {
listen 443 ssl;
server_name localhost;
# SSL stuff left out for clarity
location/{
root /usr/share/nginx/html;
index index.html index.htm;
}
location /web1/ {
proxy_set_header Host $host;
proxy_redirect off;
proxy_pass https://web1.lan/;
}
location /web2/ {
proxy_set_header Host $host;
proxy_redirect off;
proxy_pass https://web2.lan/;
}
location /web2ilo/ {
proxy_set_header Host $host;
proxy_redirect off;
proxy_pass https://web2ilo.lan/;
}
}
Nach dem ersten Antworten
Nach den ersten paar Antworten (vielen Dank!), Ich merke, dass mein Setup weit von gemeinsam ist und dass ich für Probleme alleine zusteuern können.
Was wäre dann eine bessere Idee, auf den Webserver hinter der Firewall zuzugreifen, ohne Frontend-Ports und Domain/Hostname zu berühren?
Sie explizit deaktivieren URL-Rewriting mit 'proxy_redirect off' und erwartet, dass es funktioniert. Komisch. –
Ich folgte Beispielen, die ich googeln fand ... Ich habe mehrere Parameter für diese Option ausprobiert, kann aber kaum einen Unterschied feststellen. Also ich denke, meine ganze Herangehensweise ist völlig falsch. Nicht lustig nein. – FLBzh