Ich habe eine öffentliche IP-Adresse, einen Router und mehrere Server hinter dem Router.
Ich möchte unterschiedliche Domänen (alle verwenden HTTP) über den Router an verschiedene Server weiterleiten.
Zum Beispiel:
example1.com => 192.168.0.110
example2.com => 192.168.0.120
foo.example2.com => 192.168.0.130
bar.example2.com => 192.168.0.140
Mir ist bewusst, dass dies mithilfe der Portweiterleitung erreicht werden könnte, aber ich brauche alle Hosts, die auf Port 80 laufen.
Ich habe einige Informationen zum Thema IP-Masquerading gefunden, finde diese aber schwer verständlich und bin nicht sicher, ob es das ist, wonach ich suche.
Eine andere Lösung, die ich gefunden habe, besteht darin, den gesamten Datenverkehr an einen Reverse-Proxy-Server umzuleiten, der die Anfragen an den entsprechenden Server weiterleitet. Was ist mit iptables?
Ich verwende einen Billion 7404 VNPX-Router. Verfügt dieser Router über eine Funktion, mit der dies möglich ist?
Sind das meine einzigen Optionen? Habe ich etwas völlig übersehen? Ist eine gegenüber den anderen empfehlenswert?
Ich habe gesucht, aber ich glaube nicht, dass ich die richtigen Schlüsselwörter gefunden habe.
Antwort1
Die beste Lösung wäre die Verwendung eines HTTP-Reverse-Proxys. Hierfür können Sie Folgendes verwenden:
Wir verwenden Apache mit mod_proxy, aber ich denke darüber nach, Pound zu verwenden.
Als Hardware-Appliance können Sie einen Cisco Content Service Switch verwenden. Siehe:http://www.cisco.com/en/US/products/hw/contnetw/ps792/index.html
Antwort2
Ich habe eine Idee und würde gerne wissen, ob jemand Feedback dazu hat.
Wenn ich die Reverse-Proxy-Idee verwende, kann ich das Problem meiner Meinung nach ganz einfach lösen. Ich verwende Nginx bereits auf den anderen Servern, daher ist dies mein bevorzugter Server für einen Reverse-Proxy.
Am Router leite ich alle eingehenden Verbindungen auf Port 80 an meinen Reverse-Proxy-Server weiter. Auf diesem Server lasse ich Nginx mit der folgenden Konfigurationsdatei laufen:
server {
listen *:80;
location / {
proxy_pass http://$host;
}
}
Dies scheint zu bewirken, dass die Anfrage an denselben Host weitergeleitet wird. Aber hier ist der Trick: In meiner Datei /etc/hosts ordnet ich alle Domänen ihren internen IPs zu.
182.168.0.110 example1.com
182.168.0.120 example2.com
182.168.0.130 foo.example2.com
182.168.0.140 bar.example2.com
Der Reverse-Proxy-Server leitet den angeforderten Host also an denselben Host weiter, aber an diesem PunktsollenSuchen Sie in der lokalen Hosts-Datei nach und ordnen Sie diese der internen IP-Adresse zu. Das bedeutet auch, dass ich die Nginx-Konfigurationsdatei „einstellen und vergessen“ kann.
Ein potenzielles Problem besteht darin, dass der Reverse Proxy die Anfrage zurück an das Internet sendet, wenn kein lokaler Hostname konfiguriert wurde. Ich denke jedoch, dass NAT verhindert, dass dies in einer Endlosschleife hängen bleibt.
In meinem Kopf und auf dem Papier scheint diese Lösung zu funktionieren, aber ich werde so schnell nicht in der Lage sein, sie einzurichten.
Kann irgendjemand einen Grund erkennen, warum das nicht funktionieren sollte?
Danke.