GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak nainstalovat Nginx pomocí Let's Encrypt TLS/SSL na Ubuntu 20.04

NGINX je bezplatný serverový software HTTP s otevřeným zdrojovým kódem. Kromě schopností HTTP serveru může NGINX fungovat také jako proxy server pro e-mail (IMAP, POP3 a SMTP) a reverzní proxy a nástroj pro vyrovnávání zatížení pro servery HTTP, TCP a UDP. Cílem NGINX bylo vytvořit nejrychlejší webový server v okolí a zachování této dokonalosti je stále hlavním cílem projektu Nginx. NGINX trvale poráží Apache a další servery v benchmarcích měření výkonu webového serveru a je nyní nejoblíbenějším používaným webovým serverem podle W3Tech.

V následujícím tutoriálu se naučíte nainstalovat Nginx na Ubuntu 20.04 LTS pomocí výchozího úložiště Ubuntu nebo alternativního PPA od Ondřeje Surého s TLS/SSL certifikátem zdarma od Let’s Encrypt.

Předpoklady

  • Doporučený operační systém: Ubuntu 20.04 nebo vyšší
  • Uživatelský účet: Uživatelský účet s přístupem sudo nebo root.

Aktualizace operačního systému

Aktualizujte své Ubuntu operační systém, abyste se ujistili, že všechny stávající balíčky jsou aktuální :

sudo apt update && sudo apt upgrade

Root nebo Sudo Access

Ve výchozím nastavení dával účet vytvořený pomocí Ubuntu stav sudo. Přesto předpokládejme, že potřebujete poskytnout dalším účtům sudo/root přístup. V takovém případě musíte mít buď přístup k heslu uživatele root použijte příkaz su nebo navštivte náš tutoriál Jak přidat uživatele do Sudoers na Ubuntu.

Nainstalujte Nginx

Metoda 1. Nainstalujte Nginx Stable z úložiště Ubuntu

První metodou je instalace Nginx z výchozích úložišť Ubuntu a tyto verze se ukázaly jako stabilní a bezpečné. Pokud potřebujete spustit primární webový server nebo reverzní proxy, často se doporučuje nainstalovat balíčky úložiště Ubuntu.

Chcete-li nainstalovat Nginx, spusťte následující příkaz.

sudo apt install nginx

Příklad výstupu:

Zadejte Y poté stiskněte klávesu ENTER pokračujte v instalaci.

Dále ověřte sestavení verze a zda byla instalace úspěšná.

sudo nginx -v

Příklad výstupu:

nginx version: nginx/1.18.0

Metoda 2. Nainstalujte nejnovější Nginx Stable nebo Mainline od Ondřeje Surého PPA

Alternativně můžete místo instalace výchozího stabilního sestavení Nginx z úložiště Ubuntu 20.04 nainstalovat buď Nginx Stable nebo Mainline pomocí PPA od Ondřeje Surého, správce PHP pro Debian.

Nainstalujte jeden z následujících PPA pomocí následujícího příkazu:

Nainstalujte nejnovější Nginx (STABLE):

sudo add-apt-repository ppa:ondrej/nginx-stable -y && sudo apt update

Nainstalujte nejnovější Nginx (MAINLINE):

sudo add-apt-repository ppa:ondrej/nginx-mainline -y && sudo apt update

Nyní, když jste nainstalovali PPA a aktualizovali seznam úložišť, nainstalujte Nginx s následujícím:

sudo apt install nginx-core nginx-common nginx nginx-full

Příklad výstupu:

Zadejte Y poté stiskněte klávesu ENTER pokračujte v instalaci.

Dále ověřte sestavení verze a zda byla instalace úspěšná.

sudo nginx -v

Ukázkový výstup (z hlavní řady):

nginx version: nginx/1.18.0

Nyní zkontrolujte, zda byl pomocí příkazu apt-cache policy nainstalován nejnovější Nginx z úložiště Ondřej Surý . Všimněte si příklad výukového programu nainstalovaný Nginx Mainline:

apt-cache policy nginx

Ukázkový výstup pro Hlavní řadu Nginx :

Upozorňujeme, že můžete být vyzváni, abyste si ponechali nebo nahradili stávající /etc/nginx/ nginx.conf konfigurační soubor během instalace, pokud jste měli dříve nainstalovaný Nginx. Doporučujeme ponechat aktuální konfigurační soubor stisknutím (n) . Kopie bude vytvořena bez ohledu na verzi správce a můžete to také zkontrolovat v budoucnu.

Všimnete si, že v této verzi budou k dispozici další moduly, zejména podpora brotli. Chcete-li nainstalovat brotli , postupujte podle níže uvedených kroků.

Otevřete soubor nginx.conf konfigurační soubor:

nano /etc/nginx/nginx.conf

Nyní přidejte další řádky dříve do HTTP{} sekce:

brotli on;
brotli_comp_level 6;
brotli_static on;
brotli_types application/atom+xml application/javascript application/json application/rss+xml
   application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype
   application/x-font-ttf application/x-javascript application/xhtml+xml application/xml
   font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon
   image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml;

brotli_comp_level lze nastavit v rozmezí 1 (nejnižší) a 11 (nejvyšší) . Většina serverů je obvykle uprostřed, ale pokud je váš server monstrum, nastavte hodnotu 11 a sledujte úrovně využití CPU.

Dále otestujte, abyste se ujistili, že změny fungují správně, než je spustíte:

sudo nginx -t

Pokud změny fungují správně, měli byste vidět následující:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Nyní proveďte změny restartováním serveru:

sudo systemctl restart nginx
sudo systemctl status nginx

Příklad výstupu:

Konfigurace UFW

Ve výchozím nastavení je UFW nainstalován na Ubuntu 20.04. Pokud používáte UFW nebo chcete mít jasnější přehled o spouštění firewallu, použijte níže uvedené informace ke konfiguraci UFW pro Nginx.

Pokud UFW není nainstalováno, znovu nainstalujte firewall pomocí následujícího příkazu:

sudo apt install ufw -y

Dále povolte UFW pomocí následujícího příkazu.

sudo ufw enable

Ve výchozím nastavení jsou nyní všechna příchozí připojení blokována a všechna odchozí jsou povolena.

Dále zjistěte, jaké aplikace jste nainstalovali zadáním následujícího.

sudo ufw app list

Ukázkový výstup (Všimněte si, že se objeví i rozsáhlý seznam dalších aplikací):

 Available applications:
   Nginx Full
   Nginx HTTP
   Nginx HTTPS

Dále můžete povolit Nginx v HTTP (Port 80), HTTPS (Port 443) nebo Full, včetně všech možností.

HTTP (Port 80):

sudo ufw allow 'Nginx HTTP'

HTTP (Port 443):

sudo ufw allow 'Nginx HTTPS'

HTTP a HTTPS (úplné):

sudo ufw allow 'Nginx FULL'

V tutoriálu „Nginx (Full)“ byla povolena.

Příklad výstupu:

 Rules updated
 Rules updated (v6)

Následujícím příkazem potvrďte, že jsou pravidla brány firewall aktivní.

sudo ufw status

Pravidla se zobrazí ve výstupu.

 Status: active
 To                         Action      From
 --                         ------      ----
 Nginx Full                 ALLOW       Anywhere                  
 Nginx Full (v6)          ALLOW       Anywhere (v6) 

Po konfiguraci UFW zkontrolujte, zda vidíte vstupní stránku Nginx ve svém internetovém prohlížeči.

http://your_server_ip

Pokud vše funguje dobře, měli byste přejít na následující stránku:

Konfigurace serveru Nginx

Pro nastavení budete muset mít připravenou IP adresu serveru. Nejjednodušší způsob, jak toho dosáhnout, je následující.

Najít IP adresu serveru

Pro nastavení budete muset mít připravenou IP adresu serveru. Nejjednodušší způsob, jak toho dosáhnout, je následující.

curl -4 icanhazip.com

Příklad výstupu:

XXX.XXX.XXX.XXX IP address

Pokud dojde k chybě, je více než pravděpodobné, že budete muset nainstalovat balíček curl na váš systém. Rychle spusťte tento příkaz:

sudo apt install curl -y

Nastavení adresáře zdroje webu

Nginx bloky serveru (podobně jako virtuální hostitelé v Apache) mohou zapouzdřit podrobnosti o konfiguraci a hostit více než jednu doménu z jednoho serveru. V tutoriálu si nastavíte doménu s názvem example.com , ale měli byste jej nahradit názvem vaší domény .

Když nainstalujete Nginx, vytvoří se s předinstalovaným adresářem www. Umístění naleznete na adrese /var/www/html/ .

Nejprve vytvořte adresář pro example.com , následujícím způsobem pomocí parametru „-p“ k vytvoření nezbytných nadřazených adresářů:

sudo mkdir -p /var/www/example.com/html

Za druhé, budete muset přiřadit vlastníka adresáře.

sudo chown -R $USER:$USER /var/www/your_domain/html

Za třetí, přiřaďte oprávnění adresáře, aby vlastník mohl číst, zapisovat a spouštět soubory, přičemž skupinám a ostatním uděloval pouze oprávnění ke čtení a spouštění. Můžete zadat následující příkaz:

sudo chmod -R 755 /var/www/your_domain

Nastavit testovací stránku HTML

Za čtvrté, vytvořte testovací stránku, kterou budete používat k potvrzení funkčnosti serveru Nginx.

nano /var/www/your_domain/html/index.html

Uvnitř editoru nano a nového souboru, který jste vytvořili. Zadejte následující.

<html>
 <head>
  <title>Welcome to your_domain!</title>
 </head>
 <body>
   <h1>Success!  The your_domain server block is working!</h1>
 </body>
</html>

Uložte soubor CTRL+O poté ukončete CTRL+X .

Vytvořit blok serveru Nginx

Nyní vytvoříte blok serveru pro váš web. Vytvoříme nový blok serveru následovně.

sudo nano /etc/nginx/sites-available/your_domain.conf

Do bloku můžete vložit následující příklad kódu. Toto je pouze příklad pouze HTTP pro základní testování.

server {
 listen 80;
 listen [::]:80;

 root /var/www/your_domain/html;

  index index.html index.htm index.nginx-debian.html;
  server_name your_domain www.your_domain;

 location / {
  try_files $uri $uri/ =404;
 }
}

Příklad ukazuje, že váš server naslouchá dvěma názvům serverů, vaše_doména na portu 80.

Budete muset změnit kořenový adresář na název/umístění kořenového adresáře, který vytvoříte.

Povolit blokování serveru Nginx

Chcete-li povolit bloky serveru Nginx, musíte propojit konfigurační soubory z dostupných webů s povolenými weby ve vašem adresáři Nginx. To lze provést pomocí příkazu ln -s následovně.

sudo ln -s /etc/nginx/sites-available/your_domain.conf /etc/nginx/sites-enabled/

Konečná konfigurace a zkušební provoz

V poslední fázi budete muset otevřít svůj výchozí nginx.conf soubor.

sudo nano /etc/nginx/nginx.conf

A odkomentujte následující řádek.

server_names_hash_bucket_size 64;

Velikost segmentu hash názvu serveru se změní, protože někdy vznikají problémy s přidáváním dalších serverů.

Dále otestujte svůj Nginx, abyste se ujistili, že funguje, než se správně restartuje.

sudo nginx -t

Výstup by měl být, pokud v syntaxi nejsou žádné chyby:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Pokud máte následující výstup v pořádku, restartujte server Nginx, aby se změny projevily.

sudo systemctl restart nginx

Nyní otevřete Internetový prohlížeč a zadejte název domény serveru . Měli byste vidět, že váš blok serveru je aktivní.

Zabezpečte Nginx pomocí bezplatného certifikátu Let's Encrypt SSL

V ideálním případě byste chtěli spustit svůj Nginx na HTTPS pomocí certifikátu SSL . Nejlepší způsob, jak toho dosáhnout, je použít Let’s Encrypt bezplatná, automatizovaná a otevřená certifikační autorita provozovaná neziskovou organizací Internet Security Research Group (ISRG) .

Nejprve nainstalujte balíček certbot takto:

sudo apt install python3-certbot-nginx -y

Po instalaci spusťte následující příkaz pro zahájení vytváření vašeho certifikátu:

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d www.example.com

Toto je ideální nastavení, které zahrnuje vynucená přesměrování HTTPS 301, hlavičku Strict-Transport-Security a sešívání OCSP. Jen nezapomeňte upravit e-mail a název domény podle svých požadavků.

Nyní bude vaše adresa URL HTTPS://www.example.com namísto HTTP://www.example.com .

Poznámka:Pokud používáte starou URL HTTP , automaticky se přesměruje na HTTPS .

Jak získat přístup k protokolům serveru Nginx

Adresář protokolů Nginx

Ve výchozím nastavení jsou všechny protokoly přístupu/chyb NGINX, pokud jste je nezměnili, umístěny v adresáři protokolů, který může zobrazit následující příkaz.

Nejprve přejděte do adresáře logs a seznam souborů:

cd /var/log/nginx && ls -l

Měli byste najít následující přístupové a chybové soubory:

Protokol přístupu:

/var/log/nginx/access.log

Protokol chyb:

/var/log/nginx/error.log

Chcete-li zobrazit protokoly v reálném čase ve vašem terminálu pomocí příkazu sudo tail -f /location/of/log path.

Příklad:

sudo tail -f /var/log/nginx/access.log

Další možností je vytisknout posledních X řádků. Například X je nahrazeno 30, aby se vytisklo 30 řádků přidáním příznaků -n 30 .

sudo tail -f /var/log/nginx/access.log -n 30

Toto jsou jen některé příklady čtení protokolů.

Jak nakonfigurovat otáčení protokolu Nginx

Nginx automaticky nainstaluje rotaci protokolů a nakonfiguruje ji na výchozí, což je rotace denně. Tato nastavení můžete změnit přístupem k souboru, jak je uvedeno níže.

sudo nano /etc/nginx/logrotate.d/nginx

Dále uvidíte stejnou, ne-li podobnou strukturu souborů. Zde můžete upravit obsah. Většinou můžete změnit počet protokolů, které se mají uchovávat, nebo přejít z denních na týdenní. Toto by mělo být ponecháno ve výchozím nastavení, pokud nemáte specifické požadavky na protokoly pro software, jako je sledování fail2ban nebo podobné.

/var/log/nginx/*.log {
  daily
  missingok
  rotate 14
  compress
  delaycompress
  notifempty
  create 0640 www-data adm
  sharedscripts
  prerotate
  if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
  run-parts /etc/logrotate.d/httpd-prerotate; \
  fi \
  endscript
  postrotate
  invoke-rc.d nginx rotate >/dev/null 2>&1
  endscript
}

Hlavní nastavení, které budete pravděpodobně chtít změnit, je následující:

  • Denně – Toto lze změnit na Weekly, Monthly. Toto by mělo být uchováváno denně, jinak bude procházení souboru protokolu obtížné.
  • Otočit 14 – To je počet protokolů, které je třeba ponechat a odstranit, takže maximum je pouze 14 protokolů, pokud chcete uchovávat pouze protokoly za 7 dní, změňte toto na 7.

Doporučuje se nedotýkat se žádných dalších nastavení, pokud nevíte, co děláte.

Jak aktualizovat Nginx

Nginx se ve výchozím nastavení aktualizuje, když se do repozitářů dostane nová verze. Před upgradem se vždy doporučuje zálohovat adresář Nginx nebo přinejmenším nginx.conf soubor. Obojí můžete provést pomocí následujícího příkazu.

Zálohujte nginx.conf (vysoce doporučeno):

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx-backup.conf

Pokud chcete, zálohujte si celou složku Nginx:

sudo cp /etc/nginx/ /etc/nginx-bkup

Dále spusťte standardní příkaz aktualizace.

sudo apt update

Pokud je k dispozici aktualizace, spusťte ji.

sudo apt upgrade 

K tomu můžete být vyzváni během upgradu nebo instalace, ale ruční provedení předem je docela zásadní. Pro velké konfigurace Nginx s více weby by bylo zálohování na něco jako Github nebo Gitlab ještě výhodnější.


Ubuntu
  1. Jak nainstalovat Nextcloud s Nginx a nechat šifrovat SSL na Ubuntu 20.04 LTS

  2. Jak nainstalovat Magento 2 s Nginx a nechat šifrovat SSL na Ubuntu 20.04 LTS

  3. Jak nainstalovat Let's Encrypt SSL na Ubuntu 18.04 s Nginx

  1. Jak nainstalovat MediaWiki s Nginx na Ubuntu 16.04

  2. Jak nainstalovat Magento s Nginx na Ubuntu 15.10

  3. Jak nainstalovat Drupal 8 s Nginx, PHP-FPM a SSL na Ubuntu 15.10

  1. Jak nainstalovat Mailpile s Nginx na Ubuntu 15.10

  2. Jak nainstalovat Moodle s Nginx a nechat šifrovat SSL na Ubuntu 20.04

  3. Jak nainstalovat Let's Encrypt SSL v Nginx na Debian 11