Nginx – Konfigurace Virtualhostů (Configure Nginx Virtual Hosts)

By | 16/11/2023

Last Updated on 10/12/2023 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:

  1. 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.
  2. 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.
  3. 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.
  4. 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í.
  5. Ú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]:

Aktualizace seznamu balíčků z repozitářů:

sudo apt update

Instalace služby Nginx:

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.

nginx serverDefaulně 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:

Configure Nginx Virtual Hosts

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:

Configure Nginx Virtual Hosts

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

Zdroj:

[1] https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu-16-04

Dobrovolný dar

Ahoj čtenáři, rád bych tě poprosil aby ses zamyslel, co je vše potřeba ke vzniku článku.
Jakožto amatérský softwarový kutil musím:

1) Nejdříve vše nastudovat v cizích jazycích.
2) Vše následně prakticky vyzkoušet.
3) Svoje poznatky a zkušenosti napsat do článku který si právě přečetl v jazyku kterému rozumíš.
4) Dát článku hlavu a patu a publikovat.

Každý článek zabere několik hodin práce, za kterou mi nikdo neplatí.
Prosím zvaž, kolik času jsem ti právě ušetřil.
Pokud ti to stojí aspoň za cenu jedné kávy, tak mi ji kup.
Předem moc děkuji.

Příspěvek tak můžeš provést zasláním libovolné částky na mé číslo účtu 1558701011/3030 Nebo můžeš dar poslat kliknutím na tento odkaz Podpořit tento WEB , který tě přesměruje na mou platební bránu Revolut.

Dar je také možné poslat ve formě Bitcoinu na BTC peněženku bc1qqdf5fp42a7srwwhh2rut8zr9x4jm5c8fqc9qw6

Veškeré peněžní prostředky budu také používat na zlepšení kvality své webové tvorby a na psaní nových technických návodů. Za každý dar předem děkuji.

Leave a Reply

Your email address will not be published. Required fields are marked *