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