Wie kann ich mehrere physische Webserver hinter einer einzelnen IP-Adresse hosten?

14

Ich betreibe mehrere Webserver in meinem Haus, von denen jeder an meinen Router angeschlossen ist.

Server A Server B Server C

Ich kann derzeit nur einen Server verwenden, da mein IP-Port 80 (xx.xxx.xx.xx) auf Server A zeigt. Einige Domänen verweisen jedoch auf Server A, einige auf B usw.

Wie zeige ich mit meiner einen IP-Adresse auf jeden Server? Zum Beispiel zeigt mein A (Host) alle Punkte nur auf meine IP-Adresse.

Entschuldigung, wenn ich verwirrend klinge. Lassen Sie mich wissen, wenn ich nicht klar bin.

Auf jedem Server wird Ubuntu Server 12.04.02 ausgeführt und Apache verwendet (sofern dies hilfreich ist). Mein Router ist auch ein Netgear und mein ISP ist Time Warner Cable.

Stephen Cioffi
quelle
Mögliches Duplikat von mehreren Webservern hinter einer einzigen Firewall
Kobaltz
@kobaltz Nicht genau, da dies unterschiedliche Server sind, keine virtuellen Hosts. Dies sind 3 physische Server
Stephen Cioffi
Meine Antwort innerhalb der Frage ist immer noch die gleiche, wo Sie einen Reverse-Proxy-Server haben würden, der das ist, was zuerst nach dem Router getroffen wird. Von dort würden die Daten auf einen der drei Server übertragen. Sie können dies sogar vom Router aus tun, wenn Sie OpenWRT verwenden.
Kobaltz
Ich verwende derzeit die Erklärung in meiner Antwort auf die andere Frage. Ich habe einen virtuellen Maschinenserver, der eine VM für das Gateway und dann 20 Knoten hatte. Abhängig von der Subdomain und dem Domainnamen werden die Daten auf einen der 20 Server übertragen.
Kobaltz

Antworten:

9

Websites werden anhand des Host:vom Browser gesendeten Headers erkannt . Da Ihr Router jedoch kein HTTP-Demangling unterstützt, das vom virtuellen Hosting verwendet wird, müssen Sie einen Server als "Endpunkt" auswählen (und Ihrem Router diese Adresse als virtuellen Server / DMZ mitteilen).

Anschließend konfigurieren Sie entweder diesen einen Computer als Webserver für seine Domänen und als Proxy für die anderen (z. B. mit dem Apache-Reverse-Proxy ) oder (möglicherweise besser) Sie installieren einen Proxy auf diesem einen Computer und multiplexen damit Anforderungen an die anderen Server . Einige Domänen werden möglicherweise sogar auf demselben Computer gehostet. nginxist für diese Art von Arbeit geeignet, aber Sie können auch andere Software (z pound. B. ) verwenden.

Ich denke, die zweite Lösung ist besser, weil Sie sich überhaupt nicht mit den Konfigurationen der Webserver herumschlagen müssen: Ein Proxy erledigt das Proxying und mehrere Webserver erledigen das Web-Serving. Wenn Sie Server hinzufügen oder virtuelle Hosts verschieben müssen, ist diese Architektur einfacher zu warten.

                                    +-- virtual hosts 1..9 -- server B
                                    |
router ----- machine A (nginx?) ----+-- virtual hosts 10..23- server C
                                    |
                                    +-- virtual hosts 24..99- server D

Die zusätzliche Latenz aufgrund der zweimaligen Dekodierung der Anforderung (einmal vom Proxy, einmal vom beabsichtigten Empfänger) ist vernachlässigbar und wird durch die vom Proxy selbst bereitgestellte Beschleunigung mehr als ausgeglichen.

LSerni
quelle
Wenn ich einen VM-Gast als Proxy erstelle, welches Betriebssystem ist am besten geeignet und welche Hardwareressourcen sollte ich zuweisen? Sie erwähnen die Einstellung dieses Proxys in der DMZ ... ist dies notwendig? Kann ich nicht nur die Ports weiterleiten, die ich öffnen möchte, damit durch die Firewall und NAT des Routers noch ein gewisser Schutz gewährleistet ist?
Reece
Ressourcen für den Proxy sind kein Problem, sondern stark netzwerkgebunden. Was das Betriebssystem angeht, würde ich sagen, dass Unix sicher ist, Linux oder BSD, je nachdem, mit was Sie sich am besten auskennen. Es gibt auch fertige Appliances für verschiedene Virtualisierungslösungen (VMware, VirtualBox, Xen usw.). Und ja, Sie können definitiv nur die Ports weiterleiten, die Sie benötigen.
LSerni