Crmgo Blog

Dyrektywy http.conf

Dyrektywy http.conf

ServerRoot Ścieżka do plików wykonywalnych serwera HTTP Apache. Listen Ustawia port i adres IP, które Apache „nasłuchuje”. Domyślnie wszystkie przeglądarki próbują nawiązać połączenie HTTP z serwerem Apache przez port 80. Jeśli ustawisz inny numer portu, na przykład 9031, aby otworzyć stronę w…

Dyrektywy http.conf

ServerRoot Ścieżka do plików wykonywalnych serwera HTTP Apache. Listen Ustawia port i adres IP, „nasłuchiwany” przez Apache. Domyślnie wszystkie przeglądarki próbują nawiązać połączenie HTTP z serwerem Apache przez port 80. Jeśli ustawimy inny numer portu, na przykład 9031, aby otworzyć stronę w przeglądarce, po adresie strony należy dodatkowo podać port, oddzielony dwukropkiem, na przykład: http://localhost:9031. Ponadto w tej dyrektywie można wskazać jeden adres IP, który będzie obsługiwany przez Apache (na przykład Listen 192.168.0.10:80), jeśli komputer posiada dwa lub więcej adresów IP. DocumentRoot Dyrektywa ta w pliku httpd.conf określa katalog, w którym znajdują się pliki html i inne pliki jednej strony internetowej. W przypadku konieczności obsługi dwóch lub więcej stron przez jeden serwer Apache należy użyć dyrektywy-kontenera <VirtualHost></VirtualHost>. Przy korzystaniu z wirtualnych hostów nie należy zapominać o konfiguracji uprawnień dostępu do katalogu wskazanego w linii „DocumentRoot”, ponieważ strony z tego katalogu będą wyświetlane użytkownikom, którzy wpisali domenę niezdefiniowaną w VirtualHost. <Directory>
...
</Directory>

Dyrektywy umieszczone wewnątrz kontenera Directory będą miały wpływ na wszystkie pliki i foldery wskazanego katalogu. Ścieżka do katalogu podawana jest bezpośrednio po słowie Directory, na przykład: blok kodu
<Directory "C:/apache2.2.19/htdocs"> ... dyrektywy ... </Directory>

kod konfiguruje zachowanie wskazanego katalogu. Zamiast nazwy katalogu można użyć wyrażeń regularnych. Options Dyrektywa Options określa, jakie funkcje serwera są dostępne w danym katalogu.

  • All – dozwolone są wszystkie opcje, z wyjątkiem MultiViews (ustawiane domyślnie).
  • None – wszystkie opcje są zabronione.
  • ExecCGI – dozwolone jest wykonywanie skryptów CGI.
  • FollowSymLinks – serwer będzie podążał za dowiązaniami symbolicznymi w tym katalogu.
  • Includes – dozwolone jest SSI (Server-Side Includes).
  • IncludesNOEXEC – SSI jest dozwolone, ale polecenia #exec i #include w skryptach CGI są zablokowane.
  • Indexes – jeśli żądany URL odpowiada katalogowi, a w tym katalogu nie ma nic odpowiadającego DirectoryIndex (na przykład Index.htm), serwer zwróci listę wszystkich plików i katalogów.
  • MultiViews – dozwolone jest negocjowanie treści (MultiViews).
  • SymLinksIfOwnerMatch – serwer będzie podążał tylko za tymi dowiązaniami symbolicznymi, dla których plik docelowy lub katalog mają ten sam identyfikator użytkownika, co samo dowiązanie.
Jeśli kilka opcji dyrektywy Options jest stosowanych do katalogu, a następnie inne opcje są stosowane do jego podkatalogu, opcje katalogu nadrzędnego nie są dziedziczone przez podkatalog.
Przykład nr 1 – dziedziczenie opcji:
<Directory "c:/www"> Options Indexes FollowSymLinks </Directory>

<Directory "c:/www/otherdir">
Options Includes
</Directory>

W tym przykładzie do katalogu c:/www i wszystkich jego podkatalogów, z wyjątkiem c:/www/otherdir, przypisane są opcje „Indexes” i „FollowSymLinks”. Podkatalog c:/www/otherdir i wszystkie jego podkatalogi mają natomiast przypisaną tylko opcję „Includes”.

Używając symboli "+" i "-", można dodać lub usunąć dowolną opcję dla podkatalogu.
Przykład nr 2 – dziedziczenie opcji:
<Directory "c:/www"> Options Indexes FollowSymLinks </Directory>

<Directory "c:/www/otherdir">
Options +Includes -Indexes
</Directory>

W tym przypadku katalog c:/www/otherdir będzie posiadał opcje "FollowSymLinks" (dodaną dla katalogu nadrzędnego) oraz "Includes" – dodaną za pomocą znaku "+". Opcja "Indexes" została usunięta z katalogu c:/www/otherdir za pomocą znaku "-". AllowOverrideOpcja AllowOverride wskazuje Apache’owi, które dyrektywy w pliku .htaccess są dozwolone (nazwa pliku ".htaccess" lub dowolna inna jest określana przez dyrektywę AccessFileName).

  • All – dostępne są wszystkie dyrektywy (używane domyślnie).
  • None – plik .htaccess nie jest przetwarzany.
  • AuthConfig – dopuszcza użycie dyrektyw dotyczących autoryzacji (AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, require itp.).
  • FileInfo – dopuszcza użycie dyrektyw zarządzających typami dokumentów (AddEncoding, AddLanguage, AddType, DefaultType, ErrorDocument, LanguagePriority itp.).
  • Indexes – dopuszcza użycie dyrektyw zarządzających indeksowaniem katalogu (AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName itp.).
  • Limit – dopuszcza użycie podstawowych dyrektyw zarządzających dostępem (allow, deny i order).
  • Options[=Option,...] – dopuszcza użycie dyrektyw zarządzających specyficznymi cechami katalogu (Options i XBitHack).
Ze względów wydajnościowych oraz maksymalnego bezpieczeństwa głównego katalogu serwera HTTP Apache "/", określonego w kontenerze <Directory />, należy ustawić wartość AllowOverride na None: AllowOverride None.

Order Dyrektywa Order zarządza domyślnym stanem dostępu oraz kolejnością, w której dostęp jest przyznawany lub odmawiany. Order może przyjmować 3 wartości:

  • Allow,Deny – dostęp domyślnie jest zabroniony, z wyjątkiem hostów wymienionych w linii po Allow from.
  • Deny,Allow – dostęp domyślnie jest dozwolony, z wyjątkiem hostów wymienionych w linii po Deny from.
  • Mutual-failure – dostęp jest przyznawany tylko tym hostom, które znajdują się na liście Allow i nie ma ich na liście Deny.
Najczęściej stosowane są wartości Allow, Deny oraz Deny, Allow. Domyślna wartość jest określana przez ostatnie słowo (Allow lub Deny). Między słowami Allow i Deny w dyrektywie Order musi znajdować się tylko przecinek, bez spacji.
W przykładach nr 1-3 dla skrócenia pominięto otwierający i zamykający kontener <Directory ...></Directory>, który jest wymagany podczas konfiguracji Apache’a.
Przykład nr 1, w pierwszej linii „Order Deny,Allow”, określa kolejność odczytywania uprawnień dostępu: najpierw odczytywane są wszystkie uprawnienia zabraniające dostępu (Deny from...), a następnie uprawnienia zezwalające (Allow from). Domyślnie ustawiane jest Allow. Druga linia „Deny from all” zabrania dostępu wszystkim hostom do wszystkich domen. Trzecia linia „Allow from apache.org” zezwala na dostęp do domeny apache.org.
Przykład nr 1 nadawania uprawnień dostępu
Order Deny,Allow Deny from all Allow from apache.org
Następny przykład nr 2 zezwala na dostęp tylko do domeny apache.org, z wyjątkiem poddomeny foo.apache.org (Deny from foo.apache.org). Wszystkie pozostałe domeny będą niedostępne.
Przykład nr 2 nadawania uprawnień dostępu
Order Allow,Deny Allow from apache.org Deny from foo.apache.org
Przykład nr 3 różni się od nr 2 tylko wartością Order: „Deny,Allow” zamiast „Allow,Deny”. Jednak logika przyznawania uprawnień dostępu przez Apache’a zmieni się, na pierwszy rzut oka, w dość nieoczekiwany sposób. Dostęp będzie otwarty dla absolutnie wszystkich domen, nawet dla poddomeny foo.apache.org, która została wyraźnie zabroniona w linii „Deny from foo.apache.org”. Dzieje się tak dlatego, że kolejność linii „Allow from ...” i „Deny from ...” nie ma znaczenia. Kolejność stosowania reguł jest określana przez dyrektywę Order, w związku z czym Apache najpierw zabrania dostępu do foo.apache.org, a następnie nadpisuje tę regułę, wynikającą z dyrektywy „Allow from apache.org”.
Przykład nr 3 nadawania uprawnień dostępu
Order Deny,Allow Allow from apache.org Deny from foo.apache.org
Przykład nr 4 zabrania dostępu do katalogu C:/www domyślnie, nawet bez użycia linii „Deny from ...”.
Przykład nr 4 nadawania uprawnień dostępu
<Directory "C:/www"> Order Allow,Deny </Directory>

Dodatkowe informacje na temat dyrektyw Allow, Deny i Order można uzyskać z oficjalnej dokumentacji Apache2.2 (ang.). <VirtualHost>
...
</VirtualHost>

Kontener <VirtualHost>...</VirtualHost> służy do obsługi przez jeden serwer Apache różnych witryn. Wszystkie dyrektywy zapisane w kontenerze VirtualHost są stosowane wyłącznie do jednej witryny. Jedna witryna (zbiór plików i katalogów) może być dostępna pod jednym lub więcej domenami lub adresami IP.
Może zostać zdefiniowana specjalna nazwa _default_, która oznacza, że ten konkretny wirtualny host będzie odpowiadał na każdy adres IP, który nie został jawnie określony w deklaracji innego wirtualnego hosta. Jeśli w konfiguracji serwera nie ma deklaracji wirtualnego hosta _default_, a żądanie nie pasuje do żadnego z znanych wirtualnych hostów, do odpowiedzi używany jest serwer główny, którego katalog główny jest określony w dyrektywie DocumentRoot.
Wewnątrz każdego kontenera VirtualHost można używać praktycznie dowolnych dyrektyw Apache, co pozwala na szczegółowe konfigurowanie każdej witryny.
Przykład obsługi dwóch różnych witryn przez jeden serwer Apache
<VirtualHost *:80> ServerName first.loc ServerAlias www.first.loc DocumentRoot "c:/www/first.loc/public" ErrorLog "c:/www/first.loc/logs/error.log" </VirtualHost>

<VirtualHost *:80>
ServerName second.loc
ServerAlias www.second.loc
DocumentRoot "c:/www/second.loc/public"
ErrorLog "c:/www/second.loc/public"
</VirtualHost>

Uwaga: wpis mógł powstać z pomocą AI i redakcji. Odpowiedzialny: Dmytro Lomaka, Kaltenkirchen.