Wyszukiwanie w witrynie

Jak skonfigurować hosty wirtualne oparte na nazwach i adresach IP (bloki serwerów) za pomocą NGINX


W stosunkowo krótkim czasie od opracowania i udostępnienia (nieco ponad 10 lat) Nginx odnotował trwały i stały wzrost liczby serwerów internetowych ze względu na wysoką wydajność i niskie zużycie pamięci.

Ponieważ Nginx jest oprogramowaniem wolnym i otwartym, zostało ono przyjęte przez tysiące administratorów serwerów internetowych na całym świecie, nie tylko na serwerach Linux i *nix, ale także w systemie Microsoft Windows.

Nie przegap: wirtualny hosting oparty na nazwach Apache i IP

Dla tych z nas, którzy są przyzwyczajeni do Apache, Nginx może wymagać nieco dłuższej nauki (przynajmniej tak było w moim przypadku), ale z pewnością się to opłaci, gdy skonfigurujesz kilka witryn i zacznij wyświetlać statystyki ruchu i wykorzystania zasobów.

W tym artykule wyjaśnimy, jak używać Nginx do skonfigurowania wirtualnego hostingu opartego na nazwie i opartego na adresie IP w CentOS/RHEL 7 i Debian 8 oraz pochodne, począwszy od Ubuntu 15.04 i jego wersji pobocznych.

Nasz scenariusz testowy dla tego artykułu jest następujący:

  1. System operacyjny: serwer Debian 8 Jessie [IP 192.168.0.25]
  2. Brama: Router [IP 192.168.0.1]
  3. Serwer internetowy: Nginx 1.6.2-5
  4. Akceptowane domeny: www.tecmintlovesnginx.com i www.nginxmeanspower.com.

Instalowanie serwera WWW Nginx

Jeśli jeszcze tego nie zrobiłeś, zainstaluj Nginx, zanim przejdziesz dalej. Jeśli potrzebujesz pomocy na początek, szybkie wyszukiwanie nginx w tej witrynie spowoduje zwrócenie kilku artykułów na ten temat. Kliknij ikonę lupy na górze tej strony i wyszukaj słowo kluczowe nginx. Jeśli nie wiesz, jak wyszukiwać artykuły na tej stronie, nie martw się, dodaliśmy linki do artykułów nginx, po prostu przejdź i zainstaluj je zgodnie z odpowiednimi dystrybucjami Linuksa.

  1. Zainstaluj i skompiluj Nginx ze źródeł w RHEL/CentOS 7
  2. Zainstaluj serwer WWW Nginx na Debianie 8
  3. Zainstaluj Nginx z MariaDB i PHP/PHP-FPM na Fedorze 23
  4. Zainstaluj serwer WWW Nginx na serwerze/komputerze Ubuntu 15.10
  5. Katalogi stron internetowych Nginx chroń hasłem

Następnie przygotuj się do kontynuowania dalszej części tego samouczka.

Tworzenie wirtualnych hostów opartych na nazwach w Nginx

Jestem pewien, że już wiesz, wirtualny host to witryna internetowa obsługiwana przez Nginx na pojedynczym serwerze VPS w chmurze lub serwerze fizycznym. Jednak w dokumentacji Nginx zamiast tego znajdziesz termin „bloki serwera”, ale w zasadzie są to te same rzeczy, nazywane różnymi nazwami.

Pierwszym krokiem do skonfigurowania wirtualnych hostów jest utworzenie jednego lub więcej bloków serwera (w naszym przypadku utworzymy dwa, po jednym dla każdej fałszywej domeny) w głównym pliku konfiguracyjnym (/etc/nginx/nginx.conf) lub wewnątrz /etc/nginx/sites-available.

Chociaż nazwę plików konfiguracyjnych w tym katalogu (sites-available) można ustawić na dowolną, dobrym pomysłem jest użycie nazw domen, a dodatkowo zdecydowaliśmy się dodać .conf, aby wskazać, że są to pliki konfiguracyjne.

Te bloki serwerowe mogą być stosunkowo złożone, ale w swojej podstawowej formie składają się z następującej treści:

W /etc/nginx/sites-available/tecmintlovesnginx.com.conf:

server {  
    listen       80;  
    server_name  tecmintlovesnginx.com www.tecmintlovesnginx.com;
    access_log  /var/www/logs/tecmintlovesnginx.access.log;  
    error_log  /var/www/logs/tecmintlovesnginx.error.log error; 
        root   /var/www/tecmintlovesnginx.com/public_html;  
        index  index.html index.htm;  
}

W /etc/nginx/sites-available/nginxmeanspower.com.conf:

server {  
    listen       80;  
    server_name  nginxmeanspower.com www.nginxmeanspower.com;
    access_log  /var/www/logs/nginxmeanspower.access.log;  
    error_log  /var/www/logs/nginxmeanspower.error.log error;
    root   /var/www/nginxmeanspower.com/public_html;  
    index  index.html index.htm;  
}

Możesz użyć powyższych bloków, aby rozpocząć konfigurowanie wirtualnych hostów lub możesz utworzyć pliki z podstawowym szkieletem z /etc/nginx/sites-available/default (Debian ) lub /etc/nginx/nginx.conf.default (CentOS).

Po skopiowaniu zmień ich uprawnienia i własność:

chmod 660  /etc/nginx/sites-available/tecmintlovesnginx.com.conf
chmod 660  /etc/nginx/sites-available/nginxmeanspower.com.conf

Debian i pochodne

chgrp www-data  /etc/nginx/sites-available/tecmintlovesnginx.com.conf
chgrp www-data  /etc/nginx/sites-available/nginxmeanspower.com.conf

CentOS i RHEL

chgrp nginx  /etc/nginx/sites-available/tecmintlovesnginx.com.conf
chgrp nginx  /etc/nginx/sites-available/nginxmeanspower.com.conf

Kiedy skończysz, usuń przykładowy plik lub zmień jego nazwę na inną, aby uniknąć nieporozumień i konfliktów.

Pamiętaj, że będziesz musiał także utworzyć katalog na logi (/var/www/logs) i nadać użytkownikowi Nginx (nginx lub www-data , w zależności od tego, czy używasz CentOS, czy Debiana) uprawnienia do odczytu i zapisu na nim:

mkdir /var/www/logs
chmod -R 660 /var/www/logs
chgrp <nginx user> /var/www/logs

Należy teraz włączyć hosty wirtualne, tworząc dowiązanie symboliczne do tego pliku w katalogu obsługującym witryny:

ln -s /etc/nginx/sites-available/tecmintlovesnginx.com.conf /etc/nginx/sites-enabled/tecmintlovesnginx.com.conf
ln -s /etc/nginx/sites-available/nginxmeanspower.com.conf /etc/nginx/sites-enabled/nginxmeanspower.com.conf

Następnie utwórz przykładowy plik HTML o nazwie index.html w /var/www//public_html dla każdego z wirtualnych hostów (zamień w razie potrzeby). W razie potrzeby zmodyfikuj następujący kod:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Tecmint loves Nginx</title>
  </head>
  <body>
  <h1>Tecmint loves Nginx!</h1>
  </body>
</html>

Na koniec przetestuj konfigurację Nginx i uruchom serwer WWW. Jeśli w konfiguracji wystąpią jakieś błędy, zostaniesz poproszony o ich poprawienie:

nginx -t && systemctl start nginx

i dodaj następujące wpisy do pliku /etc/hosts na komputerze lokalnym jako podstawową strategię rozpoznawania nazw:

192.168.0.25 tecmintlovesnginx.com
192.168.0.25 nginxmeanspower.com

Następnie uruchom przeglądarkę internetową i przejdź do adresów URL wymienionych powyżej:

Aby dodać więcej wirtualnych hostów w Nginx, po prostu powtórz powyższe kroki tyle razy, ile potrzeba.

Hosty wirtualne oparte na protokole IP w Nginx

W przeciwieństwie do hostów wirtualnych opartych na nazwach, w których wszystkie hosty są dostępne za pośrednictwem tego samego adresu IP, hosty wirtualne oparte na adresie IP wymagają innego IP:port kombinację każdego.

Dzięki temu serwer WWW może zwracać różne witryny w zależności od adresu IP i portu, na którym otrzymano żądanie. Ponieważ hosty wirtualne oparte na nazwach dają nam tę zaletę, że dzielą adres IP i port, są one standardem dla serwerów WWW ogólnego przeznaczenia i powinny być konfiguracją z wyboru, chyba że zainstalowana wersja Nginx nie obsługuje Wskazywania nazwy serwera (SNI), albo dlatego, że jest to NAPRAWDĘ przestarzała wersja, albo dlatego, że została skompilowana bez opcji kompilacji –with-http_ssl_module.

Jeśli,

nginx -V

nie zwraca podświetlonych opcji poniżej:

będziesz musiał zaktualizować swoją wersję Nginx lub przekompilować ją, w zależności od oryginalnej metody instalacji. Aby skompilować Nginx, postępuj zgodnie z poniższym artykułem:

  1. Zainstaluj i skompiluj Nginx ze źródeł w RHEL/CentOS 7

Zakładając, że wszystko gotowe, musimy zauważyć, że kolejnym warunkiem wstępnym dla hostów wirtualnych opartych na protokole IP jest dostępność oddzielnych adresów IP – albo poprzez przypisanie ich do odrębnych interfejsów sieciowych, albo poprzez użycie wirtualnych Adresy IP (znane również jako aliasing IP).

Aby wykonać aliasing IP w Debianie (zakładając, że używasz eth0), edytuj /etc/network/interfaces w następujący sposób:

Debian i pochodne

auto eth0:1
iface eth0:1 inet static
        address 192.168.0.25
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
auto eth0:2
iface eth0:2 inet static
        address 192.168.0.26
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1

W powyższym przykładzie tworzymy dwie wirtualne karty sieciowe z eth0: eth0:1 (192.168.0.25) i eth0:2 (192.168.0.26).

CentOS i RHEL

W CentOS zmień nazwę /etc/sysconfig/network-scripts/ifcfg-enp0s3 na ifcfg-enp0s3:1 i wykonaj kopię jako ifcfg-enp0s3:2, a następnie zmień odpowiednio następujące wiersze:

DEVICE="enp0s3:1"
IPADDR=192.168.0.25

I

DEVICE="enp0s3:2"
IPADDR=192.168.0.26

Po zakończeniu uruchom ponownie usługę sieciową:

systemctl restart networking

Następnie wprowadź następujące zmiany w blokach serwera zdefiniowanych wcześniej w tym artykule:

W /etc/nginx/sites-available/tecmintlovesnginx.com.conf:

listen 192.168.0.25:80

W /etc/nginx/sites-available/nginxmeanspower.com.conf:

listen 192.168.0.26:80

Na koniec uruchom ponownie Nginx, aby zmiany zaczęły obowiązywać.

systemctl restart nginx

i nie zapomnij odpowiednio zaktualizować lokalnego /etc/hosts:

192.168.0.25 tecmintlovesnginx.com
192.168.0.26 nginxmeanspower.com

Zatem każde żądanie wysłane do 192.168.0.25 i 192.168.0.26 na porcie 80 zwróci tecmintlovesnginx.com i Odpowiednio nginxmeanspower.com:

Jak widać na powyższych ilustracjach, masz teraz dwa wirtualne hosty oparte na protokole IP, korzystające z jedynej karty sieciowej na serwerze z dwoma różnymi aliasami IP.

Podsumowanie

W tym samouczku wyjaśniliśmy, jak skonfigurować wirtualne hosty oparte na nazwie i oparte na adresie IP w Nginx. Chociaż prawdopodobnie będziesz chciał skorzystać z pierwszej opcji, ważne jest, aby wiedzieć, że druga opcja jest nadal dostępna, jeśli jej potrzebujesz – pamiętaj tylko, aby podjąć tę decyzję po rozważeniu faktów przedstawionych w tym przewodniku.

Dodatkowo możesz dodać do zakładek dokumentację Nginx, ponieważ warto i warto często do niej odwoływać się podczas tworzenia bloków serwerów (to już – mówimy teraz w języku Nginx) i ich konfigurowania. Nie uwierzysz we wszystkie dostępne opcje konfiguracji i dostrojenia tego wyjątkowego serwera internetowego.

Jak zawsze, nie wahaj się napisać do nas za pomocą poniższego formularza, jeśli masz jakiekolwiek pytania lub komentarze dotyczące tego artykułu. Czekamy na Twoją wiadomość, a Twoja opinia na temat tego przewodnika będzie dla nas bardzo mile widziana.