Reverse Proxy: mehrere Domains auf gleichen Server aber verschiedene URLs



  • Hallo,

    ich sehe vor lauter Wald die Bäume nicht mehr:
    ich habe hinter einem pfSense verschiedene Server, auf denen ich gerne unterschiedliche Websites hosten würde. Sprich es gibt aktuell Domain1.de, Domain2.de und Domain3.de, die alle auf die IP des pfSense zeigen (192.168.2.1). Die Webserver haben die IPs 192.168.2.2 (web1) und 192.168.2.3 (web2). Folgendes habe ich mit dem squid3-package hinbekommen:

    www.Domain1.de -> 192.168.2.2 (web1)
    www.Domain2.de -> 192.168.2.2 (web1)

    www.Domain3.de -> 192.168.2.3 (web2)

    Woran ich allerdings aktuell verzweifle ist folgendes: ich möchte www.Domain1.de und www.Domain2.de nicht simpel auf den Root-Pfad des Web-Servers web1 routen, sondern jeweils in Unterverzeichnisse. So soll es also aussehen:

    http://www.Domain1.de ->  http://192.168.2.2/website1/
    http://www.Domain2.de ->  http://192.168.2.2/website2/

    Kann mir jemand sagen wie ich das hinbekomme?

    Vielen Dank!



  • Hallo,

    wenn du mit einem Apache2 arbeitest kannst du das mit vhosts machen.
    Hierbei wird die Domain ausgwertet und man wird entsprechend in den richtigen Ordner geleitet:
    http://wiki.ubuntuusers.de/Apache/Virtual_Hosts
    http://httpd.apache.org/docs/2.2/vhosts/examples.html



  • Vielen Dank für die Antwort. Das heisst ich kann das nicht unabhängig vom Webserver direkt im pfSense erledigen?



  • das weiß ich leider nicht.
    Würde aber mal fast behaupten nein.
    Das mit den vhosts ist auf jeden fall eine saubere Lösung wie ich finde. Einmal eingerichtet ist es auch sehr flexibel für weiter Domains und Subdomains.


  • Rebel Alliance Moderator

    Jein. Kannst du schon, aber m.W. nicht mit irgendeinem Squid Paket.

    Wenn du das schon auf der pfSense abfangen musst, würde es ein Proxy Paket sinnvoller machen, sei es haproxy oder apache selbst, ggf. sogar varnish. Alle können über reguläre Ausdrücke oder Regelsätze Virtuelle Hosts auflösen und dementsprechend auf Backends routen. Damit solltest du zum Ziel kommen.

    Gruß



  • @amorph:

    Hallo,

    ich sehe vor lauter Wald die Bäume nicht mehr:
    ich habe hinter einem pfSense verschiedene Server, auf denen ich gerne unterschiedliche Websites hosten würde. Sprich es gibt aktuell Domain1.de, Domain2.de und Domain3.de, die alle auf die IP des pfSense zeigen (192.168.2.1). Die Webserver haben die IPs 192.168.2.2 (web1) und 192.168.2.3 (web2). Folgendes habe ich mit dem squid3-package hinbekommen:

    www.Domain1.de -> 192.168.2.2 (web1)
    www.Domain2.de -> 192.168.2.2 (web1)

    www.Domain3.de -> 192.168.2.3 (web2)

    Woran ich allerdings aktuell verzweifle ist folgendes: ich möchte www.Domain1.de und www.Domain2.de nicht simpel auf den Root-Pfad des Web-Servers web1 routen, sondern jeweils in Unterverzeichnisse. So soll es also aussehen:

    http://www.Domain1.de ->  http://192.168.2.2/website1/
    http://www.Domain2.de ->  http://192.168.2.2/website2/

    Kann mir jemand sagen wie ich das hinbekomme?

    Vielen Dank!

    Ich glaube das ist schwer bis unmöglich. Squid kann zwar über "Mapping" die Pfade anpassen, aber in der Praxis funktioniert das nicht, sobald diese Pfade nicht nur im HTTP-Header sind, sondern auch im HTML bzw. im JavaScript. Daher würde die Webseiten auf den internen Server auf Virtual Hosts (egal ob IP-based oder Name based) und die Applikationen ins "/" verschieben.



  • Es ist möglich eine Weiterleitung einer Domain auf einen Server mit einer angehängten url durchzuführen.

    Ich habe hierfür HAProxy verwendet. Dies gibt es auch in der Pfsense.

    Als Reverseproxy kann ich auch Varnish empfehlen, auch diese ist in der Pfsense enthalten.

    Varnish ist ein sehr mächtig und flexibel.

    Was deine Weiterleitung angeht habe ich folgenden Regex im  Backend des Haproxy's eingerichtet.

    reqrep ^([^\ :]*)\ /    \1\ /website1\2


Log in to reply