Vhost weiterleitung an andere Maschinen im Netz

Alles, was den Apache betrifft, kann hier besprochen werden.

Vhost weiterleitung an andere Maschinen im Netz

Postby bechti44 » 16. August 2018 20:29

Sehr geehrte Community,

Ich habe ein Netzwerk mit mehreren Physikalischen Servern.

Nun habe ich das Problem, dass viele (web-)Applikationen auf den selben Ports Laufen und mein Router natürlich kein Layer 7 forwarding kennt.

Nun möchte ich das ganze so gestalten, dass ich über eine Domain (example.com) auf meine verschiedenen dienste auf verschiedenen geräten zugreifen möchte. z.b. so:

example.com (homepage, apache, main entry point 192.168.1.4)
example.com/cloud (192.168.1.6)
example.com/streaming (192.168.1.7)
example.com/...

wie kann ich das am besten machen? Leider hat mich der Netzwerk-Teil meiner Ausbildung nie sonderlich interessiert...

Ich habe mir gedacht, dass es eventuell möglich ist, auf einen anderen Port zu forwarden, damit ich mit meinem router portforwarding betreiben kann. Oder aber irgendwie anders direkt an das gerät weiterleiten.
Vielleicht lässt sich so etwas mit den apache vhost realisieren?

Freue mich auf euren Input.

beste grüsse,

Julian
bechti44
 
Posts: 1
Joined: 16. August 2018 20:13
XAMPP version: none
Operating System: Unix

Re: Vhost weiterleitung an andere Maschinen im Netz

Postby Nobbie » 17. August 2018 11:41

bechti44 wrote:Nun möchte ich das ganze so gestalten, dass ich über eine Domain (example.com) auf meine verschiedenen dienste auf verschiedenen geräten zugreifen möchte. z.b. so:

example.com (homepage, apache, main entry point 192.168.1.4)
example.com/cloud (192.168.1.6)
example.com/streaming (192.168.1.7)
example.com/...


Kann man so machen, aber aus technischen Gründen (einfacher zu realisieren) würde ich nicht mit verschiedenen Verzeichnissen arbeiten (also ./cloud und ./streaming usw.), sondern stattdessen mit verschiedenen VirtualHosts. Also Beispiel:

example.com (das ändert sich nicht, ist für homepage und apache usw.)
cloud.example.com (192.168.1.6)
streaming.example.com (192.168.1.7)
... usw.

Da Du diese ganzen Zielrechner von außen erreichen willst, müssen natürlich diese ganzen Subdomainnamen offiziell bei einem Registrar eingetragen sein, denn sonst kann man nicht von außen zugreifen. Bei dem Provider muss natürlich cloud.example.com (und alle anderen Subdomains) mit der WAN IP Deines Routers verknüpft sein und nicht mit den lokalen IPs a la 192.168.1.6. In Deinem Router hast Du ein Portforwarding von Port 80 auf 192.168.1.4 aktiviert.

Und dann legst Du für jeden gewünschten Zielrechner auf dem Hauptrechner (wo der zentrale Apache läuft) einen VirtualHost an und in diesem VirtualHost wird ein sog. Reverse Proxy auf den Zielrechner eingerichtet. Das sieht dann so aus (sieht für alle Ziele gleich aus, kannst Du als Template nehmen und musst Du nur die richtige Namen und IPs eintragen):

Code: Select all
<VirtualHost *:80>
ServerName cloud.example.com

ProxyPass / http://192.168.1.6/
ProxyPassReverse / http://192.168.1.6/
</VirtualHost>


Das sollte eigentlich schon ausreichen, das kopierst Du x mal und ersetzt jeweils nur den ServerName und die IP in den ProxyPass und ProxyPassReverse Anweisungen. Dann brauchen wir nur noch für die Hauptdomain einen VirtualHost, den trägst Du ÜBER die anderen als ersten ein und da kommt das Standardgedöns für den lokalen Apache und die Hauptseite hinein, kein ProxyPass usw.:

Code: Select all
<VirtualHost *:80>
ServerName example.com

DocumentRoot ....
<Directory hierstehtderDocumentRoot>
Require All Granted
... hier stehen vielleicht weitere Anweisungen, ggf. Options irgendetwas usw.
</Directory>
... und hier steht vielleicht auch noch irgendetwas,
</VirtualHost>


Und dann kann man als Klient einfach http://cloud.example.com im Browser eingeben und dann sollte der Inhalt der Cloud von Deinem lokalen Rechner mit der IP 192.168.1.6 zu sehen sein.

Das ginge zwar theoretisch auch via Unterverzeichnisse (so wie Du es skizziert hast), aber dann sieht die ProxyPass und ProxyPassReverse Anweisung etwas anders aus und je nachdem, wie der Zielrechner gestaltet ist, kann es da zu weiteren Problemchen kommen, die sind nicht unlösbar, aber WENN dann etwas sich nicht so verhält wie gewünscht, dann muss man ins Detail gehen. Das grundsätzliche Problem bei dieser Vorgehensweise sind "harte" Links im Zielrechner, die ggf. ins Leere gehen bei dieser Konfiguration und man muss dann weitere Vorkehrungen treffen. Hier ist das beste Tutorial welches ich kenne, welche ausführlich Klippen und Hürden eines solchen Reverse Proxys behandelt, wo auch in Verzeichnisse /app1 usw. unterschieden wird (allerdings in Englisch), so oder so solltest Du Dir zusätzlich die Apache Dokumentation zu VirtualHosts und zu Reverse Proxies durchlesen: http://www.apachetutor.org/admin/reverseproxies
Nobbie
 
Posts: 10421
Joined: 09. March 2008 13:04


Return to Apache

Who is online

Users browsing this forum: No registered users and 1 guest