From: W.Myszka@immt.pwr.wroc.pl
|
W bardzo wielu przypadkach istnieje potrzeba wykorzystania jednego
komputera do obsługiwania informacji dostarczonych przez kilku różnych
klientów. Problem można rozwiązać na kilka różnych sposobów:
1. Informacje każdego klienta umieszczamy w innej kartotece i propagujemy
odsyłacze:
2. Informacje umieszczamy w osobnych kartotekach i uruchamiamy kilka
serwerów http; każdy korzystający z innego portu. Odsyłacze będą wyglądały
wówczas tak:
lub jeżeli zarejestrujemy w DNS jako alias dla naszego serwera nazwy
www.klient1.com.pl, ... , www.klientn.com.pl
- http://www.klient1.com.pl:8001/ dla klient1,
- http://www.klient2.com.pl:8002/ dla klient2
- ...
- http://www.klientn.com.pl:800n/ dla klient
Rozwiązania oba są bardzo proste, ale niezbyt eleganckie. Klient może
domagać się występowania pod własną nazwą i nie godzić się na żadne
"dopiski". W takiej sytuacji musimy uruchomić "serwery wirtualne". Musimy:
- mieć n wolnych numerów IP,
- zarejestrować serwery www.klient1.com.pl, ... , www.klient.com.pl używając
tych numerów
- zdobyć odpowiednie oprogramowanie
serwera
pozwalającego na jednym komputerze obsłużyć kilka różnych adresów. Na
przykład
Apache
- spowodować, by komputer rozpoznawał jako swoje własne wszystkie
powyższe adresy. Można to (lub nie można) zrealizować na kilka różnych
sposobów. Zależy to od konkretnej wersji systemu operacyjnego i jest poza
zakresem zainteresowania niniejszego FAQ. Najelegantszym rozwiązaniem
jest zainstalowanie w komputerze kilku wirtualnych interfejsów
sieciowych. Najmniej eleganckim - zainstalowanie kilku kart sieciowych :-)
- odpowiednio skonfigurować i uruchomić serwer WWW.
W ostatecznym układzie sytuacja będzie wyglądać tak: na naszym komputerze
będzie pracował jeden serwer www, który, w zależności od tego do jakiego
adresu "zapuka" klient serwował będzie inny zestaw informacji...
Aby dodać alias IP w Linuksie (z jądrem 2.0) wystarczy --- przy
odpowiednio skompilowanym jądrze --- opcje
Network Aliasing
i
IP Aliasing
w
make config
wydać polecenie:
root@domek ~#
/sbin/ifconfig eth0:10 192.168.17.1 broadcast 192.168.17.255 netmask 255.255.255.0
i odpowiednio ustawić routing...
Większość współcześnie dystrybuowanych serwerów HTTP (używając pola nagłówka
Host:
z HTTP/1.1) pozwala poza tym zdefiniować kilka serwerów wirtualnych na
jednym numerze IP (choć niekoniecznie jest to zalecane --- spora część
działających (choć chyba już żadna ze sprzedawanych/rozprowadzanych)
przeglądarek używa jedynie
HTTP/1.0
--- podczas, gdy jest to jedna z własności
HTTP/1.1
).