In questa guida esploreremo come utilizzare nginx in Ubuntu 20.04, ovvero l'installazione di nginx e la configurazione di nginx per servire un sito virtuale.
Installazione di Nginx
aggiorna il nostro indice di pacchetto locale in modo da avere accesso agli elenchi di pacchetti più recenti
sudo apt update
Installa nginx
sudo apt install nginx
Aggiorna firewall
Elenca le app disponibili:
sudo ufw app list
Esempio di output:
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
I profili Nginx elencati:
Nginx Full
– Sia http – 80 che https – 443Nginx HTTP
– solo traffico http 80Nginx HTTPS
– Solo traffico https 443 – Traffico crittografato TLS/SSL
Abilita il profilo che desideri, sia http che https nel nostro caso:
sudo ufw allow 'Nginx Full'
Verifica la modifica
sudo ufw status
Il comando precedente produrrà quale traffico è consentito.
Configurazione di nginx
Controlla la versione installata
sudo apt list --installed | grep nginx
Controlla il servizio systemd
sudo systemctl status nginx
Dovresti vedere questo output che mostra che nginx è in esecuzione
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2021-07-30 14:07:33 UTC; 2min 42s ago
Docs: man:nginx(8)
Main PID: 4684 (nginx)
Tasks: 5 (limit: 9257)
CGroup: /system.slice/nginx.service
├─4684 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─4685 nginx: worker process
├─4686 nginx: worker process
├─4687 nginx: worker process
└─4688 nginx: worker process
Jul 30 14:07:33 frhb64566ds systemd[1]: Starting A high performance web server and a reverse proxy server...
Jul 30 14:07:33 frhb64566ds systemd[1]: Started A high performance web server and a reverse proxy server.
Per assicurarti che il servizio nginx sia sempre in esecuzione anche dopo il riavvio, usa questo comando systemnd per abilitare:
sudo systemctl enable nginx
Puoi usare questi altri comandi di sistema per gestire nginx:
# To start the service
sudo systemctl start nginx
# To restart the service
sudo systemctl restart nginx
# To reload the service config
sudo systemctl reload nginx
# To stop the service config
sudo systemctl restart nginx
# To disable the service config
sudo systemctl restart nginx
Per confermare che nginx è effettivamente in esecuzione ed è raggiungibile, usa questo comando:
curl http://server_ip/
dove server_ip
è l'ip del tuo server. Se per qualsiasi motivo non conosci l'ip pubblico del tuo server usa questo per controllare:
curl -4 icanhazip.com
Quindi:
curl http://178.170.10.54/
Dovresti ottenere la pagina nginx predefinita.
Utilizzo di una semplice pagina statica nginx
Diamo un'occhiata a un esempio per servire una pagina statica con nginx. La pagina statica è html e css che non richiede alcun rendering lato server. Utilizzeremo il dominio di esempio your.domain.com
nel nostro caso.
Passi:
-
Crea la directory per memorizzare i nostri contenuti statici (useremo
/var/www/your.domain.com
)sudo mkdir -p /var/www/your.domain.com
-
Assicurati che la directory creata sia accessibile dall'utente corrente
sudo chown -R ${USER}:${USER} /var/www/your.domain.com sudo chmod -R 755 /var/www/your.domain.com
-
Aggiungi un file di esempio alla directory (
/var/www/your.domain.com/index.html
)cat > /var/www/your.domain.com/index.html <<EOF <html> <head> <title>Hola from your.domain.com!</title> </head> <body> <h1>Hey!</h1> <p>Our site <i>your.domain.com</i> is working as expected.</p> </body> </html> EOF
-
Crea la configurazione di nginx nella directory
/etc/nginx/conf.d
dove nginx cerca le configurazioni da includere durante la pubblicazione. Creeremo il file/etc/nginx/conf.d/your.domain.com.conf
con il contenuto richiesto.
Usa questo comando:
cat > /etc/nginx/conf.d/your.domain.com.conf <<EOF
server {
listen 80;
server_name your.domain.com;
root /var/www/your.domain.com;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
EOF
-
Verifica che non ci siano errori di sintassi in nessuno dei file nginx
sudo nginx -t
-
Se non ci sono errori, riavvia nginx per ricaricare config
sudo systemctl restart nginx
-
Per assicurarti che il tuo dominio possa raggiungere il server, modifica la tua configurazione DNS per assicurarti che i record A del sito
your.domain.com
punta all'IP del server.
Il tuo sito dovrebbe ora essere attivo e funzionante. Conferma visitando http://tuo.dominio.com
File e directory Nginx importanti in Nginx
-
/var/www/html
:Questa è la directory del contenuto web. Questo contiene il contenuto predefinito della pagina nel fileindex.nginx-debian.html
. Quella pagina viene visualizzata quando non è definito alcun host server specifico. -
/etc/nginx
:contiene tutti i file di configurazione di nginx. -
/etc/nginx/nginx.conf
:Questo è il principale file di configurazione globale di nginx -
/etc/nginx/sites-available/
:la directory in cui possono essere archiviati i blocchi del server per sito. Nginx non utilizzerà i file di configurazione trovati in questa directory a meno che non siano collegati asites-enabled
directory. In genere, tutta la configurazione del blocco del server viene eseguita in questa directory e quindi abilitata collegandosi all'altra directory. -
/etc/nginx/sites-enabled/
:la directory in cui sono archiviati i blocchi server per sito abilitati. In genere, questi vengono creati collegandosi ai file di configurazione che si trovano nella directory dei siti disponibili. -
/etc/nginx/snippets
:questa directory contiene frammenti di configurazione che possono essere inclusi altrove nella configurazione di Nginx. I segmenti di configurazione potenzialmente ripetibili sono buoni candidati per il refactoring in snippet. -
/var/log/nginx/access.log
:Ogni richiesta al tuo server web viene registrata in questo file di registro a meno che Nginx non sia configurato per fare diversamente. -
/var/log/nginx/error.log
:Eventuali errori Nginx verranno registrati in questo registro.