Probleme mit reverse-Proxy. -überhaupt die richtige Anwendung für mich?
Hallo. Ich habe auf meinem Ubuntu server verschiedene dienste/server laufen. jeder Dienst hat eine Weboberfläche die über unterschiedliche Ports erreichbar sind. Und dann habe ich noch eine Steuerung die im Netzwerk hängt und ebenfalls eine Weboberfläche besitzt. Und noch anderen kram mit weboberfläsche
ich hatte das eigentlich so vor das alle Weboberflächen über den lokalen rechnernahmen (den vom ubuntu-server) erreichbar sind. es soll sozusagen alles über den webserver mit port 80 laufen.
BSP:
127.0.0.1:88 -> rechnername/service1
127.0.0.1:99 -> rechnername/service2
192.168.x.x -> rechnername/service3
um das umzusetzen habe ich den Apache webserver installiert, einen virtuellen host angelegt und mit proxypass die Adresse des servers auf das verzichnis gelegt
Jetzt habe ich gefühlt ewig rumexperimentiert um festzustellen das ich wahrscheinlih auf dem Falschen weg bin.
nehmen wir mal das codebeispiel was ich gepostet habe:
wenn ich jetzt im Browser Rechnername/service1 eingebe öffnet sich die eigentlich die Startseite der Steuerung. aber jetzt kommt mein Problem es öffnet sich z.b. nur die Start.html aber nicht die restlichen Datein weil ja der Pfad nicht stimmt. der Browser will z.b. auf /CSS/framework.css zugreifen aber das jeht ja nicht weil der Pfad eigentlich /service1/CSS/... heißen müsste.
lege ich den "ProxPass" auf "/" stimmt der Pfad und die Seite wird korrekt aufgebaut.
Leider bringt mir das ja nichts weil ich ja mehrere Seiten über den proxy laufen lassen möchte.
Ich hätte jetzt noch die Möglichkeit das über eine URL Umleitung zu machen. aber ich würde das gerne so lösen das sich die URL nicht ändert.
gibt es irgendeinen anderen weg wie ich das sonst lösen könnte?
ich hatte das eigentlich so vor das alle Weboberflächen über den lokalen rechnernahmen (den vom ubuntu-server) erreichbar sind. es soll sozusagen alles über den webserver mit port 80 laufen.
BSP:
127.0.0.1:88 -> rechnername/service1
127.0.0.1:99 -> rechnername/service2
192.168.x.x -> rechnername/service3
um das umzusetzen habe ich den Apache webserver installiert, einen virtuellen host angelegt und mit proxypass die Adresse des servers auf das verzichnis gelegt
ProxyPass /service1 http://192.168.x.x/
Jetzt habe ich gefühlt ewig rumexperimentiert um festzustellen das ich wahrscheinlih auf dem Falschen weg bin.
nehmen wir mal das codebeispiel was ich gepostet habe:
wenn ich jetzt im Browser Rechnername/service1 eingebe öffnet sich die eigentlich die Startseite der Steuerung. aber jetzt kommt mein Problem es öffnet sich z.b. nur die Start.html aber nicht die restlichen Datein weil ja der Pfad nicht stimmt. der Browser will z.b. auf /CSS/framework.css zugreifen aber das jeht ja nicht weil der Pfad eigentlich /service1/CSS/... heißen müsste.
lege ich den "ProxPass" auf "/" stimmt der Pfad und die Seite wird korrekt aufgebaut.
Leider bringt mir das ja nichts weil ich ja mehrere Seiten über den proxy laufen lassen möchte.
Ich hätte jetzt noch die Möglichkeit das über eine URL Umleitung zu machen. aber ich würde das gerne so lösen das sich die URL nicht ändert.
gibt es irgendeinen anderen weg wie ich das sonst lösen könnte?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1552516061
Url: https://administrator.de/contentid/1552516061
Ausgedruckt am: 21.11.2024 um 22:11 Uhr
2 Kommentare
Neuester Kommentar
Hi,
du kannst das mit einem Mix aus ProxyPassReverse und für deine kaputten Links mod_substitute versuchen in den Griff zu bekommen. Das kann aber einiges an Bastellei werden, mit manchen (unsauber entwickelten) Anwendungen wird es schwer bis unmöglich. Am besten funktioniert es, wenn du der Anwendung eine Basis-URL mitgeben kannst, die konsequent überall verwendet wird. Für die ProxyPass Direktive dann den Pfad ggf. mit anhängen:
Am einfachsten und saubersten lässt sich das mit (Sub-)Domains lösen, jeweils eine pro Anwendung:
service1.server.de
service2.server.de
service3.server.de
Diese Variante würde ich empfehlen. Da läuft die Anwendung immer im Kontext-Root. Mit LetsEncrypt lassen sich die TLS-Zertifikate wunderbar automatisieren, HTTP statt HTTPS ist ja seit längerem nicht mehr Zeitgemäß und sollte möglichst vermieden werden.
du kannst das mit einem Mix aus ProxyPassReverse und für deine kaputten Links mod_substitute versuchen in den Griff zu bekommen. Das kann aber einiges an Bastellei werden, mit manchen (unsauber entwickelten) Anwendungen wird es schwer bis unmöglich. Am besten funktioniert es, wenn du der Anwendung eine Basis-URL mitgeben kannst, die konsequent überall verwendet wird. Für die ProxyPass Direktive dann den Pfad ggf. mit anhängen:
ProxyPass /service1 http://192.168.x.x/service1
Am einfachsten und saubersten lässt sich das mit (Sub-)Domains lösen, jeweils eine pro Anwendung:
service1.server.de
service2.server.de
service3.server.de
Diese Variante würde ich empfehlen. Da läuft die Anwendung immer im Kontext-Root. Mit LetsEncrypt lassen sich die TLS-Zertifikate wunderbar automatisieren, HTTP statt HTTPS ist ja seit längerem nicht mehr Zeitgemäß und sollte möglichst vermieden werden.