Come installare Nginx su Debian 10

Introduzione

Nginx è un server web gratuito e open-source utilizzato per ospitare siti web e applicazioni di tutte le dimensioni. Il software è noto per il suo basso impatto sulle risorse di memoria, l’alta scalabilità e la sua architettura modulare, basata su eventi, che può offrire prestazioni sicure e prevedibili. Più che un semplice server web, Nginx funziona anche come bilanciatore di carico, cache HTTP e proxy inverso.

In questa guida, installerai Nginx sul tuo server Debian 10.

Prerequisiti

Prima di iniziare questa guida, dovresti avere un utente regolare, non root, con privilegi sudo configurato sul tuo server. Dovresti anche avere un firewall attivo. Puoi imparare come configurarlo seguendo la nostra guida alla configurazione iniziale del server per Debian 10.

Passaggio 1 – Installazione di Nginx

Nginx è disponibile nei repository software predefiniti di Debian, rendendo possibile installarlo tramite gli strumenti convenzionali di gestione dei pacchetti.

Prima di tutto, aggiorna l’indice dei pacchetti locali per riflettere le ultime modifiche upstream:

  1. sudo apt update

Successivamente, installa il pacchetto nginx:

  1. sudo apt install nginx

Conferma l’installazione, inserendo Y, quindi premi Invio per procedere. apt installerà quindi Nginx e tutte le dipendenze necessarie sul tuo server.

Passaggio 2 – Regolazione del Firewall

Prima di testare Nginx, è necessario modificare le impostazioni del firewall per consentire l’accesso esterno alle porte web predefinite. Presumendo che tu abbia seguito le istruzioni nei prerequisiti, dovresti avere un firewall UFW configurato per limitare l’accesso al tuo server.

Durante l’installazione, Nginx si registra con UFW per fornire alcuni profili di applicazione che possono essere utilizzati per abilitare o disabilitare l’accesso a Nginx attraverso il firewall.

Visualizza l’elenco dei profili di applicazione ufw digitando:

  1. sudo ufw app list

Dovresti ottenere un elenco dei profili di applicazione:

Output
Available applications: ... Nginx Full Nginx HTTP Nginx HTTPS ...

Come puoi vedere, ci sono tre profili disponibili per Nginx:

  • Nginx Completo: Questo profilo apre sia la porta 80 (traffico web normale, non criptato) sia la porta 443 (traffico crittografato TLS/SSL)
  • Nginx HTTP: Questo profilo apre solo la porta 80 (traffico web normale, non criptato)
  • Nginx HTTPS: Questo profilo apre solo la porta 443 (traffico crittografato TLS/SSL)

Si consiglia di abilitare il profilo più restrittivo che consenta comunque il traffico che hai configurato. Poiché non hai ancora configurato TLS/SSL per il tuo server in questa guida, dovrai consentire solo il traffico HTTP sulla porta 80.

Puoi abilitarlo digitando:

  1. sudo ufw allow 'Nginx HTTP'

Puoi verificare la modifica digitando:

  1. sudo ufw status

Cosa appare sono il traffico HTTP consentito nell’output:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)

Passaggio 3 – Verifica del tuo server Web

Alla fine del processo di installazione, Debian 10 avvia Nginx. Il server web dovrebbe già essere attivo e in esecuzione.

Puoi controllare con il sistema di inizializzazione systemd per assicurarti che il servizio sia in esecuzione digitando:

  1. systemctl status nginx
Output
● 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 Tue 2022-06-28 18:42:58 UTC; 49s ago Docs: man:nginx(8) Main PID: 2729 (nginx) Tasks: 2 (limit: 1167) Memory: 7.2M CGroup: /system.slice/nginx.service ├─2729 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─2730 nginx: worker process

Questo output rivela che il servizio è stato avviato con successo. Tuttavia, il modo migliore per testarlo è richiedere effettivamente una pagina da Nginx.

Puoi accedere alla pagina di atterraggio predefinita di Nginx per confermare che il software funziona correttamente navigando all’indirizzo IP del tuo server. Se non conosci l’indirizzo IP del tuo server, puoi digitare questo nel prompt dei comandi del tuo server:

  1. ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Riceverai alcuni risultati. Puoi provare ciascuno nel tuo browser web per vedere se funzionano.

Quando hai l’indirizzo IP del tuo server, inseriscilo nella barra degli indirizzi del tuo browser:

http://your_server_ip

La pagina predefinita di atterraggio di Nginx dovrebbe apparire nel tuo browser web:

Questa pagina è inclusa con Nginx per mostrarti che il server sta funzionando correttamente.

Passaggio 4 – Gestione del processo Nginx

Ora che hai il tuo server web in funzione, puoi esaminare alcuni comandi di gestione di base.

Per interrompere il tuo server web, digita:

  1. sudo systemctl stop nginx

Per avviare il server web quando è interrotto, digita:

  1. sudo systemctl start nginx

Per interrompere e quindi avviare nuovamente il servizio, digita:

  1. sudo systemctl restart nginx

Se stai apportando modifiche alla configurazione, Nginx può spesso ricaricare senza interrompere le connessioni. Per farlo, digita:

  1. sudo systemctl reload nginx

Per impostazione predefinita, Nginx è configurato per avviarsi automaticamente quando il server si avvia. Se questo non è ciò che desideri, puoi disabilitare questo comportamento digitando:

  1. sudo systemctl disable nginx

Per riattivare il servizio per l’avvio al boot, puoi digitare:

  1. sudo systemctl enable nginx

Passaggio 5 – Configurazione dei Blocchi del Server (Opzionale)

Quando si utilizza il server web Nginx, i blocco server (simili agli host virtuali in Apache) possono essere utilizzati per racchiudere i dettagli di configurazione e ospitare più di un dominio su un singolo server. Nei comandi seguenti, sostituisci il_tuo_dominio con il tuo nome di dominio. Per saperne di più su come configurare un nome di dominio con DigitalOcean, consulta la nostra introduzione a DigitalOcean DNS.

Nginx su Debian 10 ha un blocco server abilitato per impostazione predefinita che è configurato per servire documenti da una directory in /var/www/html. Anche se questo funziona bene per un singolo sito, può diventare ingestibile se si stanno ospitando più siti. Invece di modificare /var/www/html, crea una struttura di directory all’interno di /var/www per il sito il_tuo_dominio, lasciando /var/www/html al suo posto come directory predefinita da servire se una richiesta del client non corrisponde ad altri siti.

Crea la directory per il_tuo_dominio come segue, utilizzando il flag -p per creare eventuali directory parent:

  1. sudo mkdir -p /var/www/your_domain/html

Successivamente, assegna la proprietà della directory con la variabile di ambiente $USER, che dovrebbe fare riferimento al tuo utente di sistema corrente:

  1. sudo chown -R $USER:$USER /var/www/your_domain/html

Le autorizzazioni della tua radice web dovrebbero essere corrette se non hai modificato il valore del tuo umask, ma puoi assicurartene digitando:

  1. sudo chmod -R 755 /var/www/your_domain

Successivamente, crea una pagina index.html di esempio utilizzando nano o il tuo editor di testo preferito:

  1. nano /var/www/your_domain/html/index.html

All’interno, aggiungi il seguente HTML di esempio:

/var/www/your_domain/html/index.html
<html>
    <head>
        <title>Welcome to your_domain</title>
    </head>
    <body>
        <h1>Success! Your Nginx server is successfully configured for <em>your_domain</em>. </h1>
<p>This is a sample page.</p>
    </body>
</html>

Salva e chiudi il file quando hai finito. In nano puoi farlo premendo CTRL + X, poi Y, e poi INVIO.

Per fare in modo che Nginx serva questo contenuto, devi creare un blocco server con le direttive corrette che puntano alla tua radice web personalizzata. Invece di modificare direttamente il file di configurazione predefinito, ne crea uno nuovo in /etc/nginx/sites-available/il_tuo_dominio:

  1. sudo nano /etc/nginx/sites-available/your_domain

Aggiungi il seguente blocco di configurazione, simile a quello predefinito, ma aggiornato per il tuo nuovo directory e nome di dominio:

/etc/nginx/sites-available/your_domain
server {
        listen 80;
        listen [::]:80;

        root /var/www/your_domain/html;
        index index.html index.htm index.nginx-debian.html;

        server_name your_domain www.your_domain;

        location / {
                try_files $uri $uri/ =404;
        }
}

Nota l’aggiornata configurazione root alla tua nuova directory e il server_name al tuo nome di dominio. Ricorda di sostituire il_tuo_dominio con il tuo effettivo nome di dominio.

Successivamente, abilita questo blocco server creando un collegamento simbolico al tuo file di configurazione personalizzato all’interno della directory sites-enabled, che Nginx legge durante l’avvio:

  1. sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

Il tuo server ora ha due blocchi server abilitati e configurati per rispondere alle richieste in base alle loro direttive listen e server_name (puoi leggere di più su come Nginx elabora queste direttive qui):

  • il_tuo_dominio: Risponderà alle richieste per il_tuo_dominio e www.il_tuo_dominio.
  • default: Risponderà a qualsiasi richiesta sulla porta 80 che non corrisponde agli altri due blocchi.

Per evitare un possibile problema di memoria del bucket hash che può sorgere dall’aggiunta di ulteriori nomi server alla tua configurazione, è necessario regolare un singolo valore nel file /etc/nginx/nginx.conf. Apri il file:

  1. sudo nano /etc/nginx/nginx.conf

Trova la direttiva server_names_hash_bucket_size e rimuovi il simbolo # per decommentare la riga:

/etc/nginx/nginx.conf
...
http {
    ...
    server_names_hash_bucket_size 64;
    ...
}
...

Salva e chiudi il file quando hai finito.

Successivamente, testa per assicurarti che non ci siano errori di sintassi in nessuno dei tuoi file Nginx:

  1. sudo nginx -t

Se non ci sono problemi, l’output sarà il seguente:

Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

Una volta superato il test di configurazione, riavvia Nginx per abilitare le tue modifiche:

  1. sudo systemctl restart nginx

Nginx dovrebbe ora servire il nome del tuo dominio. Puoi testarlo navigando su http://tuo_dominio. L’HTML personalizzato che hai creato nella cartella /var/www/tuo_dominio/html/index.html dovrebbe essere visualizzato qui:

Passaggio 6 – Conoscere i File e le Directory Importanti di Nginx

Ora che sai come gestire il servizio Nginx stesso, puoi prenderti del tempo per familiarizzare con alcune directory e file importanti.

Contenuto

  • /var/www/html: Il contenuto web effettivo, che per default consiste solo nella pagina predefinita di Nginx che hai visto in precedenza, viene servito dalla directory /var/www/html. Questo può essere cambiato modificando i file di configurazione di Nginx.

Configurazione del Server

  • /etc/nginx: La directory di configurazione di Nginx. Tutti i file di configurazione di Nginx risiedono qui.
  • /etc/nginx/nginx.conf: Il file di configurazione principale di Nginx. Questo può essere modificato per apportare modifiche alla configurazione globale di Nginx.
  • /etc/nginx/sites-available/: La directory in cui possono essere memorizzati i blocchi server per sito. Nginx non utilizzerà i file di configurazione trovati in questa directory a meno che non siano collegati alla directory sites-enabled. Tipicamente, tutta la configurazione del blocco server viene fatta in questa directory e quindi abilitata collegandola all’altra directory.
  • /etc/nginx/sites-enabled/: La directory in cui vengono memorizzati i blocchi server per sito abilitati. Tipicamente, questi vengono creati collegandosi ai file di configurazione trovati nella directory sites-available.
  • /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 la ristrutturazione in snippet.

Registri del server

  • /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 diversamente.
  • /var/log/nginx/error.log: Eventuali errori di Nginx verranno registrati in questo registro.

Conclusione

Ora che hai installato il tuo server web, hai molte opzioni per il tipo di contenuto che puoi servire e le tecnologie che puoi utilizzare per creare un’esperienza più ricca per i tuoi utenti.

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-debian-10