V Nginx server blokuje se používají k definování informací o konkrétní doméně. Pomáhá hostovat více domén nebo webových stránek. Každý blok obsahuje specifické informace o doméně, jako je kořen dokumentu, SSL, port a další. Bloky serveru Nginx jsou podobné virtuálním hostitelům Apache.
V tomto tutoriálu se naučíme, jak konfigurovat bloky serveru Nginx na Ubuntu 18.04/20.04 .
Předpoklady
Vyžaduje instanci Ubuntu 18.04/20.04. Instance by měla mít nainstalovaný Nginx. Vyžadovat uživatele s přístupem sudo.
Krok 1. Vytvořte adresářovou strukturu
Kořen dokumentu je adresář, kde jsou uloženy soubory webových stránek pro název domény a obsluhovány v reakci na požadavky. Kořen dokumentu můžeme nastavit do libovolného umístění, ale v tomto článku použijeme následující adresářovou strukturu:
/var/www/
├── domain1.com
│ └── images
│ └── index.html
│ └── style.css
├── domain2.net
│ └── images
│ └── index.html
│ └── style.css
V zásadě vytvoříme samostatný adresář pro každou doménu, kterou chceme hostovat na našem serveru v /var/www
adresář.
Vytvořme kořenový adresář pro naše domény:
$ sudo mkdir -p /var/www/domain1.com
Pro účely testování vytvoříme v kořenovém adresáři dokumentů domény adresář souborů index.html, style.css a obrázků.
$ cd /var/www/domain1.com/
/var/www/domain1.com$ sudo mkdir images index.html style.css
Otevřete náš editor a vytvořte ukázkový soubor:
/var/www/domain1.com/index.html<!DOCTYPE html> <html lang="en" dir="ltr">
<head> <meta charset="utf-8">
<title>Welcome to domain1.com</title> <link rel="stylesheet" href="style.css"/>
</head>
<body> <h1 style="color:green;text-align:center;">Success! domain1.com home page!</h1>
</body>
</html>
Zde spouštíme příkazy jako sudo
uživatel a nově vytvořené soubory a adresáře jsou ve vlastnictví root
uživatel.
Abychom se vyhnuli problémům s oprávněními, můžeme změnit vlastnictví kořenového adresáře dokumentu domény na uživatele Nginx (www-data)
:
$ sudo chown -R www-data: /var/www/domain1.com
stejné postupy provedeme s domain2.net
Krok 2. Vytvořte blokové soubory serveru Nginx pro každou doménu
Nyní, když máme obsah, který chceme poskytovat, musíme skutečně vytvořit bloky serveru, které Nginxu řeknou, jak to udělat.
Ve výchozím nastavení Nginx obsahuje jeden blok serveru s názvem dfault
které můžeme použít jako šablonu pro naše vlastní konfigurace. Začneme návrhem bloku serveru naší první domény, který pak zkopírujeme pro naši druhou doménu a provedeme potřebné úpravy.
1) Vytvořte první blokový soubor serveru Nginx
Jak bylo uvedeno výše, vytvoříme náš první konfigurační soubor bloku serveru zkopírováním přes výchozí soubor:
$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/domain1.com
Nyní otevřete nový soubor, který jste vytvořili v textovém editoru s právy sudo:
$ sudo nano /etc/nginx/sites-available/domain1.com
Po úpravě bude soubor vypadat podobně jako toto:
/etc/nginx/sites-available/domain1.comserver { listen 80; listen [::]:80; root /var/www/domain1.com; index index.html index.htm index.nginx-debian.html; server_name domain1.com www.domain1.com;
location /
{ try_files $uri $uri/ =404; } }
To je vše, co potřebujeme pro základní konfiguraci. Uložte a zavřete soubor pro ukončení Ctrl
+ x
.
2) Vytvořte druhý blokový soubor serveru Nginx
Nyní, když máme první konfiguraci bloku serveru Nginx, můžeme ji použít jako základ pro náš druhý soubor. Zkopírujte jej a vytvořte nový soubor:
$ sudo cp /etc/nginx/sites-available/domain1.com /etc/nginx/sites-available/domain2.net
Otevřete nový soubor pomocí sudo
oprávnění ve vašem editoru:
$ sudo nano /etc/nginx/sites-available/domain2.net
Upravte direktivu root tak, aby ukazovala na dokument root
naší druhé domény a upravte server_name
aby odpovídal názvu domény vašeho druhého webu (nezapomeňte uvést všechny aliasy).
Až budete hotovi, náš soubor bude pravděpodobně vypadat nějak takto:
/etc/nginx/sites-available/domain2.netserver { listen 80; listen [::]:80; root /var/www/domain2.net; index index.html index.htm index.nginx-debian.html; server_name domain2.net www.domain2.net;
location /
{ try_files $uri $uri/ =404; } }
Uložte a zavřete soubor pro ukončení Ctrl
+ x
.
Krok 3. Povolte naše blokování serveru Nginx a restartujte Nginx
Nyní, když máme naše blokové soubory serveru, musíme je povolit. Můžeme to udělat vytvořením symbolických odkazů z těchto souborů na sites-enabled
adresář, ze kterého Nginx čte během spouštění.
Tyto odkazy můžeme vytvořit zadáním:
$ sudo ln -s /etc/nginx/sites-available/domain1.com /etc/nginx/sites-enabled/
$ sudo ln -s /etc/nginx/sites-available/domain2.net /etc/nginx/sites-enabled/
Tyto soubory jsou nyní v adresáři enabled. Nyní máme povoleny tři bloky serveru:
1. domain1.com:Odpoví na požadavky pro domain1.com a www.domain1.com
2. domain2.net:Odpoví na požadavky pro domain2.net a www.domain2.net
3. výchozí:Odpoví na všechny požadavky na portu 80, které se neshodují s ostatními dvěma bloky.
Abychom se vyhnuli možnému problému s pamětí hash bucket, který může vzniknout přidáním dalších názvů serverů, upravíme jednu hodnotu v našem souboru /etc/nginx/nginx.conf. Otevřete soubor nyní:
$ sudo nano /etc/nginx/nginx.conf
V souboru najděte server_names_hash_bucket_size
směrnice. Odstraňte #
symbol pro odkomentování řádku:
http { . . . server_names_hash_bucket_size 64; . . . }
Po dokončení uložte a zavřete soubor.
Dále otestujte, abyste se ujistili, že v žádném z našich souborů Nginx nejsou žádné syntaktické chyby:
$ sudo nginx -t
Pokud nebyly nalezeny žádné problémy, restartujte Nginx, abyste povolili naše změny:
$ sudo systemctl restart nginx
Nginx by nyní měl obsluhovat obě naše doménová jména.
Krok 4. Ověřte přístupem na web
Nyní, když jsme všichni nastaveni, bychom měli otestovat, zda bloky našeho serveru fungují správně. Můžeme to udělat návštěvou domén v našem webovém prohlížeči:
http://domain1.com
Měli byste vidět stránku, která vypadá takto:
Pokud navštívíte název své druhé domény, měli byste vidět trochu jiný web:
http://domain2.net
Závěr
V tomto tutoriálu jsme se naučili, jak nakonfigurovat blok serveru Nginx na Ubuntu 18.04/20.04. Pomocí serverových bloků Nginx jsme nastavili dvě domény pro obsluhu webových požadavků.