IP-MASQUERADE INDEX STRONA GŁÓWNA
KONFIGURACJA SERWERA WWW (APACHE)

 

Wraz z dystrybucją Linuksa otrzymujemy najpopularniejszy od lat, darmowy pakiet oprogramowania Apache. Nazwa "APACHE" powstała od słowa path (łata), gdyż serwer ten powstał na podstawie łat do ogólnie dostępnego serwera WWW - NCSA.
Zestaw ten jest jednym z najczęściej stosowanych serwerów WWW, pracujących nie tylko pod kontrolą Linuksa, ale jest dostępny również dla systemu Windows. Dzięki obszernej dokumentacji na swój temat, prostych zasadach konfiguracji, uniwersalności, obsłudze CGI (Common Gateway Interface), PHP (Hypertext Preprocessor) i możliwości stworzenia wielu serwerów wirtualnych na jednym lub wielu IP, serwer ten jest jednym z najpopularniejszych serwerów WWW wśród zwykłych użytkowników, jak i wśród dużych firm zajmujących się świadczeniem usług internetowych.
Dla przeciętnego użytkownika serwer ten jest najczęściej przydatny do testowania wykonanych przez siebie stron WWW, a głównie skryptów CGI i PHP, które są często podłączone do stron, jako liczniki, księgi gości, wyszukiwarki czy programy przetwarzające różnorakie dane.

Apache rozprowadzany na licencji public domain daje możliwość dostępu do kodu źródłowego serwera. Siłą napędową rozwoju serwera jest Apache Group - zespół programistów ochotników, którzy wraz z użytkownikami rozwijają program, jako Apache Project, dając każdemu szansę napisania nowych łat do programu .

Główna baza programu znajduje się pod adresem : http://www.apache.org

 

1) Instalacja serwera
2) Uruchamianie i zatrzymywanie serwera
3) Konfiguracja serwera
4) Serwery wirtualne

 

1) Instalacja serwera

Serwer Apache możemy zainstalować na dwa sposoby :

  • poprzez pakiet RPM
  • kompilując źródło z kodem serwera (metoda dla bardziej zaawansowanych użytkowników)

 

Instalacja z RPM

Pakiet RPM z serwerem można znaleźć na jednej z płyt CD, z których instalowany był system.
Instalację można przeprowadzić programem rpm :

rpm -ivh apache.rpm

Pliki z pakietu RPM są instalowane w następujących katalogach :

/etc/httpd/conf - katalog ten zawiera wszystkie pliki konfiguracyjne
/etc/rc.d - RPM instaluje tutaj wszystkie potrzebne skrypty do automatycznego lub ręcznego uruchamiania serwera
/home/httpd - w tym katalogu instalowane są wszystkie ikony, skrypty CGI i pliki HTML używane przez serwer
/usr/bin - tu znajdują się pliki wykonywalne serwera wraz z wieloma narzędziami służącymi do obsługi serwera
/var/log/http - w tym katalogu znajdują się pliki z dziennikami zdarzeń

 

Kompilacja źródeł

W pierwszej kolejności należy uruchomić skrypt ./configure wraz z opcją --prefix, dzięki której można przekazywać do skryptu różne parametry, np. położenie wraz z nazwą katalogu, w którym zostanie zainstalowany Apache :

./configure -prefix=/katalog/instalacyjny

Uruchomienie tego skryptu spowoduje powstanie w katalogu /src/ plików Configuration i Makefile.
Teraz wydajemy polecenia make, makeinstall i nasze pliki serwera zostaną skompilowane i zainstalowane.

 

2) Uruchamianie i zatrzymywanie serwera

Proces uruchamiania serwera httpd może być wykonywany ręcznie lub automatycznie. Uruchamianie Apacha z linii poleceń pozwala na zmianę domyślnie ustawionych parametrów, takich jak położenie plików konfiguracyjnych.

Składnia polecenia httpd jest następująca :

httpd [-d katalog] [-f pliki] [-C dyrektywa] [-v] [-V] [-h] [-l] [-L] [-S] [-t]

gdzie :

-d - określa położenie katalogu ServerRoot (położenie głównego katalogu z zainstalowanym serwerem)
-f - określa położenie głównego pliku konfiguracyjnego, httpd.conf . Serwer podczas uruchamiania czyta i wykonuje dyrektywy, znajdujące się właśnie w tym pliku
-v - parametr ten powoduje wyświetlenie wersji Apache, nie uruchamiając serwera
-V - parametr ten powoduje wyświetlenie wszystkich ustawień obowiązujących w chwili kompilacji serwera
-h - wyświetla informacje o sposobie użycia polecenia httpd
-l - wyświetla listę modułów włączonych do kodu serwera w trakcie kompilacji
-L - wyświetla listę dyrektyw konfiguracyjnych wraz z informacją, z którego modułu pochodzi dana dyrektywa
-s - opcja ta powoduje wyświetlenie ustawień serwerów wirtualnych pobranych z pliku konfiguracyjnego
-t - opcja ta powoduje przeanalizowanie wszystkich plików konfiguracyjnych serwera bez uruchamiania Apacha

Jeśli chcemy, aby nasz serwer uruchamiał się automatycznie podczas startu systemu należy umieścić specjalny skrypt httpd w katalogu /etc/rc.d/init.d/ .

Dzięki opcjom tego skryptu można kontrolować działanie serwera :

start - system używa tej opcji do uruchomienia usługi podczas start systemu.Opcja ta jest również dostępna dla użytkownika ROOT
stop - opcja ta jest wykorzystywana do bezpiecznego zamknięcia usługi - powinno się jej używać zamiast polecenia kill
reload - opcja ta powoduje ponowne odczytanie pliku konfiguracyjnego bez zamknięcia serwera
restart - rezultat wywołania skryptu z tą opcją jest taki, jak uruchomienie skryptu z opcją stop a następnie z opcją start
status - rezultatem wywołania tej opcji jest wyświetlenie identyfikatora PID serwera i wszystkich jego procesów potomnych

 

3) Konfiguracja serwera

Konfiguracja pracy serwera polega na uaktywnianiu pewnych dyrektyw, które w zasadzie są poleceniami ustawiającymi konkretną opcję.

Dyrektywy konfiguracyjne mają zazwyczaj taką samą składnię :

dyrektywa opcja opcja ...

W jednej linii można umieścić tylko jedną dyrektywę.
Dzięki dyrektywom można określać złożone opcje lub ustawić tylko konkretną wartość.

Niektóre dyrektywy zwane sekcjami mają budowę typu :

<dyrektywa opcja>
  dyrektywa opcja opcja
  dyrektywa opcja opcja
</dyrektywa>

Głównym i najważniejszym plikiem konfiguracyjnym serwera jest plik httpd.conf.
W pliku tym możemy umieścić wszystkie dyrektywy potrzebne do prawidłowego działania serwera.

Najważniejsze dyrektywy konfiguracyjne to :

 

ResourceConfig /dev/null
AccessConfig /dev/null

W pierwszych wersjach serwera dyrektywy konfiguracyjne były umieszczane dodatkowo w dwóch plikach : srm.conf i acces.conf . Dyrektywy te nakazują serwerowi zignorowanie tych plików, gdyż cała konfiguracja serwera zawarta jest w jednym pliku : httpd.conf .

 

ServerType

Dzięki tej dyrektywie można ustawić dwa typy pracy naszego serwera : standalone, inetd .
Ustawienie typu serwera na standalone spowoduje, że nasz serwer będzie utrzymywany przez system przez cały czas w gotowości do obsłużenia każdej prośby.
Opcja inetd spowoduje, że w reakcji na pojawiającą się prośbę zostanie uruchomiony oddzielny serwer i po jej obsłużeniu zostanie wyłączony.

 

ServerRoot

Dyrektywa ta określa najwyższy katalog drzewa katalogów, względem którego określane będą lokalizacje plików konfiguracyjnych i dzienników.

 

Port

Wskazujemy port, na którym nasz serwer będzie prowadził nasłuchiwania.
Domyślnie przyjmowanym portem jest port 80.

 

Listen

Możemy dokonać powiązania z określonym portem (lub adresem IP), na którym serwer będzie prowadził nasłuchiwanie.

 

User
Group

Dyrektywa ta wskazuje na użytkownika i grupę, których własnością będzie proces httpd .
Przed ustawieniem tych opcji należy upewnić się, że podany użytkownik i grupa posiadają wpisy w plikach passwd i group.
Należy być świadomym tego, że nasz serwer będzie pracował z prawami podanego użytkownika i grupy co oznacza, że w przypadku włamania do systemu poprzez serwer lub jeden z programów CGI włamywacze dostaną właśnie te prawa.

 

ServerAdmin

Opcja ta powinna wskazywać na adres internetowy administratora serwera.

 

ServerName

Opcją tą ustalamy nazwę serwera zwracaną klientowi, jeśli rożni się ona od nazwy podanej w zadaniu . Nazwa ta musi być zgodna z nazwą podaną na serwerze DNS.

 

StartServers

Dyrektywą tą określamy liczbę serwerów uruchamianych podczas startu Apache.

 

MaxClients

Jest to maksymalna liczba klientów, którzy mogą być obsłużeni w tym samym czasie.
Jeśli limit ten zostanie przekroczony, to obsługa nadmiarowych klientów będzie wstrzymana, co umożliwia ochronę systemu przed załamaniem w wyniku przeciążenia serwera.

 

MinSpareServers
MaxSpareServers

Dyrektywy te regulują liczbę zapasowych procesów potomnych serwera - aby serwer mógł dynamicznie dostosować się do obciążenia.
Oznacza to, że serwer utrzymuje potrzebną liczbę procesów do obsłużenia połączeń i kilka dodatkowych do obsługi gwałtownego wzrostu obciążenia.
Osiąga się to przez okresowe sprawdzanie liczby serwerów, oczekujących na wywołanie, i jeśli liczba ta jest mniejsza niż MinSpareServers, to dodaje zapasowe, a jeśli wolnych serwerów jest więcej niż MaxSpareServers, to część z nich jest likwidowana.

 

Timeout

Opcją tą określamy limit czasu przeznaczony na obsługę pojedyńczego żądania.

 

KeepAlive

Dyrektywą tą możemy zezwolić na obsługę wielu zadań w ramach jednego połączenia.

 

MaxKeepAliveRequests

Określamy maksymalną liczbę zadań w ramach jednego połączenia.

 

KeepAliveTimeout

Określamy czas oczekiwania na kolejne zadanie w ramach tego samego połączenia.

 

MaxRequestsPerChild

Dyrektywą tą możemy określić maksymalna liczbę żądań obsługiwanych w cyklu życia procesu potomnego.

 

UseCanonicalName

Włączenie tej opcji nakazuje serwerowi, by w przypadku odwołań wskazujących na siebie tworzył adres URL na podstawie wartości z ServerName i Port.
Jeśli opcja ta jest wyłączona, adresy URL tworzone są na podstawie nazwy hosta i numeru portu pobranego z żądania.

 

DocumentRoot

Dyrektywa ta powinna zawierać ścieżkę do katalogu zawierającego katalog główny serwisu WWW, skąd będą pobierane dokumenty do wysłania klientowi.
Zawartość tego katalogu używana jest domyślnie do obsługi wszelkich zadań.

 

UserDir

Dyrektywa ta określa podkatalog katalogu macierzystego użytkownika w przypadku odwołania do adresu zawierającego ciąg ~użytkownik, w którym może on umieszczać publiczne dokumenty HTML .

 

DirectoryIndex

W dyrektywie tej znajdują się nazwa pliku lub plików zawierających indeks katalogu, czyli pliki, które zostaną wysłane użytkownikowi w odpowiedzi na żądanie dostępu do adresu.

 

IndexIgnore

Umożliwia określenie nazwy plików, które będą ignorowane podczas indeksowania katalogu.

 

FancyIndexing

Dyrektywa ta umożliwia włączenie dodatkowych opcji indeksowania katalogów.

 

AddIconByType
AddIcon

Opcją tą informujemy serwer, które ikony będą reprezentowały pliki o określonych typach lub rozszerzeniach.
Ikony wyświetlane są gdy włączymy - FancyIndexind.

 

DefaultIcon

Opcja ta określa domyślną ikonę dla plików, którym nie przypisano jej jawnie poprzez ustawieni opcji w AddIconByType i AddIcon.

 

LoadModule
AddModule

Aby móc używać modułów skompilowanych jako DSO, należy je załadować, a następnie dodać do serwera. Kolejność ładowania modułów jest istotna.

Najważniejsze moduły to :

core - zawiera podstawowe funkcje zawsze dostępne w dystrybucji (kontrolują również inne moduły)

mod_access - kontrola dostępu do plików w zależności od adresu IP lub nazwy komputera klienta. Użycie tego modułu pozwala na dokładną kontrolę użytkowników np.:administrator może zezwolić na wykonywanie skryptów CGI tylko pracownikom firmy

mod_actions - odpowiada za wykonywanie skryptów CGI w zależności od typu danych lub sposobu pobrania

mod_alias - pozwala mapować (udostępniać) część systemu plików w katalogu głównym Apache-a, umożliwia też przekierowywanie adresów URL. Część plików może znajdować się poza katalogiem lub nawet na innym komputerze w sieci

mod_asis - deklaracja plików, które mogą być wysyłane bez nagłówków HTTP (pliki *.asis)

mod_auth - moduł odpowiedzialny za uwierzytelnianie użytkowników na podstawie zdefiniowanych plików tekstowych

mod_auth_anon - pozwala anonimowym użytkownikom na dostęp do danych, podlegających weryfikacji dostępu

mod_auth_db - uwierzytelnianie za pomocą plików DB

mod_auth_dbm - uwierzytelnianie za pomocą plików DBM

mod_autoindex - automatyczne tworzenie indeksów dla katalogów, które nie mają
standardowych plików index.*htm*

mod_cern_meta - emulacja plików CERN HTTPD pozwala dodawać dodatkowe nagłówki do wszystkich plików

mod_cgi - prawdopodobnie najpopularniejszy moduł. Pozwala wykonywać skrypty CGI po stronie serwera i zwracać wyniki klientowi

mod_digest - uwierzytelnianie za pomocą algorytmu MD5

mod_dir - podstawowe operacje na katalogach. Zwykle używany do uzupełniania adresu np.: http://serwer.pl/plik zostanie zastąpiony poprawnym wywołaniem http://serwer.pl/plik/

mod_env - moduł odpowiedzialny za przekazywanie zmiennych środowiskowych do skryptów CGI/SSI

mod_example - demonstracja możliwości interfejsu programowego - Apache API

mod_expires - dodaje znacznik Expires (strona wygasa, traci ważność) do stron WWW przesyłanych klientowi - ważne dla często zmienianych serwisów, które powinny być zawsze aktualne

mod_headers - pozwala na dowolną modyfikację nagłówków HTTP

mod_imap - wsparcie dla map plików graficznych (.map) używane po stronie serwera WWW

mod_include - pozwala włączyć zawartość plików lub wyniki działania skryptu do zwykłych plików HTML i zwracać ich zawartość klientowi

mod_info - odpowiedzialny za informację o ustawieniach serwera Apache

mod_log_agent - zapisywanie w logach nazw i wersji przeglądarek internetowych klientów

mod_log_config - konfigurowalne logowanie zdarzeń - pliki log zapisywane są w formacie Common Logfile Format

mod_log_referer - logowanie odwołań do plików umieszczonych na serwerze

mod_mime - określenie typu pliku na podstawie rozszerzenia

mod_mime_magic - określenie typu pliku na podstawie kilku bajtów jego zawartości

mod_mmap_static - pozwala określić pewne niezmienne pliki, które zostaną umieszczone w pamięci serwera Apache w celu szybszego dostępu

mod_negotiation - odpowiedzialny za uzgadnianie najlepszej reprezentacji danych w przeglądarce klienta. Wprowadzony ze względu na zgodność z HTTP/1.1

mod_proxy - Apache staje się serwerem proxy dla stron WWW, przyspiesza dostęp do często używanych danych, gdy serwer WWW jest wykorzystywany do zapamiętywania danych

mod_rewrite - moduł o ogromnych możliwościach. Pozwala modyfikować adresy URL w "locie" za pomocą wyrażeń regularnych

mod_setenvif - pozwala modyfikować zmienne środowiskowe na podstawie wywołania

mod_so - moduł eksperymentalny. Powoduje ładowanie dodatkowych modułów podczas działania serwera

mod_speling - moduł odpowiedzialny za poprawianie błędów w adresach URL

mod_status - wyświetla bieżący stan serwera Apache

mod_userdir - ustawienia dotyczące katalogów domowych użytkowników

mod_unique_id - generuje unikalny identyfikator dla każdego żądania

mod_usertrack - śledzenie zachowań użytkowników za pomocą Cookies (tzw. ciasteczka), szczególnie przydatne dla np. stałych klientów w sklepach internetowych lub do określania preferencji użytkownika

mod_vhost_alias - moduł wykorzystywany przy konfiguracji serwerów wirtualnych

 

ReadmeName
HeaderName

Dyrektywy te określają nazwy plików zawierających stopkę i nagłówek dołączony na końcu i początku indeksu katalogu.

 

ScriptAlias

Opcja ta określa, w którym katalogu będą znajdować się skrypty serwera (zawartość katalogu traktowana jest, jako aplikacje).

 

AddHandler cgi-script .cgi

Opcja zezwalająca na używanie skryptów CGI.

 

AddHandler server-parsed .shtml

Opcja zezwalająca na używanie poleceń SSI w dokumentach HTML.

 

AddHandler send-as-is asis

Zezwalamy serwerowi na przesyłanie dokumentów w postaci niezmodyfikowanej.

 

AddHandler imap-file map

Zezwalamy na używanie map graficznych, interpretowanych po stronie serwera.

 

AddHandler type-map var

Zezwalamy na wykorzystywanie map typów.

 

TypesConfig

Dyrektywa ta służy do wskazywania lokalizacji plików: mime types.

 

DefaultType

Wskazujemy domyślny typ MIME używany w przypadku niemożności jego określenia.
Jeśli serwer przechowuje głównie dokumenty tekstowe HTML, to najlepiej użyć wartości "text/plain", jeśli natomiast udostępniane pliki są w większości binarne, to lepiej użyć "aplication/octet-stream", co pozwoli zabezpieczyć przeglądarki przed próbami wyświetlania zawartości plików binarnych w postaci tekstowej.

 

AddType

Pozwala na dodanie nowego typy MIME bez konieczności modyfikowania pliku mime types.

 

AddLanguage

Dyrektywa ta pozwala na obsługę wielu wersji językowych dokumentów, co pozwoli na dostarczenie przeglądarce dokumentu w żądanym przez nią języku.

 

LanguagePriority

Określa priorytet wersji językowej w przypadku braku rozstrzygnięcia podczas negocjacji zawartości. Lista powinna zawierać kody języków w kolejności malejących priorytetów.

 

AddEncoding

Dyrektywa ta daje możliwość przeglądarkom na rozpakowywanie danych w locie.

 

AccessFileName

Opcją tą wskazujemy na plik odpowiedzialny za ustawienie kontroli dostępu do katalogu.

 

ProxyRequests

Dyrektywą tą ustawiamy nasz serwer, jako serwer pośredniczący.

 

Alias /alias/ "/prawdziwa nazwa/"

Dyrektywa ta umożliwia nam zdefiniowanie dowolnej liczby aliasów dla katalogów.
Zawartość katalogu określonego za pomocą tej dyrektywy traktowana jest, jak dokument, a nie aplikacja.

 

ErrorLog

Określenie położenia pliku dziennika błędów.

 

LogLevel

Dyrektywa ta ustala ilość informacji rejestrowanych w pliku error_log.
Możliwe opcje tej dyrektywy to : debug, info, notice, warn, error, critic, alert, emerq.

 

CustomLog

Określamy położenie pliku dziennika transakcji : rejestrowanie informacji o typie przeglądarki i adresie źródłowym odwołania.

 

LogFormat

Dzięki tej opcji możemy ustalić wzorce formatów dla dyrektywy CustomLog.

 

HostnameLookups

Dzięki tej dyrektywie możemy nakazać serwerowi, aby rejestrował nazwy klientów (on) lub tylko ich adresy (off).

 

PidFile

Dyrektywa ta zawiera nazwę pliku, do którego serwer podczas startu zapisze swój PID.

 

ScoreBoardFile

Określa plik do zapisywania wewnętrznych informacji o procesach potomnych serwera.

 

ErrorDocument

Ta dyrektyw może zawierać komunikaty o błędach serwera. Jako opcja może być również podany adres strony, która wyświetli informacje o błędzie.

 

BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response

Opcje te ustawiają blokadę podtrzymywania połączenia w przypadku komunikacji z przeglądarką Netscape 2.x (implementacja ta zawiera błędy).
Druga dyrektywa przeznaczona jest dla programu Internet Explorer 4.0b2, który posiada błędy w obsłudze podtrzymywania połączenia po otrzymaniu odpowiedzi 301,302.

 

BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0

Powyższe dyrektywy wymuszają wysyłanie odpowiedzi w protokole HTTP/1.1 opatrzonych
nagłówkiem HTTP/1.0 na użytek przeglądarek niewłaściwie interpretujących dane w tym protokole.

 

Dla każdego katalogu i jego podgatalogów, do którego Apache ma dostęp można określić zestaw dostępnych w nim praw, usług i funkcji. Służy do tego sekcja :

<Directory / katalog_do_którego_będą_odnosić_się_ustawienia>
  dyrektywy
</Directory>

składająca się z następujących dyrektyw :

Options - dyrektywa ta może przyjmować następujące opcjie:

None - żadna z dostępnych opcji nie zostanie włączona w tym katalogu
All - wszystkie dostępne opcje (poza MultiViews) są włączone w tym katalogu
Indexes - w przypadku braku pliku podanego dyrektywą DirectoryIndex zostanie wyświetlona lista plików w tym katalogu (w postaci strony HTML)
FollowSymLinks - pozwala na dostęp do katalogu poprzez dowiązania symboliczne
ExecCgi - daje możliwość wykonywania w tym katalogu skryptów CGI, nawet jeśli nie jest to katalog określony dyrektywą ScriptAlias,
MultiView - kiedy na serwerze nie ma pliku, o który prosi klient, serwer próbuje zgadnąć, który dokument najbardziej pasuje do prośby klient

 

AllowOverride - dyrektywa ta określa, które parametry konfiguracji głównej można zmieniać dla podkatalogów za pomocą plików .htaccess.

Dyrektywa AllowOverride składa się z następujących opcji :

Options - plik .htaccess może zmieniać opcje nie wymienione w dyrektywie Options dla danego katalogu
FileInfo - plik .htaccess może zawierać dyrektywy modyfikujące typ informacji dokumentu
AutoConfig - plik .htaccess może zawierać dyrektywy odpowiedzialne za autoryzację dostępu
Indexes - plik .htaccess może zawierać dyrektywy sterujące indeksowaniem katalogów
Limit - plik .htaccess może zawierać dyrektywy allow, deny i order,

      order - określa, jakie prawa dostępu można nadać katalogowi
      allow - dostęp do katalogu jest możliwy
      deny - dostęp do katalogu jest zabroniony

 

allow from all lub deny from all - określa, kogo obowiązują dane prawa.

 

4) Serwery wirtualne

Serwery wirtualne są jedną z bardziej popularnych usług dostarczanych przez serwer Apache. Dzięki odpowiedniej konfiguracji kilku dyrektyw można stworzyć praktycznie nieograniczoną liczbę serwerów WWW, znajdujących się na tym samym fizycznym serwerze, posiadających własne unikalne nazwy i przechowujących swoje dane w odrębnych katalogach .

Serwer Apache dostarcza dwóch sposobów tworzenia hostów wirtualnych.

Możemy posiadać tylko jeden adres IP z wieloma rekordami CNAME umieszczonymi na serwerze DNS, które będą wskazywały właśnie na ten adres lub druga możliwość, to stworzenie tylu serwerów, ile mamy dostępnych adresów (jeden serwer przyporządkowany jednemu interfejsowi).

 

Serwery wirtualne identyfikowane nazwami domenowymi

Konfiguracja serwera identyfikowanego nazwami domenowymi umożliwia uruchomienie wielu hostów wirtualnych na tym samym fizycznym serwerze, któremu przyporządkowany jest tylko jeden adres IP (jeden adres IP wiele serwerów WWW).
Aby było to możliwe należy umieścić na serwerze DNS dodatkowe nazwy dla naszego serwera za pomocą rekordu CNAME. Wówczas gdy klient HTTP wyśle żądanie skierowane do serwera, wysyła wraz z nim zmienną określającą nazwę serwera, do którego żądanie jest adresowane. To właśnie w oparciu o tę zmienną serwer określa, do którego wirtualnego hosta ma przekazać żądanie.

 

Przed głównymi blokami konfigurującymi hosty wirtualne należy dodać dyrektywę :

NameVirtualHost IP_naszego_serwera

dzięki której określimy, który adres IP ma być skojarzony z więcej niż jedną nazwą.
Dla każdej nazwy obsługiwanej przez ten serwer należy stworzyć osobny blok dyrektyw w postaci :

 

<VirtualHost IP_naszego_serwera >
ServerName nazwa_hosta_1.nasza_domena
SerwerAlias alias1, alias2
DocumentRoot /ścieżka_do_katalogu_hosta_1/
TransferLog /ścieżka_do_katalogu_hosta_1/logs/acces_log
ErrorLog / ścieżka_do_katalogu_hosta_1/logs/error_log

</VirtualHost>

<VirtualHost IP_naszego_serwera >
ServerName nazwa_hosta_2.nasza_domena
SerwerAlias alias1, alias2
DocumentRoot /ścieżka_do_katalogu_hosta_2/
TransferLog /ścieżka_do_katalogu_hosta_2/logs/acces_log
ErrorLog / ścieżka_do_katalogu_hosta_2/logs/error_log

</VirtualHost>

 

W blokach konfiguracyjnych pojawia się dyrektywa SerwerAlias .
Dyrektywą tą możemy określić aliasy dla nazwy naszego serwera wirtualnego, dzięki czemu użytkownicy będą mogli używać skróconej nazwy hosta, np.:

zamiast
http://nazwa_hosta_1.nasza_domena/
można użyć nazwy
http://alias1/

 

Wewnątrz bloku <VirtualHost> </VirtualHost> możemy podawać dowolne dyrektywy konfiguracyjne, które zostały omówione w poprzednich rozdziałach oprócz dyrektyw :

ServerType, StartServers, MaxSpareServers, MinSpareServers, MaxRequestsPerChild, BindAddress, Listen, PidFile, TypesConfig, ServerRoot .

Jeśli planujemy uruchomienie na naszym serwerze większej ilości hostów wirtualnych, dobrym rozwiązaniem jest umieszczenie wszystkich komunikatów w jednym pliku dziennika błędów, zamiast w osobnych plikach. Dzięki temu rozwiązaniu unikniemy wyczerpania się systemowego limitu liczby deskryptorów plików (zwykle 64 dla jednego procesu), co mogłoby spowodować brak wpisów w dziennikach lub długi czas oczekiwania na odpowiedź serwera po pojawieniu się żądania HTTP.

 

Serwery wirtualne identyfikowane adresami IP

Konfiguracja tego typu serwerów jest dobrym rozwiązaniem, jeśli posiadamy dużą pulę adresów publicznych. Wówczas każdemu interfejsowi w naszym systemie możemy przypisać jeden adres IP.

Konfiguracja tego typu serwerów jest adekwatna do konfiguracji serwerów identyfikowanych nazwami domenowymi, z wyjątkiem braku dyrektywy NameVirtualHost.

Jeśli skonfigurowaliśmy poprawnie interfejsy sieciowe, to uruchomienie hostów wirtualnych ogranicza się do dodania w pliku httpd.conf kilku prostych dyrektyw w postaci :

 

<VirtualHost adres_IP_dla pierwszego_hosta_1 >
ServerName www.nazwa_hosta_1.nasza.domena
DocumentRoot /ścieżka_do_katalogu_hosta_1/
TransferLog /ścieżka_do_katalogu_hosta_1/logs/acces_log
ErrorLog / ścieżka_do_katalogu_hosta_1/logs/error_log

</VirtualHost>

 

Podobne bloki należy dodać dla każdego uruchamianego serwera, nie zapominając o zmianie ścieżek dostępu do ich katalogów.

 

Przykładowy plik konfiguracyjny : httpd.conf

GRUPA MEDIA INFORMACYJNE & ADAM NAWARA