Dyrektywy blokowe serwera HTTP Apache

 Apache udostępnia cały szereg tzw. dyrektyw blokowych (ang. block directives). Dyrektywy te pozwalają na ograniczenie innych zawartych w nich dyrektyw określonych dla plików, katalogów czy serwerów wirtualnych. Dyrektywy blokowe stanowią, więc rodzaj kontenera dla innych dyrektyw, które są wykonywane tylko i wyłącznie w obrębie danej dyrektywy blokowej i są one niezwykle istotne dla administrowania serwerem.

Dyrektywa blokowa na następującą składnie:

<dyrektywa blokowa>

</dyrektywa blokowa>

Poniżej przedstawię dyrektywy blokowe oraz dyrektywy używane wewnątrz dyrektyw blokowych przez serwer Apache.

<VirtualHost>

Dyrektywa blokowa używaną przez Apache do definiowania tzw. serwerów wirtualnych. Jeśli na przykład mamy domenę o nazwie moja_firma.com.pl i chcemy utworzyć oddzielna stronę dla biura w tej firmie np. biuro.moja_firma.com.pl to właśnie do tego celu używamy <VirtualHost>.

Dostępne dyrektywy:

  • ServerAdmin – adres emal administratora serwera wirtualnego
  • DocumentRoot – ścieżka dostępu do katalogu z plikami serwera wirtualnego
  • SerwerName – nazwa domeny serwera wirtualnego
  • ErrorLog – ścieżka do pliku error.log w którym zapisywane SA błędy w działaniu serwera
  • TransferLog – ścieżka do pliku acces.log

 

Przykład:

<VirtualHost biuro.moja_firma.com.pl>

        ServerAdmin aminek@moja_firma.com.pl

       DocumentRoot /usr/www_virtual/biuro

       SerwerName biuro.moja_firma.com.pl

       ErrorLog /usr/www_virtual/biuro/logs/error_log

      TransferLog /usr/www_virtual/biuro/logs/access_log

</VirtualHost>

 

Kolejne trzech dyrektyw blokowych, (Directory, Files, Location), zostaną przedstawione w kolejności rosnącej, co oznacz ze dyrektywa Directory może zostać zmodyfikowana przez Files, a ta musi ustąpić pierwszeństwa Location.

<Directory> i <DirecoryMatch>

Zapis:

<Directory Nazwa_katalogu>

</Directory>

Dyrektywa ta pozwala na ograniczenie zasięgu działania dyrektyw do wybranego katalogu lub grupy katalogów. Nazwa katalogu może zawierać symbole wieloznaczności „?” (dowolny znak) i „*” (dowolny ciąg dowolnych znaków), a również nawiasy kwadratowe ([ ]), służące do definiowania grup znaków. Na przykład [a-d] oznacza dowolny znak z ciągu a, b, c, d. Umieszczenie tyldy (~) na początku nazwy katalogu pozwala na użycie wyrażeń regularnych.

Wyrażenia regularne (ang. regular expressions) to wzorce, które opisują łańcuchy symboli. Teoria wyrażeń regularnych jest związana z teorią tworzenia tzw. języków naturalnych. Wyrażenia regularne mogą określać zbiór pasujących łańcuchów, mogą również wyszczególniać istotne części łańcucha.
Dyrektywa <DirectoryMatch> działa tak samo jak <Direktory>, tj. akceptuje definicję nazwy katalogu w postaci wyrażeń regularnych, tak więc zapis <Directory ~/katalog> i <Directory /katalog> są identyczne.

Dyrektywy te można użyć w konfiguracji głównej oraz serwerach wirtualnych.

<Files> i <FilesMatch>

Zapis:

<Files nazwa_pilku>

</Files>

Dyrektywy tej używa się dla ograniczenia określonego pliku podanego w parametrze nazwa_pliku. Dyrektywa <FileMatch> używana jest wraz z wyrażeniem regularnym nie poprzedzonym znakiem tyldy.

Aby ograniczyć obsługiwanie przez serwer tylko plików graficznych z rozszerzeniem *.gif, *.jpg musimy użyć dyrektywy <FileMatch „.gif|jpg”>.

Dyrektywę tą używamy w konfiguracji głównej, serwerach wirtualnych oraz plikach .htaccess.

<Location> i <LocationMatch>

Zapis:

<Location adres-url>

</Location>

Użycie tych dyrektyw pozwala na ograniczenia zasięgu działania bloku dyrektyw do zadanych adresów URL.

Dyrektywy te używa się w konfiguracji głównej oraz serwerach wirtualnych.

<IfDefine>

Zapis:

<IfDefine nazwa>

</IfDefine>

Dyrektywa ta pozwala na warunkowe uaktywnienie bloku dyrektyw w przypadku uruchomienia Apache z opcja –D nazwa. Pozwala to na zamkniecie w osobnym pliki httpd.conf osobnych wariantów konfiguracyjnych. Przydaje się to głównie podczas tworzenia i testowania tworzonych witryn. W przypadku regularnie działających witryn nie jest to stosowane.

<IfModule>

Zapis:

<IfModule [!]Nazwa_modułu>

</IfModule>

Dyrektywa pozwala na warunkowe uaktywnienie bloku dyrektyw w zależności od tego czy moduł o danej nazwie jest dołączony (podczas kompilacji lub dynamicznie przez załadowanie biblioteki dll) do programu Apache. Poprzedzenie nazwy modułu wykrzyknikiem powoduje uaktywnienie modułu, jeśli nie został on dołączony do programu.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *