Jak zarządzać dynamicznymi wirtualnymi hostami za pomocą modułu MOD_VHOST_ALIAS

Jak zarządzać dynamicznymi wirtualnymi hostami za pomocą modułu MOD_VHOST_ALIAS

Serwer WWW Apache ma możliwość obsługi wielu stron z tego samego adresu IP, używając wirtualnych hostów. Każdy wirtualny host można skonfigurować w głównym pliku konfiguracyjnym serwera lub dzięki Włączać albo Obejmują
dyrektywy, na własną dedykowaną. Kiedy liczba wirtualnych gospodarzy wzrasta, ich zarządzanie zaczyna stać się kłopotliwe. Jeśli ich konfiguracja jest dość podobna, możemy zarządzać nimi dynamicznie, dzięki mod_vhost_alias moduł. W tym samouczku zobaczymy, jak to zrobić.

W tym samouczku się nauczysz:

  • Co to jest wirtualny host Apache
  • Jak sprawdzić, czy moduł mod_vhost_alias jest włączony
  • Jak załadować moduł MOD_VHOST_ALIAS w rodzinie dystrybucji Debian i Red Hat
  • Jak zarządzać dynamicznymi wirtualnymi hostami za pomocą modułu mod_vhost_alias

Zastosowane wymagania i konwencje oprogramowania

Wymagania oprogramowania i konwencje linii poleceń Linux
Kategoria Wymagania, konwencje lub wersja oprogramowania
System Niezależny dystrybucja
Oprogramowanie Apache Serwer WWW
Inny Uprawnienia korzeniowe
Konwencje # - Wymaga, aby podane Linux -commands były wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
$-wymaga wykonania Linux-commands jako zwykłego niewidzianego użytkownika

Szybki wirtualny przegląd hosta

Jak już wspomnieliśmy we wstępie, serwer WWW Apache ma możliwość obsługi wielu stron internetowych za pomocą wirtualnych hostów i właściwej konfiguracji DNS. Poniższy to minimalna, ale typowa wirtualna definicja hosta:

 Servername www.test.Test LAN Serveralias.Lan Documentroot/var/www/www.test.Lan  


Ta konfiguracja będzie zarządzać żądaniami użytkownika do www.test.Lan adres, który jest wartością ustawioną przez Nazwa serwera dyrektywa, ale także test.Lan, który jest Serveralias. Z DocumentRoot Dyrektywa ustawiliśmy katalog podstawowy, z którego należy obsługiwać pliki powiązane z hostem wirtualnym, co w tym przypadku jest /var/www/www.test.Lan.

Wirtualny host można zdefiniować w pliku konfiguracyjnym głównego serwera (/etc/httpd/conf/httpd.conf O rodzinie dystrybucji Red Hat, /etc/apache2/apache2.conf na temat systemów debian i jego instrumentów pochodnych) lub może być napisane we własnym pliku i zawarte z głównej konfiguracji. Rzeczywiście, jeśli spojrzymy na konfigurację Apache w głównych dystrybucjach Linux, możemy zobaczyć, że pliki wirtualnych hostów są zawarte za pośrednictwem Obejmują dyrektywa z jakiegoś konkretnego katalogu.

Na przykład w Fedory i powiązanych rozkładach znaleźliśmy następującą konfigurację na końcu pliku:

# Załaduj pliki konfiguracyjne w "/etc/httpd/conf.D ”, jeśli taki w ogóle. Obejmują conf.D/*.conf 

Zamiast tego na Debian:

# Dołącz konfiguracje wirtualnego hosta: Obliczowe witryny-obsługujące/*.conf 

Możemy zauważyć, że ścieżka, z której należy uwzględnić pliki, jest względna root serwera. Obejmują Dyrektywa służy do uwzględnienia wirtualnych plików hosta, które należy wymienić za pomocą .conf przyrostek. Tutaj Włączać Można również zastosować dyrektywa; Jaka jest różnica między nimi? Oba działają dokładnie w ten sam sposób, Obejmują Dyrektywa nie powoduje jednak błędu, gdy używane są wieloznaczne (jak w tym przypadku) i nie znaleziono dopasowania, ani jeśli ścieżka nie istnieje, ogólnie.

Aby ta konfiguracja działała, należy również skonfigurować odpowiedni wpis DNS. Jeśli jednak pracuje lokalnie, możemy po prostu dodać linię w /etc/hosts plik. Na przykład:

127.0.0.1 www.test.Lan 

Kiedy konfiguracje wirtualnych hostów zaczyna rosnąć, ich zarządzanie może z łatwością stać się kłopotliwe. Możliwym rozwiązaniem tego problemu jest użycie dynamicznie generowanych wirtualnych hostów. Zobaczmy, jak to zrobić z mod_vhost_alias moduł.

Ładowanie modułu mod_vhost_alias

Pierwszą rzeczą, którą musimy zrobić, to sprawdzić, czy mod_vhost_alias Moduł jest włączony. Polecenie, które chcemy uruchomić w tym celu, zależy od rozkładu, którego używamy. W przypadku Fedory i innym dystrybucji rodziny Red Hat możemy skorzystać z następujących czynności:

$ httpd -m | grep -i vhost_alias 

Zamiast tego na Debian:

$ apachectl -m | grep -i vhost_alias 

Przekazując -M opcja do httpd (Lub Apachectl) polecenie, otrzymujemy listę załadowanych modułów statycznych i wspólnych; Prowadzenie wyjścia do GREP, możemy sprawdzić, czy jest w nim potrzebny moduł. W przypadku, gdy moduł nie jest ładowany, na Debian i jego pochodne możemy uruchomić następujące polecenie:

$ sudo a2enmod vhost_alias && sudo systemctl restart apache2 


A2enmod polecenie tworzy symboliczny link do /etc/apache2/mods-dostępna/mod_vhost_alias.Więc złożyć do /etc/apache2/mods-obsługuje katalog (podobnie jak to A2ENSITE polecenie wykonuje konfiguracje wirtualnych hostów), z których moduły są ładowane z.

W rodzinie dystrybucji Red Hat lista załadowanych modułów podstawowych znajduje się w /etc/httpd/conf.moduły.d/00 baza.conf plik. Każdy moduł jest ładowany Module load dyrektywa. Jeśli z jakiegoś powodu vhost_alias Linia modułu (67) jest komentowana, po prostu usuń komentarz, zapisz modyfikację i ponownie załaduj usługę HTTPD:

$ sudo systemctl restart httpd 

Po włączeniu modułu możemy kontynuować faktyczną konfigurację.

Tworzenie dynamicznych wirtualnych hostów

Konfiguracja, którą tworzymy, opiera się na tym, że mod_vhost_alias Moduł przechowuje komponenty rozdzielone przez kropki żądanej nazwy wirtualnego hosta wewnątrz niektórych zmiennych. Jeśli weźmiemy www.test.Lan Wirtualny host Jako przykład będziemy mieli:

  • %0: Cała nazwa wirtualnego hosta
  • %1: „www”
  • %2: „Test”
  • %3: „Lan”

Można również użyć liczb ujemnych, więc na przykład będziemy mieli:

  • %-1 Ostatnia część nazwy, w tym przypadku „LAN”
  • %-2 przedostatnia część, w tym przypadku „test”

Możliwe jest nawet określenie każdego elementu wirtualnej nazwy hosta z określonego portu lub wstecz. Na przykład, %2+ oznacza „od drugiej części” i %-2+ „powoduje przedostatnie komponent i wszystkie elementy, które poprzedzają go, aby zostać uwzględnione.

Przypuśćmy, że chcemy użyć /var/www/ katalog jako baza wszystkich naszych wirtualnych hostów, możemy utworzyć następującą konfigurację w pliku, nazwijmy to dynamic_vhost.conf:

 UsecanonicalName Off VirtualDocumentroot "/var/www/%-2"  

Wyjaśnijmy powyższą konfigurację. Przede wszystkim użyliśmy UsecanonicalName dyrektywa i ustaw ją na „wyłączone”: zrobiliśmy to, aby upewnić się, że nazwa serwera jest pobierana z nagłówka „host:” w żądaniu HTTP. Nie użyliśmy VirtualDocumentroot dyrektywa. Dyrektywa jest potrzebna do ustawienia dynamicznej ścieżki dla głównego dokumentu wirtualnego hosta, za pomocą zmiennych, które widzieliśmy powyżej, które są oceniane podczas zarządzania żądaniem.

Kiedy www.test.Lan Poproszony jest wirtualny host, automatycznie pliki, które należy podać, zostaną przeszukane w środku /var/www/test informator. Użycie %-2 indeks ujemny ma tę zaletę, że konfiguracja będzie działać zarówno z www.test.Lan i dla test.Lan, Ponieważ działa wstecz.

To oczywiście tylko przykład tego, co można osiągnąć za pomocą mod_vhost_alias moduł i możesz utworzyć konfigurację, która lepiej Ci odpowiada.



Niedogodności

Ten rodzaj konfiguracji jest dość praktyczny, jeśli cały wirtualny host, którym zarządzamy, są dość podobne i wymagają tej samej konfiguracji, ale ma swoje wady, które mogą być dość istotne w zależności od sytuacji. Po pierwsze, nie będzie możliwe określenie ustawień specyficznych dla wirtualHost, jeśli nie przy użyciu .pliki htaccess); Tego rodzaju konfiguracja spowoduje również problemy, jeśli zostanie użyte wraz ze standardowymi konfiguracjami wirtualnego hosta. Wreszcie żądania wszystkich wirtualnych hostów zostaną zalogowane w tym samym pliku.

Wnioski

Serwer WWW Apache może obsługiwać wiele stron internetowych i zasobów z jednego komputera dzięki korzystaniu z wirtualnych hostów. Gdy liczba wirtualnych hostów zaczyna rosnąć liczba, może stać się trudna do zarządzania nimi, jeśli każdy ma własny plik konfiguracyjny/sekcja. Jeśli mają podobne ustawienia, możemy obejść ten problem przy użyciu dynamicznie generowanych wirtualnych hostów, korzystając z mod_vhost_alias moduł.

W tym artykule zobaczyliśmy, jak sprawdzić, czy ten moduł jest włączony i jak go włączyć w rodzinach dystrybucji Debian i Red Hat. Widzieliśmy również, w jaki sposób komponenty nazwy wirtualnej hosta są przechowywane w zmiennych i jak je używać do tworzenia dynamicznych wirtualnych hostów. Na koniec widzieliśmy, jakie są wady korzystania z tej konfiguracji.

Powiązane samouczki Linux:

  • Jak migrować Apache do Nginx, przekształcając wirtualne hosty na…
  • Firefox na Linux - Twoje połączenie nie jest bezpieczne
  • Porównanie Linux Apache Prefork vs Pracowni
  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Jak zainstalować Ubuntu 20.04 na VirtualBox
  • Lista najlepszych narzędzi Kali Linux do testowania penetracji i…
  • Apache IP i oparte na nazwach wirtualne hosty
  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Mint 20: Lepsze niż Ubuntu i Microsoft Windows?