NGINX è un software server HTTP gratuito e open source. Oltre alle sue capacità di server HTTP, NGINX può anche fungere da server proxy per la posta elettronica (IMAP, POP3 e SMTP) e un proxy inverso e bilanciatore di carico per server HTTP, TCP e UDP. L'obiettivo dietro NGINX era quello di creare il server web più veloce in circolazione e mantenere quell'eccellenza è ancora un obiettivo centrale del progetto Nginx. NGINX batte costantemente Apache e altri server nei benchmark che misurano le prestazioni dei server Web ed è ora il server Web utilizzato più popolare secondo W3Tech.
Nel tutorial imparerai come installare Nginx su AlmaLinux 8 con un certificato TLS/SSL gratuito di Let's Encrypt.
Prerequisiti
- Sistema operativo consigliato: AlmaLinux 8.
- Account utente: Un account utente con privilegi sudo o accesso root (comando su) .
Aggiornamento del sistema operativo
Aggiorna il tuo AlmaLinux sistema operativo per assicurarsi che tutti i pacchetti esistenti siano aggiornati:
sudo dnf upgrade --refresh
Il tutorial utilizzerà il comando sudo e supponendo che tu abbia lo stato sudo .
Per verificare lo stato di sudo sul tuo account:
sudo whoami
Esempio di output che mostra lo stato di sudo:
[joshua@localhost ~]$ sudo whoami
root
Per configurare un account sudo esistente o nuovo, visita il nostro tutorial su Come aggiungere un utente ai sudoer su AlmaLinux .
Per utilizzare l'account root , usa il comando seguente con la password di root per accedere.
su
Installa Nginx
Metodo 1. Installa Nginx da AlmaLinux AppStream
Il primo metodo consiste nell'installare Nginx dal flusso dell'app AlmaLinux. Questa versione è più vecchia ma stabile e sicura. Se è necessario eseguire un server Web primario o un proxy inverso, è spesso consigliabile installare il repository App Stream.
Per installare Nginx, esegui il seguente comando.
sudo dnf install nginx
Esempio di output:
Digita "Y" , quindi premere il "INVIO TASTO" per procedere con l'installazione.
Quindi, verifica la build della versione e se l'installazione è andata a buon fine.
sudo nginx -v
Esempio di output:
nginx version: nginx/1.14.1
Nota, i tuoi output saranno diversi a seconda del modulo che abiliti.
Prima di continuare, devi avviare il servizio Nginx.
sudo systemctl start nginx
Quindi, verifica lo stato per assicurarti che non ci siano errori.
systemctl status nginx
Esempio di output se tutto funziona correttamente:
Metodo 2. Installa Nginx da EPEL
La seconda opzione è installare Nginx dal repository EPEL. Questo ti porterà a una versione molto più aggiornata di Nginx che è ancora considerata stabile rispetto all'installazione delle ultime versioni obsolete da Nginx stesso. Il processo è relativamente semplice.
Innanzitutto, installa il repository EPEL:
sudo dnf install epel-release
Esempio di output:
Digita "Y", quindi premere il "INVIO TASTO" per procedere con l'installazione.
Ora, con EPEL installato, è necessario ripristinare i moduli Nginx.
sudo dnf module reset nginx
Quindi, elenca i moduli disponibili disponibili con dnf da tutti i repository conosciuti.
sudo dnf module list nginx
Esempio di output:
Come sopra, puoi passare a una versione superiore di stable o mainline. Nota che la versione stabile è sempre nel numero di build e la linea principale è naturalmente la linea principale.
Per abilitare uno dei nuovi moduli di EPEL, utilizza quanto segue nel tuo terminale.
Abilita l'ultima stabile:
sudo dnf module enable nginx:1.20
Nota per Nginx EPEL stabile: Questo potrebbe cambiare in futuro. Assicurati di elencare i moduli e non solo di copiare e incollare.
Abilita l'ultima linea principale:
sudo dnf module enable nginx:mainline
Ora installa Nginx:
sudo dnf install nginx
Esempio di output:
Digita "Y" quindi premere il "INVIO TASTO" per procedere con l'installazione.
Quindi, verifica la build della versione e se l'installazione è andata a buon fine.
sudo nginx -v
Esempio di output (linea principale):
nginx version: nginx/1.19.10
Nota, i tuoi output saranno diversi a seconda del modulo che abiliti.
Prima di continuare, devi avviare il servizio Nginx.
sudo systemctl enable nginx --now
Quindi, verifica lo stato per assicurarti che non ci siano errori.
systemctl status nginx
Esempio di output se tutto funziona correttamente:
Configura le regole del firewall
Non aggiunge automaticamente regole firewall alle porte standard 80 o 443 durante l'installazione di Nginx. Prima di continuare, dovresti impostare le seguenti regole, questo dipenderà dalle porte che utilizzerai, ma tutte le opzioni sono elencate.
Apri la porta 80 o HTTP:
sudo firewall-cmd --permanent --zone=public --add-service=http
Apri la porta 443 o HTTPS:
sudo firewall-cmd --permanent --zone=public --add-service=https
Ricarica il firewall per rendere effettive le modifiche
sudo firewall-cmd --reload
Configura il server Nginx
Dovrai avere l'indirizzo IP del server pronto per la configurazione. Il modo più semplice per farlo è con quanto segue.
Trova l'indirizzo IP del server
Sarà necessario che l'indirizzo IP del server sia preparato per la configurazione. Il modo più semplice per farlo è con quanto segue.
curl -4 icanhazip.com
Esempio di output:
XXX.XXX.XXX.XXX IP address
Se i comandi non funzionano, probabilmente non hai installato il pacchetto curl. Esegui il seguente comando:
sudo dnf install curl -y
Una volta ottenuto l'indirizzo IP del tuo server, apri il tuo browser Internet preferito e verifica che la pagina di destinazione predefinita funzioni.
http://your_server_ip
Dovresti ottenere la seguente pagina nel tuo browser Internet. Se non ottieni questa pagina ma una pagina di errore Nginx, va bene in quanto la versione EPEL potrebbe differire. Stai testando per assicurarti di poter raggiungere il server Nginx.
Imposta la directory di origine del sito
Nel tutorial, imposterai un dominio chiamato example.com , ma dovresti sostituirlo con il tuo nome di dominio . Il tutorial creerà le directory web e configurerà i file del sito nella directory principale /var/www/ .
Innanzitutto, crea la directory per example.com , come segue, utilizzando “-p” flag per creare le directory principali necessarie:
sudo mkdir -p /var/www/your_domain/html
In secondo luogo, dovrai assegnare il proprietario della directory.
sudo chown -R $USER:$USER /var/www/your_domain/html
In terzo luogo, assegna le autorizzazioni della directory, in modo che il proprietario legga, scriva ed esegua i file concedendo solo autorizzazioni di lettura ed esecuzione a gruppi e altri. Puoi inserire il seguente comando:
sudo chmod -R 755 /var/www/your_domain
In alternativa, puoi utilizzare /usr/share/nginx/html directory invece, ma il /var/www metodo directory è consigliato per i nuovi utenti.
Imposta pagina HTML di prova
In quarto luogo, crea una pagina di prova che utilizzerai per confermare che il tuo server Nginx sia operativo.
nano /var/www/your_domain/html/index.html
All'interno del nano editor e del nuovo file che hai creato. Inserisci quanto segue.
<html>
<head>
<title>Welcome to your_domain!</title>
</head>
<body>
<h1>Success! The your_domain server block is working!</h1>
</body>
</html>
Salva il file (CTRL+O), quindi esci da (CTRL+X) .
Crea blocco server Nginx
Per impostazione predefinita, il blocco del server Nginx, simile agli host virtuali Apache, viene gestito in /etc/nginx/conf.d directory. Tuttavia, l'installazione di Nginx varia a seconda delle versioni e delle distribuzioni che utilizzano il conf.d o siti-disponibili/siti-abilitati per impostazione predefinita. Per il tutorial, le directory del sito verranno utilizzate per mantenere uno standard.
Innanzitutto, rendi le directory necessarie per siti disponibili e abilitati per i siti . Anche gli utenti di Nginx avrebbero familiarità con questa configurazione.
sudo mkdir /etc/nginx/sites-available
sudo mkdir /etc/nginx/sites-enabled
Quindi, apri il tuo file nginx.conf e rimuovi o commenta "include /etc/nginx/default.d/*.conf;" e direttamente sotto aggiungi include “/etc/nginx/sites-enabled/*.conf;” .
Solo esempio:
# 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;
}
Come sopra, un "#" il commento è stato aggiunto a include conf.d riga e includi siti abilitati è stato aggiunto.
Salva il file (CTRL+O) ed esci da (CTRL+X) .
Quindi, crea il tuo file di configurazione del blocco del server. Il nome tuo_dominio.conf verrà utilizzato per il tutorial, ma questo può essere chiamato come preferisci.
sudo nano /etc/nginx/sites-available/your_domain.conf
Puoi incollare il seguente codice di esempio nel blocco. Questo è solo un esempio solo HTTP per i test di base.
server {
listen 80;
listen [::]:80;
root /var/www/your_domain/html;
index index.html index.htm;
server_name your_domain www.your_domain;
location / {
try_files $uri $uri/ =404;
}
}
L'esempio mostra che il tuo server sta ascoltando due nomi di server, "tuo_dominio" sulla porta 80.
Dovrai cambiare la directory principale nel nome/posizione della directory principale che hai creato.
Blocco server Nginx abilitato
È necessario collegare i file di configurazione dai siti disponibili ai siti abilitati nella directory Nginx per abilitare i blocchi del server Nginx. Questo può essere fatto con il comando ln -s come segue.
sudo ln -s /etc/nginx/sites-available/your_domain.conf /etc/nginx/sites-enabled/
Configurazione finale e test di esecuzione
Nella fase finale, dovrai aprire il tuo nginx.conf predefinito file.
sudo nano /etc/nginx/nginx.conf
E decommenta la riga seguente.
server_names_hash_bucket_size 64;
La dimensione del bucket di hash del nome del server viene modificata poiché a volte sorgono problemi con l'aggiunta di server aggiuntivi.
Quindi, testa il tuo Nginx per assicurarti che funzioni prima di riavviare correttamente.
sudo nginx -t
L'output dovrebbe essere se non ci sono errori nella sintassi:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Se hai il seguente output ok, riavvia il server Nginx affinché le modifiche avvengano.
sudo systemctl restart nginx
Ora apri il tuo browser Internet e digita il nome di dominio del server. Dovresti vedere che il blocco del tuo server è attivo.
Proteggi Nginx con il certificato gratuito SSL Let's Encrypt
Idealmente, vorresti eseguire il tuo Nginx su HTTPS utilizzando un certificato SSL . Il modo migliore per farlo è utilizzare Let's Encrypt, un'autorità di certificazione gratuita, automatizzata e aperta gestita dal Internet Security Research Group (ISRG) senza scopo di lucro .
Innanzitutto, installa EPEL repository e mod_ssl pacchetto per pacchetti e sicurezza più aggiornati.
sudo dnf install epel-release mod_ssl -y
Quindi, installa il pacchetto certbot come segue:
sudo dnf install python3-certbot-nginx -y
Una volta installato, esegui il seguente comando per avviare la creazione del tuo certificato:
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d www.example.com
Questa è la configurazione ideale che include i reindirizzamenti HTTPS 301 forzati, l'intestazione Strict-Transport-Security e la pinzatura OCSP. Assicurati solo di adattare l'e-mail e il nome di dominio alle tue esigenze.
Ora il tuo URL sarà HTTPS://www.example.com invece di HTTP://www.example.com .
Nota, se utilizzi il vecchio URL HTTP , reindirizzerà automaticamente a HTTPS .
Facoltativamente, puoi impostare un processo cron per rinnovare automaticamente i certificati. Certbot offre uno script che lo fa automaticamente e puoi prima testare per assicurarti che tutto funzioni eseguendo una corsa a secco.
sudo certbot renew --dry-run
Se tutto funziona, apri la finestra di crontab utilizzando il seguente comando da terminale.
sudo crontab -e
Quindi, specifica l'ora in cui dovrebbe rinnovarsi automaticamente. Questo dovrebbe essere controllato almeno quotidianamente e, se il certificato deve essere rinnovato, lo script non aggiornerà il certificato. Se hai bisogno di aiuto per trovare un buon momento per impostare, usa lo strumento gratuito crontab.guru.
00 00 */1 * * /usr/sbin/certbot-auto renew
Salva (CTRL+O) quindi esci da (CTRL+X), e il cronjob verrà abilitato automaticamente.
Gestione del servizio Nginx
Ora che Nginx è in esecuzione correttamente sul tuo server, alcune note chiave di gestione sono le seguenti.
Per fermare il server web Nginx:
sudo systemctl stop nginx
Per avviare il server web Nginx:
sudo systemctl start nginx
Per riavviare il server web Nginx:
sudo systemctl restart nginx
Per ricaricare il server web Nginx (per modifiche minori che non richiedono un riavvio) :
sudo systemctl reload nginx
Per disabilitare Nginx all'avvio del server:
sudo systemctl disable nginx
Per avviare Nginx all'avvio del server (abilitato automaticamente all'installazione) :
sudo systemctl enable nginx
Come accedere ai registri del server Nginx
Directory dei registri di Nginx
Per impostazione predefinita, tutti i registri di accesso/errore di NGINX, a meno che non siano stati modificati, si trovano nella directory dei registri, che può essere visualizzata dal comando seguente.
Innanzitutto, vai alla directory dei registri ed elenca i file:
cd /var/log/nginx && ls -l
Dovresti trovare i seguenti file di accesso e di errore:
Registro accessi:
/var/log/nginx/access.log
Registro errori:
/var/log/nginx/error.log
Per visualizzare i log in tempo reale nel tuo terminale usando il comando sudo tail -f /location/of/log path.
Esempio:
sudo tail -f /var/log/nginx/access.log
Un'altra opzione è stampare l'ultima quantità X di righe. Ad esempio, X viene sostituito con 30 per stampare 30 righe aggiungendo il flag -n 30 .
sudo tail -f /var/log/nginx/access.log -n 30
Questi sono solo alcuni esempi di lettura dei log e anche grep può essere utile.
Come configurare la rotazione del registro di Nginx
Nginx installa automaticamente la rotazione del registro e lo configura come predefinito, ovvero ruotare ogni giorno. Puoi modificare queste impostazioni accedendo al file come mostrato di seguito.
sudo nano /etc/nginx/logrotate.d/nginx
Successivamente, vedrai la stessa struttura di file, se non simile. Puoi modificare i contenuti qui. Principalmente puoi cambiare il numero di registri da conservare o passare da giornaliero a settimanale. Questo dovrebbe essere lasciato per impostazione predefinita a meno che tu non abbia requisiti di registro specifici per software come il monitoraggio fail2ban o simili.
/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
}
Le impostazioni principali che probabilmente vorrai modificare sono le seguenti:
- Quotidiano – Questo può essere cambiato in Settimanale, Mensile. Questo dovrebbe essere mantenuto ogni giorno, altrimenti sarà difficile passare attraverso il file di registro.
- Ruota 14 – Questo è il numero di log da conservare e rimuovere, quindi al massimo ci sono solo 14 log, se vuoi conservare solo 7 giorni di log cambialo in 7.
Si consiglia di non toccare altre impostazioni a meno che tu non sappia cosa stai facendo.
Come aggiornare Nginx
Nginx verrà aggiornato per impostazione predefinita quando una nuova versione raggiunge i repository. Prima di eseguire l'aggiornamento, è sempre consigliabile eseguire il backup della directory Nginx o, almeno, di nginx.conf file. Puoi farlo con il seguente comando.
Backup di nginx.conf (altamente consigliato):
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx-backup.conf
Se preferisci, esegui il backup dell'intera cartella Nginx:
sudo cp /etc/nginx/ /etc/nginx-bkup
Quindi, esegui il comando di aggiornamento standard.
sudo dnf upgrade --refresh
Se è disponibile un aggiornamento, esegui l'aggiornamento.
Potrebbe esserti richiesto durante un aggiornamento o un'installazione, ma farlo manualmente in anticipo è piuttosto essenziale. Per configurazioni Nginx di grandi dimensioni di più siti, il backup su qualcosa come Github o Gitlab sarebbe ancora più vantaggioso.
Come rimuovere (disinstallare) Nginx
Per rimuovere Nginx se non lo usi più, puoi farlo usando il seguente comando:
sudo dnf autoremove nginx
Questo comando rimuoverà anche tutte le dipendenze inutilizzate fornite con l'installazione.
Ricorda, se installi Nginx usando EPEL e desideri ripristinarlo per reinstallare la versione originale, usa il comando seguente come indicato in precedenza.
sudo dnf modules reset nginx