Last Updated on 28/10/2024 by administrator
Nginx – Konfigurace Virtualhostů (Configure Nginx Virtual Hosts)
Nginx – Konfigurace Virtualhostů (Configure Nginx Virtual Hosts)
Motivace:
Použítí Virtualhostů na Nginx slouží k umožnění provozu více než jednoho webového serveru na jednom fyzickém serveru. Tato funkcionalita je užitečná zejména v případech, kdy je potřeba mít více webových aplikací nebo více webových stránek, které jsou nutné hostovat na jednom serveru.
Hlavní výhody virtual hostů jsou:
- Hostování více domén:
- Je možné hostovat více domén na jednom serveru. Každý virtuální host může být nakonfigurován pro obsluhu specifické domény.
- Oddělení webových aplikací:
- Je možné oddělit různé webové aplikace nebo projekty pomocí virtuálních hostů. Každý virtuální host může mít svůj vlastní kořenový adresář, logy a konfiguraci.
- Různé protokoly a nastavení:
- Je možné nastavit různé protokoly (HTTP, HTTPS) a další webové serverové nastavení pro každý virtuální host podle potřeby.
- Zvyšování bezpečnosti:
- Virtualhosti umožňují izolovat jednotlivé webové aplikace nebo weby, což může zvýšit bezpečnost, protože problémy v jedné aplikaci nemají automaticky dopad na ostatní.
- Úspora zdrojů:
- Efektivněji se využívají zdroje serveru tím, že se sdílí hardware mezi různými webovými aplikacemi nebo projekty.
OS:
Implementace byla prováděna na Ubuntu 22.04 LTS.
Implementace[1]:
apt install nginx -y
Po instalaci by měla být Nginx služba plně funkční. To lze ověřit přes prohlížeč. Ubuntu server na kterém byl nainstalován Nginx běží pod IP adresou 192.168.0.129. Pokud nefunguje, ověřit zda již neběží jiná služba na portu TCP/80.
Defaulně by mělo být nastaveno oprávnění pro /var/www adresář:
sudo chmod -R 755 /var/www
1. Nastavení VirtualHosta pro doménu mujweb1.mooo.com
V tomto příkladě bude vytvořený VirtualHost pro doménové jméno mujweb1.mooo.com.
V lokaci /var/www/ vytvořit novou složku mujweb1.mooo.com:
mkdir /var/www/mujweb1.mooo.com
Vytvořit soubor index.html, do kterého bude vložen text pro odlišení webu:
echo "Toto je mujweb1.mooo.com." > /var/www/mujweb1.mooo.com/index.html
Nastavit oprávnění pro /var/www/mujweb1.mooo.com adresář:
chmod -R 755 /var/www/mujweb1.mooo.com
Změnit vlastníka složky /var/www/mujweb1.mooo.com/ a její podsložky na www-data:
sudo chown -R www-data:www-data /var/www/mujweb1.mooo.com/
Vytvořit soubor s názvem mujweb1.mooo.com:
vi /etc/nginx/sites-available/mujweb1.mooo.com
a vložit do něj tento konfigurační blok níže:
server { listen 80; server_name mujweb1.mooo.com www.mujweb1.mooo.com; access_log /var/log/nginx/mujweb1.mooo.com/access.log; error_log /var/log/nginx/mujweb1.mooo.com/error.log; root /var/www/mujweb1.mooo.com; index index.html index.htm; location / { try_files $uri $uri/ =404; } }
Legenda:
- listen 80 – Nastavuje port, na kterém bude server naslouchat.
- server_name mujweb1.mooo.com www.mujweb1.mooo.com – Určuje doménová jména, pro která je tento virtuální server platný.
- access_log /var/log/nginx/mujweb1.mooo.com/access.log – Určuje cestu k logovacímu souboru pro přístupy k tomuto serveru.
- error_log /var/log/nginx/mujweb1.mooo.com/error.log – Určuje cestu k logovacímu souboru pro chybové zprávy při přístupu k tomuto serveru.
- root /var/www/mujweb1.mooo.com – Určuje kořenový adresář pro tento virtuální server, tedy adresář, kde jsou umístěny webové soubory pro tento web.
- index index.html index.htm – Definuje pořadí indexovacích souborů.
- location / { try_files $uri $uri/ =404; } – try_files hledá soubory v zadaném pořadí a pokud nenajde, vrací chybu 404.
Vytvoření souborů pro logování k webu mujweb1.mooo.com:
Vytvořit složku mujweb1.mooo.com:
sudo mkdir -p /var/log/nginx/mujweb1.mooo.com
Vytvořit prázdný soubor s názvem access.log v lokaci /var/log/nginx/mujweb1.mooo.com/:
sudo touch /var/log/nginx/mujweb1.mooo.com/access.log
Změnit vlastníka složky /var/log/nginx/mujweb1.mooo.com a její podsložky na www-data:
sudo chown -R www-data:www-data /var/log/nginx/mujweb1.mooo.com
Vytvořit symbolický link mezi konfiguračním souborem pro virtuálního hosta /etc/nginx/sites-available/mujweb1.mooo.com a adresářem /etc/nginx/sites-enabled/, který Nginx načítá pro aktivní virtuální hosty:
sudo ln -s /etc/nginx/sites-available/mujweb1.mooo.com /etc/nginx/sites-enabled/
Pro kontrolování Nginx syntaxe použít:
sudo nginx -t
Provést restart služby Nginx:
sudo systemctl reload nginx
Ověření funkčnosti:
Nyní je potřeba aby bylo doménové jméno mujweb1.mooo.com bylo namapované k IP adrese 192.168.0.129. Pro otestování stačí změnit hosts file, toho počítače přistupující k webovému serveru. U Windowsu se hosts file nachází v lokaci C:\Windows\System32\drivers\etc\hosts a u linuxových distribucí v /etc/hosts.
Po změně je možné vyzkoušet doménové jméno mujweb1.mooo.com v prohlížeči:
Jak lze vidět, vše funguje.
2. Nastavení VirtualHosta pro doménu mujweb2.mooo.com
V tomto příkladě bude vytvořený VirtualHost pro doménové jméno mujweb2.mooo.com.
Postup je proveden úplně stejně jako u prvního virtualhosta výše. Nyní již budou příloženy příkazy bez popisků:
mkdir /var/www/mujweb2.mooo.com echo "Toto je mujweb2.mooo.com." > /var/www/mujweb2.mooo.com/index.html chmod -R 755 /var/www/mujweb2.mooo.com sudo chown -R www-data:www-data /var/www/mujweb2.mooo.com/ vi /etc/nginx/sites-available/mujweb2.mooo.com
server { listen 80; server_name mujweb2.mooo.com www.mujweb2.mooo.com; access_log /var/log/nginx/mujweb2.mooo.com/access.log; error_log /var/log/nginx/mujweb2.mooo.com/error.log; root /var/www/mujweb2.mooo.com; index index.html index.htm; location / { try_files $uri $uri/ =404; } }
sudo mkdir -p /var/log/nginx/mujweb2.mooo.com sudo touch /var/log/nginx/mujweb2.mooo.com/access.log sudo chown -R www-data:www-data /var/log/nginx/mujweb2.mooo.com sudo ln -s /etc/nginx/sites-available/mujweb2.mooo.com /etc/nginx/sites-enabled/ nginx -t service nginx restart
Opět je nutné aby doménové jméno mujweb2.mooo.com bylo namapované k IP adrese 192.168.0.129:
Takto je možné vytvářet další virtuální hosty. Jejich počet není přímo omezen samotnou službou Nginx.
TIP – Jak deaktivovat daného VirtualHosta:
Pokud je potřeba deaktivovat určitého Virtualhosta je to možné provést odebraním symbolického linku v sites-enabled. V tomto případě to bude provedeno pro Virtualhosta mujweb1.mooo.com:
rm /etc/nginx/sites-enabled/mujweb1.mooo.com
Je potřeba restart služby Nginx:
sudo systemctl reload nginx