Jak hostować wiele fizycznych serwerów WWW za jednym adresem IP?

14

W moim domu działa wiele serwerów internetowych, z których każdy jest podłączony do routera.

Serwer A Serwer B Serwer C

Obecnie mogę używać tylko jednego serwera, ponieważ mój adres IP (xx.xxx.xx.xx) 80 wskazuje serwer A. Jednak niektóre domeny wskazują na serwer A, niektóre na B itp.

Jak wskazać każdy serwer za pomocą jednego adresu IP? Na przykład wszystkie moje rekordy A (hosta) wskazują tylko mój adres IP.

Przepraszam, jeśli brzmi myląco. Daj mi znać, jeśli nie będę jasne.

Na każdym serwerze działa Ubuntu Server 12.04.02 i używa Apache (jeśli to pomaga). Mój router to także Netgear, a moim dostawcą usług internetowych jest Time Warner Cable.

Stephen Cioffi
źródło
@kobaltz Nie do końca, ponieważ są to różne serwery, a nie wirtualne hosty. To są 3 fizyczne serwery
Stephen Cioffi
Moja odpowiedź w pytaniu jest wciąż taka sama, w której miałbyś odwrotny serwer proxy, który byłby tym, który pierwszy trafiłby po routerze. Stamtąd pchałby dane na jeden z trzech serwerów. Możesz to zrobić nawet z poziomu routera, jeśli używasz czegoś takiego jak OpenWRT.
kobaltz
Obecnie używam wyjaśnienia w mojej odpowiedzi na inne pytanie. Mam serwer maszyny wirtualnej, który miał maszynę wirtualną dla bramy, a następnie 20 węzłów. W zależności od subdomeny i nazwy domeny wypycha dane na jeden z 20 serwerów.
kobaltz

Odpowiedzi:

9

Strony internetowe będą rozpoznawane po Host:nagłówku wysłanym z przeglądarki. Ponieważ jednak router nie obsługuje demontażu HTTP używanego przez wirtualny hosting, musisz wybrać jeden serwer jako „punkt końcowy” (i podać routerowi ten adres jako Virtual Server / DMZ).

Następnie albo skonfigurujesz ten komputer jako serwer WWW dla jego domen i proxy dla innych (np. Używając odwrotnego proxy Apache ), albo (być może lepiej) zainstalujesz proxy na tym komputerze i użyjesz go do multipleksowania żądań do innych serwerów . Niektóre domeny mogą być nawet hostowane na tym samym komputerze. nginxnadaje się do tego rodzaju pracy, ale możesz także użyć innego oprogramowania (np pound.).

Myślę, że drugie rozwiązanie jest lepsze, ponieważ nie musisz w ogóle majstrować przy konfiguracjach serwerów WWW: jeden serwer proxy obsługuje proxy, a kilka serwerów obsługuje serwery WWW. Jeśli potrzebujesz dodać serwery lub przenieść wirtualne hosty, łatwiej jest utrzymać tę architekturę.

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

Dodatkowe opóźnienie wynikające z dwukrotnego odkodowania żądania (raz przez proxy, raz przez jego zamierzonego adresata) jest znikome i więcej niż kompensowane przez przyspieszenie zapewniane przez samo proxy.

LSerni
źródło
Jeśli utworzę gościa VM jako serwer proxy, jaki system operacyjny najlepiej zastosować i jakie zasoby sprzętowe powinienem przydzielić? Wspomniałeś o ustawieniu tego proxy w DMZ ... czy to konieczne? Czy nie mogę przekierować tylko tych portów, które chcę otworzyć, aby nadal była jakaś warstwa ochrony przez zaporę routera i NAT?
Reece
Zasoby dla serwera proxy nie stanowią problemu, będą mocno powiązane z siecią. Jeśli chodzi o system operacyjny, powiedziałbym na pewno Unix, Linux lub BSD w zależności od tego, z czym czujesz się najlepiej. Istnieją również gotowe urządzenia do kilku rozwiązań wirtualizacyjnych (vmware, virtualbox, xen itp.). I tak, zdecydowanie możesz przekierować tylko te porty, których potrzebujesz.
LSerni