NGINX: l'alternativa ad Apache

Pubblicato il 22/07/2013 in System Administration • 3 min read

NGINX è principalmente un webserver caratterizzato da elevate prestazioni, basso consumo di risorse ed una buona facilità di configurazione e gestione. Il suo utilizzo cresce di mese in mese, grazie anche alla sua duttilità. Vediamo perché la creatura di Igor Sysoev riscuote così tanto successo.

NGINX: cos'è

NGINX inizia ad essere sviluppato nel 2002, ma la sua prima release ufficiale è del 2004: il suo scopo principale è quello di fare da webserver, ma sa fare anche molto altro. Infatti, il prodotto creato dal russo Sysoev è in grado di svolgere anche le seguenti funzioni:

Le caratteristiche peculiari di questo bel prodotto sono le seguenti:

  • elevate prestazioni
  • basso consumo di memoria
  • capacità di servire molte richieste contemporanee
  • elevata scalabilità
  • facilità di configurazione
  • gestione facilitata di log, redirect, connessioni
  • multipiattaforma:

    • Linux
    • FreeBSD
    • HP-UX
    • AIX
    • Solaris
    • Windows

Qualche numero su NGINX

Le caratteristiche descritte convincono molti sysadmin ad adottare NGINX come frontend per i propri portali web, sopratutto se ad alto traffico; dalla sua prima release nel 2004, la diffusione del webserver cresce di mese in mese.

NGINX ha - secondo i report di Netcraft, la famosa compagnia di servizi internet - raggiunto una buona popolarità, tenendo conto del dominio di Apache: infatti, nel mese di giugno 2013 le statistiche riportano che viene utilizzato nel 14,56% dei siti internet.

Secondo l'azienda w3techs, NGINX risulta essere il webserver più utilizzato nella loro classifica dei 1000 top website con il 34.9% mentre raggiunge il 30% nei 10.000 top website.

Alcune aziende che hanno adottato NGINX:

Installazione e configurazione

E' arrivato il momento di passare all'installazione di NGINX e provare così le caratteristiche descritte finora: l'ultima release stabile è la 1.4.2 del il 17 luglio 2013 rilasciata con licenza BSD.

I comandi d'installazione cambiano a seconda del sistema operativo utilizzato e relativo gestore di pacchetti.

Su FreeBSD:

root@server:~# cd /usr/ports/www/nginx

root@server:/usr/ports/www/nginx# make install clean

Quando richiesto selezionare tutti i moduli che vogliamo abilitare e proseguiamo nella compilazione di NGINX.

Su Ubuntu / Debian è sufficiente fare:

root@server:~# apt-get install nginx

Il file di configurazione di default è nginx.conf e contiene le impostazioni comuni a tutti i Virtual Host che andremo a configurare, dove potremmo effettuare anche degli override in modo da avere impostazioni specifiche se necessario.

Il nostro primo Virtual Host

Di seguito lo snippet di un Virtual Host che serve esclusivamente file HTML statici:

server {
  port_in_redirect off;
  listen        80;
  server_name   www.miodominio.it;

  access_log    /var/log/nginx/www.miodominio.it.access.log;
  error_log     /var/log/nginx/www.miodominio.it.error.log;

  location / {
    root /var/www/html;
    index index.html;
  }
}

Pagine dinamiche

Di seguito invece l'esempio di un Virtual Host per servire pagine PHP

server {
  port_in_redirect off;
  listen        80;
  server_name   www.miodominio.it;

  access_log    /var/log/nginx/www.miodominio.it.access.log;
  error_log     /var/log/nginx/www.miodominio.it.error.log;
  proxy_connect_timeout 300;

  index index.html index.php;
  root /var/www/html;

  location / {
    try_files $uri $uri/ /index.php?$args;
}

  location ~ .*\.php$ {
    try_files $uri =404;
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param  SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
    include fastcgi_params;
  }
}

Ovviamente bisogna installare l'interprete PHP (in questo caso PHP-FCGI o PHP-FPM) e configurarlo in modo che sia in ascolto sulla porta 9000

Conclusioni

NGINX è un webserver che permette di raggiungere elevate prestazioni con bassi consumi di memoria RAM; è ormai entrato a far parte delle mie installazioni standard, sostituendo Apache se non in situazioni particolari: l'incremento di prestazioni, sopratutto in siti con alto traffico e tante connessioni contemporanee, è tangibile.

Questo è solo un primo articolo su questo ottimo webserver; in successivi post del blog vedremo configurazioni più particolari e complesse.

Link

Wiki NGINX

Forum NGINX