Nginx è un software gratuito e open source. È un'applicazione server web rilasciata nel 2004, creata per risolvere il cosiddetto “problema c10k”, ossia l’incapacità di un server web, che utilizza i thread per gestire le richieste degli utenti, di gestire più di 10.000 connessioni contemporaneamente.
Nginx è un'alternativa ad Apache ed è considerato uno dei server web HTTP più popolari al mondo. A differenza di Apache, tende a consumare meno risorse e migliora la reattività del server. Il suo design basato sugli eventi consente di impostare configurazioni avanzate e gestire un carico elevato di connessioni simultanee. Inoltre funziona anche come proxy inverso, bilanciatore del carico e server di posta standard.
Nginx risulta molto più adatto di Apache (che utilizza la struttura basata su thread) per i siti web ad alto traffico che necessitano di prestazioni elevate e di velocità. Il modello basato su eventi distribuisce le richieste degli utenti tra i processi di lavoro in modo efficiente, garantendo quindi una scalabilità migliore.
É una scelta eccellente per la gestione di siti ad alto traffico con l’utilizzo di minime risorse. É infatti utilizzato da siti web ad alto traffico come Netflix, Hulu, Pinterest e Airbnb.
Per installare Nginx, è necessario utilizzare il seguente comando:
su ambiente linux Debian/Ubuntu:
sudo apt update
sudo apt install nginx
su ambiente linux CentOS:
sudo yum install epel-release
sudo yum install nginx
sudo systemctl enable nginx
sudo systemctl start nginx
Se il server è protetto da un firewall, è necessario aprire le porte HTTP (80) e HTTPS (443), utilizzando i seguenti comandi:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
L’utente per verificare che l’installazione sia stata completata correttamente dovrà puntare il suo browser all'indirizzo IP del suo server. Se la procedura è andata a buon fine l’utente visualizzerà la seguente immagine. É bene ricordare però che nel caso in cui ambiente linux sia CentOS potrebbe apparire una diversa schermata.
Qualora l’utente ricevesse un messaggio di errore "test failed" per il file nginx.conf, potrebbe riscontrare un problema con l'indirizzo IP.
Il servizio Nginx consente connessioni IPv4 e IPv6, per impostazione predefinita. Il test avrà esito negativo se il server non supporta IPv6. Tuttavia, questo problema può essere risolto modificando il file di configurazione principale, seguendo pochi semplici passaggi:
Aprire il file di configurazione principale, /etc/nginx/nginx.conf.
Trovare e commentare la seguente riga:
listen [::]:80 default_server;
Aggiungere "#" all'inizio della riga.
Salvare le modifiche apportate e ricaricare Nginx.
sudo systemctl reload nginx
Una volta inserito l’indirizzo IP del server nel browser, l’utente potrà visualizzare la pagina di test Nginx predefinita.
Gestione del servizio NGINX
È possibile gestire il servizio Nginx allo stesso modo di qualsiasi altra unità di sistema.
Per interrompere il servizio Nginx, eseguire:
sudo systemctl stop nginx
Per avviarlo di nuovo, digitare:
sudo systemctl start nginx
Per riavviare il servizio Apache:
sudo systemctl restart nginx
Per ricaricare il servizio NGINX dopo aver apportato alcune modifiche alla configurazione:
sudo systemctl reload nginx
Se si desidera disabilitare l'avvio del servizio Apache all'avvio:
sudo systemctl disable nginx
E per riattivarlo di nuovo:
sudo systemctl enable nginx
Creare un sito web
La pagina predefinita su Debian/Ubntu si trova in /var/www/html/ mentre su CentOS potrebbe essere /usr/share/nginx. Puoi posizionare le tue pagine statiche qui o utilizzare l'host virtuale e posizionarlo altrove.
La root directory che contiene i files html del server Nginx predefinita, su CentOS è /usr/share/nginx/html, mentre su Debian/Ubuntu è /var/www/html.
Creiamo una semplice pagina HTML in /var/www/keliweb/ e crea il file index.html all’interno della cartella.
cd /var/www
mkdir keliweb
cd keliweb
nano index.html
Incolla il seguente codice all’interno del file index.html:
<html>
<head>
</head>
<body>
<h1>Keliweb Spacca con Nginx!</h1>
<p>Il nostro nginx web server sta funzionando!</p>
</body>
</html>
Impostare il Virtual Host
Il Virtual Host è un metodo per ospitare più nomi di dominio sullo stesso server.
NB: nelle distribuzioni basate su Ubuntu e Debian, i file di configurazione sono memorizzati nella directory /etc/nginx/sites-available, mentre su CentOS nella directory /etc/nginx/conf.d.
cd /etc/nginx/sites-enabled
nano keliweb
Incolla il seguente codice all’interno del file:
server {
listen 80;
listen [::]:80;
server_name esempio.keliweb.com;
root /var/www/keliweb;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
root è la directory in cui abbiamo inserito il nostro file .html. index viene utilizzato per specificare il file disponibile quando si visita la directory principale del sito. server_name sarà l’indirizzo al quale sarà puntato il server web.
Per essere sicuri che il sito funzioni, riavviamo adesso Nginx con il seguente comando:
sudo systemctl restart nginx
Controlliamo se tutto funziona come dovrebbe. Apriamo il sito appena creato nel browser web.
Il server web Nginx è stato correttamente configurato.