Apache virtual Host Config hinter Proxy

  • Hallo Forum,


    ich brauch mal nen kleinen Schubs in die richtige Richtung. Bei einem Kunden habe ich die Domain a.de und b.de - beide zeigen auf die gleiche IP.

    Diese IP ist ein Proxy der die Requests direkt an einen Apachen weitergibt (der Apache steht in einer DMZ on premise und der Kunde hat das zusammengebastelt).

    Nun will ich dass a.de vom Apachen aus einem anderen Ordner ausgeliefert wird als b.de.

    Normalerweise mach ich nun zwei Seiten (Virtual Hosts) im Apachen mit dieser config;

    Code
    <VirtualHost *:80>
            ServerName a.de      
            DocumentRoot /var/www/a
    </VirtualHost>
    
    <VirtualHost *:80>
            ServerName a.de      
            DocumentRoot /var/www/b
    </VirtualHost>

    Afaik matcht der Apache nun den Host-Header im http request gegen den ServerName und weiß nun wo er hin muss. ABER der Proxy sendet sich im Host-Header - und den eigentlichen Host im "X-Forwarded-Host" mit.

    Code
    GET /la.html HTTP/1.1
    Host: 192.168.0.10
    Upgrade-Insecure-Requests: 1
    X-Forwarded-Proto: https
    X-Forwarded-For: 91.49.174.137
    X-Forwarded-Host: www.a.de
    X-Forwarded-Server: www.a.de
    Connection: Keep-Alive


    Wie kann ich nun ServerName sagen dass es nicht gegen den Host-Header sondern gegen den X-Forwarded-Host-Header prüfen soll?


    Trotz einiger Google Suchen find ich immer nur wie ich den Apachen als Proxy konfiguriere und ihn dazu bringe den X-Forwarded-Host Header zu setzen. Nicht mein Problem dass ich abhängig von diesem Header meinen virtuellen Host (und damit den Ordner aus dem die Seite geholt wird) auswählen will.


    Das kann doch jetzt nix außergewöhnliches sein, oder?


    Thomas

  • Ich gebe mal ne andere Idee rein. Lass den Apache2 auf unterschiedlichen Ports laufen - wir machen das hier auch so, unsere ALBs sprechen dann je nach festgelegter Regel die unterschiedlichen Seiten im Apache2 auf unterschiedlichen Ports an... ;)


    Das sollte das Problem eigentlich lösen.

    "Denn der radikalste Zweifel ist der Vater der Erkenntnis."

    -Max Weber

  • macht hier der Proxy nicht etwas falsch?


    bzw. hast Du ThomasChr bei der Config oben nicht etwas vermischt?

    (sollte beim 2ten Virtualhost nicht a.de sondern b.de sein, oder?)

    Grüße / Greetings

    Walter H.


    RS, VPS, Webhosting - was man halt so braucht;)

  • Hast Du dort mod_rewrite? Dann erstelle eine RewriteRule, die den X-Forwarded-Host prüft und entsprechend ein anderes Verzeichnis ausgibt. Je nachdem was der Apache da ausliefert, könnte das allerdings schwierig werden, weil die Anwendung dahinter mit solchen Tricks nicht klar kommt.


    Oder Du schaust mal, ob man den DocumentRoot o.ä. in einem IF-Block anpassen kann. Dort könnte man nämlich auch beliebige HTTP-Header auswerten.

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Hast Du dort mod_rewrite? Dann erstelle eine RewriteRule, die den X-Forwarded-Host prüft und entsprechend ein anderes Verzeichnis ausgibt. Je nachdem was der Apache da ausliefert, könnte das allerdings schwierig werden, weil die Anwendung dahinter mit solchen Tricks nicht klar kommt.


    Oder Du schaust mal, ob man den DocumentRoot o.ä. in einem IF-Block anpassen kann. Dort könnte man nämlich auch beliebige HTTP-Header auswerten.

    Ich denke ich mach es jetzt erstmal wie jeder gute Devops Mitarbeiter.... Ich schiebe die Schuld auf die anderen.

    Aber ja, das sind schonmal ein paar gute Tipps. mod_rewrite gibts natürlich, der Server ist unter meine Kontrolle. Nur ned das komische Proxy Zeugs davor!

  • , der Server ist unter meine Kontrolle. Nur ned das komische Proxy Zeugs davor!

    dann sollt der Admin von dem komischen Proxy Zeugs davor seine Hausaufgaben machen,

    denn man macht keine HTTP(S) Reuquests mit IP-Adressen im Host-Header ...

    in Zeiten wo jeder Furz eine Domain hat schon gar nicht;:D

    Grüße / Greetings

    Walter H.


    RS, VPS, Webhosting - was man halt so braucht;)