posiadam u siebie dwa serwery za NATem (jedno IP).
Chciałbym przekierować połączenia z subdomeny x.xxx.pl na serwer2 zostawiając przy tym możliwość łączenia się z serwer1 z domeny y.xxx.pl (teraz x.xxx.pl i y.xxx.pl kierują na ten sam serwer(1)). Jak to zrobić?
Najpierw odpowiem, że to w warunkach domowych jest niemożliwe.
Teraz wyjaśnienie:
Czym się różni pakiet kierowany za NAT do serwera HTTP obsługującego domenę A od pakietu dla serwera domeny b ?
wpisem w nagłówku HTTP.
Zwykłe routery niczego takiego nie obsługują - tzn. nie grzebią w tak wysoko (chyba, że w ramach filtrowania np L7-filter)
Są switche przełączające w zależności od domeny (L7), ale to raczej wyszukany sprzęt.
Jeżeli to jakaś prywatna domena (czyt. nie dla ogółu) to możesz jeden z serwerów puścić na innym porcie np 8080 i odwoływać się domena.pl:8080, a do drugiego domena.pl - co daje efekt wywołania domena.pl:80 i wtedy elegancko forwarding na portach i już…
Jeżeli mowa tylko serwerze HTTP, to można wykorzystać mod_proxy w Apache (lub inne rozwiązanie tego typu). Miałem przez pewien czas zestawione w ten sposób, nawet działało.
Serwer 1: 192.168.0.10, przekierowany do niego port 80, Apache 2 z mod_rewrite i mod_proxy. Domena: domena1.com
Serwer 2: 192.168.0.11, niewidoczny na zewnątrz, bo jeden adres IP zewnętrzny. Domena: domena2.com
Ale na serwerze 1 w konfiguracji Apache dla virtualhostu domena2.com było zrobione coś takiego:
RewriteRule (.*) http://192.168.0.11 [P]
Co powodowało, że serwer 1 w tle się łączył do serwera 2 i wysyłał klientowi odpowiedź już tego drugiego. Rozwiązanie brzydkie i prowizoryczne, trzeba popatrzeć w Sieci jak to się da ładniej zrobić, bez rewrite na przykład.
Jeżeli trzeba więcej coś niż HTTP, to - jeżeli nie jest to rozwiązanie publiczne - można pokusić się o na przykład VPN. Albo - do czego gorąco zachęcam - spróbować pobawić się IPv6, gdzie uzyskanie 2^64 zewnętrznych publicznych adresów nie jest problemem