Vyhledávání na webu

Jak nastavit virtuální hostitele založené na názvech a IP (bloky serveru) pomocí NGINX


V relativně krátké době od svého vývoje a zpřístupnění (něco přes 10 let) Nginx zaznamenal trvalý a stabilní růst mezi webovými servery díky vysokému výkonu a nízkému využití paměti.

Protože Nginx je bezplatný software s otevřeným zdrojovým kódem, přijaly jej tisíce správců webových serverů po celém světě, a to nejen na serverech Linux a *nix, ale také v systému Microsoft Windows.

Nepřehlédněte: Virtuální hosting založený na názvech Apache a IP

Pro ty z nás, kteří jsou nejvíce zvyklí na Apache, může mít Nginx poněkud strmou křivku učení (alespoň to byl můj případ), ale určitě se vyplatí, jakmile si pár vytvoříte stránek a začněte vidět statistiky provozu a využití zdrojů.

V tomto článku vysvětlíme, jak pomocí Nginx nastavit virtuální hosting na základě jména a na základě IP v CentOS/RHEL 7 servery a Debian 8 a jeho deriváty, počínaje Ubuntu 15.04 a jeho vedlejšími produkty.

Náš scénář testování pro tento článek je následující:

  1. Operační systém: Server Debian 8 Jessie [IP 192.168.0.25]
  2. Brána: Router [IP 192.168.0.1]
  3. Webový server: Nginx 1.6.2-5
  4. Dummy domény: www.tecmintlovesnginx.com a www.nginxmeanspower.com.

Instalace webového serveru Nginx

Pokud jste tak ještě neučinili, nainstalujte si Nginx, než budete pokračovat. Pokud potřebujete pomoc, abyste mohli začít, rychlé vyhledávání nginx na tomto webu vrátí několik článků na toto téma. Klikněte na ikonu lupy v horní části této stránky a vyhledejte klíčové slovo nginx. Pokud nevíte, jak hledat články na tomto webu, nebojte se, přidali jsme odkazy na články nginx, stačí si je projít a nainstalovat podle svých příslušných distribucí Linuxu.

  1. Nainstalujte a zkompilujte Nginx ze zdrojů v RHEL/CentOS 7
  2. Nainstalujte Nginx Web Server na Debian 8
  3. Nainstalujte Nginx s MariaDB a PHP/PHP-FPM na Fedoru 23
  4. Nainstalujte Nginx Web Server na Ubuntu 15.10 Server/Desktop
  5. Adresáře webových stránek Nginx chránit heslem

Pak se připravte na pokračování ve zbytku tohoto tutoriálu.

Vytváření virtuálních hostitelů založených na názvech v Nginx

Jak už jistě víte, virtuální hostitel je webová stránka, kterou Nginx obsluhuje na jediném cloudovém VPS nebo fyzickém serveru. V dokumentech Nginx však místo toho najdete termín "bloky serveru", ale v zásadě se jedná o totéž nazývané různými názvy.

Prvním krokem k nastavení virtuálních hostitelů je vytvoření jednoho nebo více serverových bloků (v našem případě vytvoříme dva, jeden pro každou fiktivní doménu) v hlavním konfiguračním souboru (/etc/nginx/nginx.conf) nebo uvnitř /etc/nginx/sites-available.

Přestože název konfiguračních souborů v tomto adresáři (sites-available) lze nastavit na cokoliv, je dobré použít názvy domén a navíc jsme se rozhodli přidat .conf přípona označující, že se jedná o konfigurační soubory.

Tyto serverové bloky mohou být relativně složité, ale ve své základní podobě se skládají z následujícího obsahu:

V /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;  
}

V /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;  
}

Pomocí výše uvedených bloků můžete začít nastavovat své virtuální hostitele nebo můžete vytvořit soubory se základní kostrou z /etc/nginx/sites-available/default (Debian ) nebo /etc/nginx/nginx.conf.default (CentOS).

Po zkopírování změňte jejich oprávnění a vlastnictví:

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

Debian a deriváty

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

CentOS a RHEL

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

Až budete hotovi, měli byste smazat ukázkový soubor nebo jej přejmenovat na něco jiného, abyste předešli zmatkům nebo konfliktům.

Upozorňujeme, že také budete muset vytvořit adresář pro protokoly (/var/www/logs) a poskytnout uživateli Nginx (nginx nebo www-data , v závislosti na tom, zda používáte CentOS nebo Debian) oprávnění pro čtení a zápis:

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

Virtuální hostitelé musí být nyní povoleni vytvořením symbolického odkazu na tento soubor v adresáři s povolenými weby:

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

Dále vytvořte ukázkový html soubor s názvem index.html uvnitř /var/www//public_html pro každého z virtuálních hostitelů (nahraďte podle potřeby). Podle potřeby upravte následující kód:

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

Nakonec otestujte konfiguraci Nginx a spusťte webový server. Pokud jsou v konfiguraci nějaké chyby, budete vyzváni k jejich opravě:

nginx -t && systemctl start nginx

a přidejte následující položky do svého souboru /etc/hosts na místním počítači jako základní strategii rozlišení názvů:

192.168.0.25 tecmintlovesnginx.com
192.168.0.25 nginxmeanspower.com

Poté spusťte webový prohlížeč a přejděte na výše uvedené adresy URL:

Chcete-li přidat další virtuální hostitele v Nginx, opakujte výše uvedené kroky tolikrát, kolikrát je potřeba.

Virtuální hostitelé na bázi IP v Nginx

Na rozdíl od virtuálních hostitelů založených na jménu, kde jsou všichni hostitelé přístupní prostřednictvím stejné adresy IP, virtuální hostitelé na základě IP vyžadují jiný IP:port kombinace každého.

To umožňuje webovému serveru vracet různé stránky v závislosti na IP adrese a portu, na kterém je požadavek přijat. Vzhledem k tomu, že pojmenovaní virtuální hostitelé nám dávají výhodu sdílení IP adresy a portu, jsou standardem pro univerzální webové servery a měli by být volbou nastavení, pokud vaše nainstalovaná verze Nginx nepodporuje Indikace názvu serveru (SNI), buď proto, že jde o OPRAVDU zastaralou verzi, nebo proto, že byla zkompilována bez možnosti kompilace –with-http_ssl_module.

Li,

nginx -V

nevrací níže zvýrazněné možnosti:

budete muset aktualizovat svou verzi Nginx nebo ji překompilovat, v závislosti na vaší původní metodě instalace. Pro kompilaci Nginx postupujte podle níže uvedeného článku:

  1. Nainstalujte a zkompilujte Nginx ze zdrojů v RHEL/CentOS 7

Za předpokladu, že jsme připraveni, musíme poznamenat, že dalším nezbytným předpokladem pro virtuální hostitele založené na IP je dostupnost samostatných adres IP – buď jejich přiřazením k odlišným síťovým rozhraním, nebo pomocí virtuálních hostitelů. IP adresy (také známé jako IP aliasing).

Chcete-li provést alias IP v Debianu (za předpokladu, že používáte eth0), upravte /etc/network/interfaces následovně:

Debian a deriváty

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

Ve výše uvedeném příkladu vytvoříme dvě virtuální síťové karty z eth0: eth0:1 (192.168.0.25) a eth0:2 (192.168.0.26).

CentOS a RHEL

V CentOS přejmenujte /etc/sysconfig/network-scripts/ifcfg-enp0s3 na ifcfg-enp0s3:1 a vytvořte kopii jako ifcfg-enp0s3:2 a poté stačí změnit následující řádky:

DEVICE="enp0s3:1"
IPADDR=192.168.0.25

a

DEVICE="enp0s3:2"
IPADDR=192.168.0.26

Po dokončení restartujte síťovou službu:

systemctl restart networking

Dále proveďte následující změny v blocích serveru dříve definovaných v tomto článku:

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

listen 192.168.0.25:80

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

listen 192.168.0.26:80

Nakonec restartujte Nginx, aby se změny projevily.

systemctl restart nginx

a nezapomeňte odpovídajícím způsobem aktualizovat své místní /etc/hosts:

192.168.0.25 tecmintlovesnginx.com
192.168.0.26 nginxmeanspower.com

Každý požadavek na 192.168.0.25 a 192.168.0.26 na portu 80 tedy vrátí tecmintlovesnginx.com a nginxmeanspower.com:

Jak můžete vidět na obrázcích výše, nyní máte dva virtuální hostitele založené na IP, kteří používají jedinou síťovou kartu na vašem serveru se dvěma různými IP aliasy.

Shrnutí

V tomto tutoriálu jsme vysvětlili, jak nastavit virtuální hostitele na základě jména a na základě IP v Nginx. I když pravděpodobně budete chtít použít první možnost, je důležité vědět, že druhá možnost je stále k dispozici, pokud ji potřebujete – jen se ujistěte, že jste toto rozhodnutí učinili po zvážení faktů uvedených v této příručce.

Kromě toho si možná budete chtít uložit dokumenty Nginx do záložek, protože je vhodné a dobré na ně často odkazovat při vytváření bloků serveru (tady to máte – teď mluvíme v jazyce Nginx) a jejich konfiguraci. Nebudete věřit všem možnostem, které jsou k dispozici pro konfiguraci a vyladění tohoto vynikajícího webového serveru.

Jako vždy, pokud máte nějaké dotazy nebo připomínky k tomuto článku, neváhejte a napište nám pomocí formuláře níže. Těšíme se na vaši odpověď a vaše názory na tuto příručku jsou velmi vítány.