NGINX è un server web ad alte prestazioni utilizzato in particolare per la gestione di file statici e come proxy inverso. grazie alla sua versatilità NGINX può essere utilizzato in ogni situazione. In questa guida vedrai come installarlo sul tuo server e come configurarlo per due o più domini.
Per prima cosa, connettiti al tuo server tramite una connessione SSH. Se non l'hai ancora fatto, ti consigliamo di seguire la nostra guida per connetterti in modo sicuro con SSH. In caso di server locale, vai al punto successivo e apri il terminale del tuo server.
Installazione di NGINX
Aggiorna i repository di distribuzione per essere sicuro di scaricare l'ultima versione di NGINX:
$ sudo apt update
Esegui il seguente comando per installare il pacchetto NGINX:
$ sudo apt install nginx
Una volta completata l'installazione, avvia il servizio e installalo sul sistema:
$ sudo systemctl start nginx
$ sudo systemctl enable nginx
Configurazione firewall
In caso di un firewall sul tuo sistema, impostalo per abilitare il traffico HTTP e il traffico HTTPS sul tuo computer.
Quando si utilizza il firewall UFW, vengono forniti profili preinstallati per NGINX. Vediamo quindi come abilitarli.
Per verificare i profili disponibili installati sul firewall UFW, eseguire questo comando:
$ sudo ufw app list
Sullo schermo verrà visualizzato un elenco simile al seguente:
Available applications:
Dovecot IMAP
Dovecot POP3
Dovecot Secure IMAP
Dovecot Secure POP3
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
Postfix
Postfix SMTPS
Postfix Submission
Per consentire il traffico HTTP (porta 80) e HTTPS (porta 443), utilizzare il profilo "Nginx Full".
Controlla le informazioni del tuo profilo come mostrato di seguito:
$ sudo ufw app info "Nginx Full"
Apparirà la descrizione del profilo su schermo:
Profile: Nginx Full
Title: Web Server (Nginx, HTTP + HTTPS)
Description: Small, but very powerful and efficient web server
Ports:
80,443/tcp
Dopo aver controllato il profilo sarai pronto per abilitarlo:
$ sudo ufw allow in "Nginx Full"
A questo punto la configurazione di NGINX e del firewall è completata. Testare il server web visitando l'indirizzo http://
Configurazione corretta di due domini/siti web:
Di seguito viene mostrato come configurare due host virtuali (chiamati "blocchi server") per avere due spazi web completamente separati. In questo esempio utilizzeremo due domini fittizi:
www.tuodominio.com
www.tuodominio2.com
Entrambi i record A devono puntare all'indirizzo IP pubblico del tuo server.
Inizia creando tutte le cartelle necessarie per contenere i file pubblici dei tuoi siti web:
$ sudo mkdir /var/www
$ sudo mkdir /var/www/yourdomain.com
$ sudo mkdir /var/www/yourdomain.com/htdocs
$ sudo mkdir /var/www/yourdomain.com/logs
$ sudo mkdir /var/www/yourdomain2.com
$ sudo mkdir /var/www/yourdomain2.com/htdocs
$ sudo mkdir /var/www/yourdomain2.com/logs
Come contenuto temporaneo, copia la pagina NGINX predefinita nelle cartelle htdocs di ciascun dominio:
$ sudo cp /usr/share/nginx/html/* /var/www/yourdomain.com/htdocs/
$ sudo cp /usr/share/nginx/html/* /var/www/yourdomain2.com/htdocs/
Ora, procedi alla configurazione effettiva di NGINX. NGINX di solito legge tutti i file .conf nella directory /etc/nginx/conf.d/, continua creando due file (uno per dominio), nominandoli:
tuodominio_com.conf
tuodominio2_com.conf
Utilizza il tuo editor di testo preferito per scrivere la seguente configurazione nel file tuodominio_com.conf:
server {
listen 80;
server_name yourdomain.com *.yourdomain.com;
root /var/www/yourdomain.com/htdocs;
access_log /var/www/yourdomain.com/logs/access.log main;
error_log /var/www/yourdomain.com/logs/error.log warn;
}
Ovviamente devi usare una configurazione simile anche per tuodominio2_com.conf:
server {
listen 80;
server_name yourdomain2.com *.yourdomain2.com;
root /var/www/yourdomain2.com/htdocs;
access_log /var/www/yourdomain2.com/logs/access.log main;
error_log /var/www/yourdomain2.com/logs/error.log warn;
}
Oltre all'impostazione della cartella principale per i file del dominio virtuale, ci sono anche le impostazioni per configurare i percorsi dei file di log (sia di accesso che di errore) in modo da avere un log per dominio. Normalmente, NGINX salva tutti i log nella directory /var/log/nginx/ ma in caso di dominio multiplo, il risultato potrebbe creare confusione.
I log possono diventare troppo grandi nel tempo se il loro percorso viene modificato., È quindi necessario impostare una rotazione dei file in modo da eliminare i contenuti più vecchi. Per farlo, usa il software logrotate.
Per aggiungere nuovi file di registro nelle impostazioni di logrotate, modificare il file /etc/etc/logrotate.d/nginx:
/var/log/nginx/*log {
create 0644 nginx nginx
daily
rotate 10
missingok
notifempty
compress
sharedscripts
postrotate
/bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
endscript
}
Come puoi vedere, esiste già una configurazione per i file NGINX in /var /log/nginx. Procedi modificando la prima parte del file come segue:
/var/log/nginx/*log
/var/www/*/logs/* {
...
}
Una volta apportata questa modifica, logrotate gestirà tutti i file nelle cartelle logs di /var/www/miodominio.it e /var/www/tuodominio.com (e di tutti gli altri), senza doversi preoccupare di qualsiasi altro dominio che potrebbe essere aggiunto in futuro.
Una volta completato, riavvia il servizio per applicare le modifiche:
$ sudo systemctl reload nginx