Tutorial NGINX: i comandi base e le configurazioni

Nel nostro articolo di base abbiamo già riassunto per voi cosa sia NGINX, come installarlo sul vostro sistema e come configurarlo. Nel seguente tutorial, vi offriamo una panoramica sui comandi base e sulle possibilità di configurazione di questo moderno web server.

L’unità di controllo centrale: nginx.conf

Rispetto ad Apache, NGINX funziona in maniera diversa, in quanto si basa su eventi. Le singole richieste non vengono classificate di volta in volta come un nuovo processo di lavoro, per il quale devono essere caricati tutti i moduli, ma come eventi. Questi eventi vengono suddivisi tra i processi di lavoro esistenti, che vengono mantenuti attraverso il processo principale sovraordinato. Come molti processi di lavoro avvengono e come si distribuiscono le richieste del server (cioè gli eventi), è definito nel file di configurazione nginx.conf. Di solito, li trovate nelle cartelle /usr/local/nginx/conf, /etc/nginx o in /usr/local/etc/nginx

Gestire i processi e occuparsi delle nuove configurazioni

NGINX inizia l’installazione in maniera automatica, ma potete anche eseguirla, in alternativa, dando i seguenti comandi:

sudo service nginx start

Potete verificare se il web server viene avviato, interrogando i processi (prima di tutto quello principale) con il parametro -s e un preciso segnale. La sintassi del relativo comando è semplice:

sudo nginx -s signal

Tra i “signal” (segnali) avete, tra le altre, le seguenti quattro possibilità:

  • stop: NGINX viene subito chiuso.
  • quit: NGINX viene chiuso, subito dopo aver risposto a tutte le richieste attive.
  • reload: il file di configurazione viene ricaricato.
  • reopen: i file di log vengono riavviati.

L’opzione reload, con la quale il file di configurazione viene caricato di nuovo, rappresenta una buona opportunità per salvare le modifiche, senza dover arrestare il web server o riavviarlo. In ogni caso dovete scegliere una variante (il riavvio completo del server o un semplice reload di nginx) affinché le modifiche vengano salvate. Se avete scelto quest’ultima opzione e avete eseguito il comando sottostante, il processo principale riceve l’istruzione di apportare le modifiche nel file nginx.conf:

sudo nginx -s reload

A questo scopo viene verificata anche la correttezza della sintassi. Se si riceve una risposta positiva, il processo principale avvia nuovi processi di lavoro con le nuove impostazioni e incomincia allo stesso tempo a bloccare quelli vecchi. Se non si riesce a convalidare la sintassi, viene mantenuta la configurazione precedente. Tutti i processi di lavoro attivi vengono terminati, non appena tutte le richieste attive sono state elaborate.

Tra l’altro potete indirizzare i processi NGINX anche in maniera mirata con l’aiuto del comando kill. Avete bisogno solo del rispettivo ID del processo, che trovate nel file nginx.pid all’interno della cartella /usr/local/nginx/logs o in alternativa in quella /var/run. Ad esempio, se il processo principale ha l’ID 1628, può essere terminato con kill e con il segnale quit, come mostrato nella stringa qui sotto: 

sudo kill -s quit 1628

Con il servizio ps potete inoltre visualizzare una lista di tutti i processi eseguiti con NGINX:

sudo ps -ax | grep nginx

Come regolare la riproduzione dei contenuti statistici

Probabilmente usate il vostro web server per far visualizzare dati sotto forma di immagini, video o contenuti statici in HTML. Per ragioni di efficienza si consiglia di scegliere diverse cartelle locali per diversi tipi di contenuti. Per esempio: iniziate creando un’ipotetica cartella /data/html e inserendo lì un documento HTML, anch’esso ipotetico, index.html e poi create una cartella /data/immagini dove inserire delle immagini di esempio.

Nel prossimo passaggio entrambe le cartelle devono essere inserite nel file di configurazione, mantenendole entrambe nella direttiva in un blocco server, che altro non è che una sottodirettiva del blocco HTTP. Qui sono stabilite di default due diverse istruzioni, che potete anche disattivare (off). Create poi semplicemente un’istruzione separata del blocco server:

http {
  server {
  }
}

In questo blocco server dovrebbero ora essere indicate entrambe le cartelle, nelle quali si trovano le immagini e documenti HTML. Il risultato corrispondente sarebbe:

server {
  location / {
    root /data/html;
  }

  location /bilder/ {
    root /data;
  }
}

Questa configurazione è un’impostazione standard di un server, che ascolta sulla porta 80 ed è accessibile tramite localhost. Tutte le richieste, i cui URI iniziano con /immagini/, vengono ora richiesti come file dalla cartella /data/immagini. Se non esiste il file corrispondente, compare un avviso di errore. Tutti gli eventi NGINX, i cui URI non iniziano con /immagini/, vengono inoltrati nella cartella /data/html.

Alla fine ricaricate o riavviate NGINX per apportare le modifiche.

Configurazione di un semplice server proxy NGINX

Molto spesso NGINX viene configurato dai gestori di un server proxy per ricevere al posto del server vero e proprio le richieste in entrata, per filtrarle secondo diversi criteri, inoltrarle e per trasmettere la relativa risposta ai client. Particolarmente amati sono i caching proxy, salvati localmente, che trasmettono direttamente i contenuti statici e reindirizzano solo tutte le ulteriori richieste al server. Allo stesso modo, molto diffusi sono i proxy firewall, che filtrano ulteriormente le connessioni non sicure o indesiderate. Nell’esempio seguente ci sono i caching proxy sopra citati, che mostrano le immagini richieste sulla cartella locale e che dovrebbero inoltrare tutte le ulteriori richieste al web server.  

Nel primo passaggio definite nel nginx.conf il server principale:

server {
  listen 8080;
  root /data/up1;

  location / {
  }
}

A differenza dell’esempio precedente, usate a questo proposito delle liste con delle direttive, perché per le richieste in entrata non si dovrebbe utilizzare la porta standard, ma quella 8080. Inoltre create la cartella rilevata /data/up1 e lì la pagina index.html.

Poi il server proxy e la sua funzione di trasmettere contenuti visivi vengono definiti, usando la direttiva proxy_pass, inclusiva delle informazioni relative al server principale che viene utilizzato, cioè il protocollo (http), il nome (localhost) e la porta (8080):

server {
  location / {
    proxy_pass http://localhost:8080;
  }

  location ~ \.(gif|jpg|png) $ {
    root /data/bilder;
  }
}

Il secondo blocco (location) assegna il proxy server che deve rispondere da solo a tutte le richieste, i cui URI finiscono con le estensioni tipiche per immagini, cioè .gif, .jpg e .png, e richiamando il contenuto corrispondente dalla cartella locale /data/bilder. Tutte le altre richieste vengono reindirizzate al server principale. Come anche nelle impostazioni precedenti, salvate il vostro proxy per le immagini tramite ilsegnale reload o riavviando NGINX. Trovate ulteriori direttive possibili per impostazioni più complesse del proxy nel manuale ufficiale online di NGINX.


Abbiamo una proposta per te:
Web hosting a partire da 1 €/mese!

Dominio gratis
Certificato SSL Wildcard incluso
Assistenza clienti 24/7
A partire da 1 €/mese IVA escl. per un anno,
poi 8 €/ mese IVA escl.