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 tutoriálu se dozvíte, jaknainstalovat a nakonfigurovat Nginx na Fedoře 35 s bezplatným certifikátem TLS/SSL od Let’s Encrypt.
Předpoklady
- Doporučený operační systém: Fedora Linux 35
- Uživatelský účet: Uživatelský účet s přístupem sudo nebo root.
Aktualizujte operační systém
Aktualizujte svou Fedoru operační systém, abyste se ujistili, že všechny existující balíčky jsou aktuální:
sudo dnf upgrade --refresh -y
Výukový program bude používatpříkaz sudo a za předpokladu, že máte status sudo .
Chcete-li ověřit stav sudo na vašem účtu:
sudo whoami
Ukázkový výstup zobrazující stav sudo:
[joshua@fedora ~]$ sudo whoami
root
Chcete-li nastavit stávající nebo nový účet sudo, navštivte náš tutoriál o Přidání uživatele do Sudoers na Fedoře .
Chcete-li použít rootový účet , použijte k přihlášení následující příkaz s heslem uživatele root.
su
Nainstalujte Nginx Stable nebo Mainline
Instalace Nginxu je na distribucích Fedory velmi snadná vzhledem k šestiměsíčním vydáním a jeho neustálá aktualizace balíčků během jeho doby znamená, že Nginx je z větší části vždy aktuální.
Vzhledem k tomu, že Fedora je zvyklá mít nejaktuálnější balíčky, nejprve povolte hlavní úložiště, které Nginx doporučuje používat.
sudo dnf module enable nginx:mainline
Příklad výstupu:
Zadejte Y a poté stiskněte klávesu ENTER pokračujte v instalaci.
Dále otevřete svůj terminál a spusťte následující příkaz pro zahájení procesu instalace.
sudo dnf install nginx
Příklad výstupu:
Zadejte Y a poté stiskněte klávesu ENTER pokračujte v instalaci.
Po instalaci potvrďte instalaci kontrolou verze sestavení Nginx.
nginx -v
Ukázkový výstup (pomocí příkladu hlavní řady):
nginx version: nginx/1.21.3
Ve výchozím nastavení není služba Nginx po instalaci povolena ani aktivní. Chcete-li povolit Nginx, použijte následující příkaz.
sudo systemctl enable nginx --now
Nyní zkontrolujte stav služby a ujistěte se, že Nginx běží bez jakýchkoli chyb.
systemctl status nginx
Příklad výstupu:
Jak je uvedeno výše, stav by měl být aktivní (spuštěno) . V tomto okamžiku jste nainstalovali aplikaci Nginx.
Konfigurace pravidel brány firewall
Ve výchozím nastavení instalace automaticky nepřidává pravidla brány firewall na standardní port 80 nebo 443 při instalaci Nginx. Než budete pokračovat, měli byste nastavit následující pravidla, to bude záviset na tom, jaké porty budete používat, ale všechny možnosti jsou uvedeny.
Otevřete port 80 nebo HTTP:
sudo firewall-cmd --permanent --zone=public --add-service=http
Otevřete port 443 nebo HTTPS:
sudo firewall-cmd --permanent --zone=public --add-service=https
Znovu načtěte bránu firewall, aby se změny projevily
sudo firewall-cmd --reload
Nakonfigurujte 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 příkazy nefungují, pravděpodobně nemáte nainstalovaný balíček curl. Spusťte následující příkaz:
sudo dnf install curl -y
Jakmile budete mít IP adresu svého serveru, otevřete svůj oblíbený internetový prohlížeč a zkontrolujte, zda výchozí vstupní stránka funguje.
http://your_server_ip
Ve svém internetovém prohlížeči byste měli získat následující stránku.
Příklad:
Nastavení adresáře zdroje webu
V tutoriálu si nastavíte doménu s názvem example.com , ale měli byste jej nahradit názvem vaší domény . Výukový program vytvoří webové adresáře a nakonfiguruje soubory webu v nadřazeném adresáři /var/www/ .
Nejprve vytvořte adresář pro example.com , následovně pomocí “-p“ flag pro vytvoření všech nezbytných nadřazených adresářů:
sudo mkdir -p /var/www/your_domain/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
Případně můžete použít /usr/share/nginx/html místo toho adresář, ale /var/www pro nové uživatele se doporučuje adresářová metoda.
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 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
Ve výchozím nastavení je blok serveru Nginx, podobný virtuálním hostitelům Apache, řešen v souboru /etc/nginx/conf.d adresář. Instalace Nginx se však liší od různých verzí a distribucí využívajících buď conf.d nebo sites-available/sites-enabled ve výchozím stavu. Pro tutoriál budou použity adresáře webu, aby byl zachován standard.
Nejprve zpřístupněte adresáře potřebné proweby a povoleno pro weby.
sudo mkdir /etc/nginx/sites-available
sudo mkdir /etc/nginx/sites-enabled
Dále otevřete svůj soubor nginx.conf a odeberte nebo okomentujte „include /etc/nginx/default.d/*.conf;“ .
sudo nano /etc/nginx/nginx.conf
Poté přímo pod něj přidejte „/etc/nginx/sites-enabled/*.conf;“ .
Pouze příklad:
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;
include /etc/nginx/mime.types;
default_type application/octet-stream;
###EDIT HERE###
# include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*.conf;
}
Stejně jako výše, „#“ komentář byl přidán do include conf.d řádek a zahrnout stránky s povoleným obsahem byl přidán.
Uložte soubor (CTRL+O) a ukončete (CTRL+X) .
Dále vytvořte konfigurační soubor bloku serveru. Pro výukový program bude použit název vase_domena.conf, ale lze jej pojmenovat jakkoli chcete.
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;
server_name your_domain www.your_domain;
root /var/www/your_domain/html;
index index.html index.htm;
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.
Povoleno blokování serveru Nginx
Chcete-li povolit bloky serveru Nginx, musíte propojit konfigurační soubory z dostupných webů s povolenými weby v 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 svůj 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) .
Nainstalujte balíček certbot takto:
sudo dnf 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 ideální nastavení 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 .
Pokud používáte starou URL HTTP , automaticky se přesměruje na HTTPS .
Volitelně můžete nastavit úlohu cron pro automatickou obnovu certifikátů. Certbot nabízí skript, který to dělá automaticky, a vy můžete nejprve otestovat, abyste se ujistili, že vše funguje pomocí suchého běhu.
sudo certbot renew --dry-run
Pokud vše funguje, otevřete okno crontab pomocí následujícího příkazu terminálu.
sudo crontab -e
Ve výchozím nastavení se většina systémů Fedory nedodává s nainstalovaným Cronem. Chcete-li jej nainstalovat, použijte následující příkaz.
sudo dnf install cronie -y
Otevřete crontab pomocí následujícího příkazu.
sudo crontab -e
Dále zadejte čas, kdy se má automaticky obnovit. Toto by mělo být kontrolováno minimálně denně, a pokud je potřeba certifikát obnovit, skript certifikát neaktualizuje. Pokud potřebujete pomoc s nalezením vhodného času pro nastavení, použijte bezplatný nástroj crontab.guru.
00 00 */1 * * /usr/sbin/certbot-auto renew
Nyní soubor uložte stisknutím (SHIFT) a (:) poté zadejte (wa), který soubor uloží, poté ukončete stejnou metodou pomocí (qa) .
V terminálu byste měli vidět následující výstup, abyste viděli, zda přidání nové úlohy bylo úspěšné.
crontab: installing new crontab
Správa služby Nginx
Nyní, když máte Nginx na svém serveru úspěšně spuštěný, některé klíčové poznámky pro správu jsou následující.
Chcete-li zastavit webový server Nginx:
sudo systemctl stop nginx
Spuštění webového serveru Nginx:
sudo systemctl start nginx
Restartování webového serveru Nginx:
sudo systemctl restart nginx
Chcete-li znovu načíst webový server Nginx (pro další menší změny nevyžadující restart) :
sudo systemctl reload nginx
Chcete-li zakázat Nginx při spouštění serveru:
sudo systemctl disable nginx
Spuštění Nginx při spouštění serveru (automaticky povoleno při instalaci) :
sudo systemctl enable nginx
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 parametru -n 30 .
sudo tail -f /var/log/nginx/access.log -n 30
Toto jsou jen některé příklady čtení protokolů a grep může být také užitečný.
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/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 dnf upgrade --refresh
Pokud je k dispozici aktualizace, spusťte ji.
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ší.
Jak odebrat (odinstalovat) Nginx
Chcete-li odebrat Nginx, pokud jej již nepoužíváte, lze to provést pomocí následujícího příkazu:
sudo dnf autoremove nginx
Tento příkaz také odstraní všechny nepoužívané závislosti dodané s instalací.
Chcete-li resetovat modul nginx z hlavní řady zpět na výchozí, použijte následující příkaz.
sudo dnf modules reset nginx