Come potenziare il web server Nginx con i moduli

Ecco come configurare e abilitare alcuni moduli di Nginx che ti consentiranno di potenziare il tuo web server

Come potenziare il web server Nginx con i moduli

Nel precedente articolo dedicato a Nginx mi sono soffermato sull’architettura del web server, sui file di configurazione ed ho messo in rilievo le differenze principali con il concorrente Apache. In questo post voglio illustrarti i moduli e le tecniche necessarie per una configurazione avanzata del web server. Il successo e la potenza di Nginx risiede, infatti, proprio nei suoi moduli.

L’intero stack di Nginx può essere immaginato come composto da un nucleo centrale sopra al quale vi sono diversi moduli atti a migliorare le potenzialità del web server. Questi moduli per poter essere utilizzati, devono essere abilitati durante la compilazione dei file sorgente. Alcuni di essi vengono compilati automaticamente e sono ampiamente utilizzati. Vediamone di seguito alcuni.

I moduli Nginx per l’accesso limitato e ristretto

Ecco un elenco di alcuni moduli Nginx che consentono di limitare l’accesso al web server a determinati indirizzi IP.

  • Access (ngx_http_access_module): si tratta del modulo che consente di limitare l’accesso al web server a indirizzi IP specifici.

location / {

 deny  192.168.1.1;

allow 192.168.1.0/24;

allow 10.1.1.0/16;

 allow 2001:0db8::/32;

deny  all;

}

  • HTTP Auth (ngx_http_auth_basic_module): questo modulo consente di limitare l’accesso da http Basic Auth (username / password).

location / {

auth_basic           “password”;

auth_basic_user_file conf/htpasswd;

}

  • SubrequestAuth (ngx_http_auth_request_module): questo modulo implementa l’autorizzazione client basata sul risultato di una subrequest.
  • Limit connections (ngx_http_limit_conn_module):un modulo importante che consente di definire il numero massimo di connessioni simultanee provenienti da un singolo indirizzo IP.
  • Limit requests (ngx_http_limit_req_module): il modulo di Nginx che limita il numero di richieste da un singolo indirizzo IP.

Come ho scritto poco sopra, la maggior parte dei moduli contenuti in Nginx possono essere attivati in fase di compilazione del sorgente (qui puoi trovare una lista dettagliata). Vorrei soffermarmi però nel prossimo paragrafo, su alcuni moduli di terze parti che potrebbero ritornarti davvero utili.

Moduli di terze parti per Nginx

I moduli che ti illustrerò di seguito, devono essere scaricati e successivamente compilati. Supponendo che stai lavorando nella directory sorgente di Nginx, per compilare i moduli basterà utilizzare la seguente riga di codice:

./configure –add-module=/path/to/module/source

Il primo modulo di cui ti voglio parlare è ngx_pagespeed. Si tratta di un modulo sviluppato da Google nell’ambito del progetto PageSpeed. La sua funzionalità è quella di migliorare i tempi di caricamento della pagina. Si tratta di un modulo, dunque, altamente raccomandato da installare sui server (qui la guida di installazione).

Il secondo modulo, altrettanto interessante, è nginx-rtmp-module utile per il live streaming, l’online transcoding e le tecniche di buffering avazato. Il terzo  modulo che voglio segnalarti è nginx-push-stream-module, un http stream push che supporta EventSource Long Polling.

Altre utility per Nginx

Utilizzando Nginx è molto probabile che possano ritornarti utili anche questi altri componenti:

  • ngx_openresty: trasforma Nginx in un vero e proprio server web app;
  • server configs: utile soprattutto per iniziare. Aiuta, infatti, ad impostare la corretta configurazione per migliorare le prestazioni del sito web, la sicurezza e le risorse;
  • lua-ginx-module: implementa il potere di Lua in Nginx;
  • h5ai: un moderno http web server index per Apache httpd, lighttpd, nginx e Cherokee.

Nginx si classifica, quindi, come un web server molto performante e potente, soprattutto se ben configurato sfruttando i numerosi moduli a disposizione.