NGINX , pronunciato “engine-x”, è un famoso web server software open source utilizzato per servire siti web statici o dinamici, proxy inverso, bilanciamento del carico e altre funzionalità di server HTTP e proxy.

NGINX è stato rilasciato ufficialmente nell’ottobre 2004. Il creatore del software, Igor Sysoev, ha avviato il suo progetto nel 2002 come tentativo di rispondere al problema C10k. C10k è la sfida di gestire diecimila connessioni contemporaneamente.

Oggi sono ancora di più le connessioni che i server web devono gestire. Per questo motivo, NGINX offre un’architettura basata su eventi e asincrona. Questa caratteristica lo rende uno dei server più affidabili per velocità e scalabilità.

Grazie alla sua straordinaria capacità di gestire molte connessioni e velocità, molti siti web ad alto traffico utilizzano il servizio di NGINX. Tra le varie aziende di alto profilo che lo utilizzano, ricordiamo Autodesk, Atlassian, Intuit, T-Mobile, GitLab, DuckDuckGo, Microsoft, IBM, Google, Adobe, Salesforce, VMWare, Xerox, LinkedIn, Cisco, Facebook, Target, Citrix Systems, Twitter, Apple , Intel, WordPress.com e molti altri.

Come funziona NGINX?

Prima di scoprire di più diamo un’occhiata a come funziona un server web. Quando qualcuno fa una richiesta per aprire una pagina web, il browser contatta il server di quel sito web. Quindi, il server cerca i file richiesti per la pagina e li invia al browser. Questo è solo il tipo più semplice di richiesta.

L’esempio sopra è considerato come un singolo thread. I server web tradizionali creano un singolo thread per ogni richiesta, ma NGINX server non funziona in questo modo. 

Nginx è stato progettato per garantire un basso consumo di memoria e un’elevata concorrenza. Anziché creare nuovi processi per ogni richiesta web, utilizza un approccio asincrono, basato sugli eventi, in cui le richieste vengono gestite in un singolo thread.

Con Nginx, un processo master può controllare più processi worker. Il master mantiene i processi worker, mentre i worker eseguono l’elaborazione effettiva. Poiché Nginx è asincrono, ogni richiesta può essere eseguita dal worker contemporaneamente senza bloccare altre richieste.

Alcune caratteristiche comuni includono:

  • Reverse proxy con caching
  • IPv6
  • Bilanciamento del carico
  • Supporto FastCGI con caching
  • webSockets
  • Gestione di file statici, file indice e autoindicizzazione
  • TLS/SSL con SNI

NGINX vs Apache

Tra i server web più diffusi, Apache è uno dei principali rivali di NGINX. È in circolazione dagli anni ’90 ed è utilizzato dal 47% di tutti i siti web con un server noto, secondo quanto afferma W3Techs. Nginx è secondo a poca distanza con il 41.8%. 

Netcraft ha fatto un sondaggio su 233 milioni di domini e ha scoperto che l’utilizzo di Apache si attesta al 31.54%, mentre l’utilizzo di Nginx è al 26.20%.  Se Apache è l’opzione complessivamente più popolare, Nginx è in realtà il server web più popolare tra i siti web ad alto traffico.

Quote di mercato dei server web compreso nginx

Se sei curioso di sapere quale server web è meglio per le tue esigenze, dai un’occhiata a questo breve e informativo confronto tra NGINX e Apache.

  • Supporto del sistema operativo – La compatibilità è uno dei piccoli dettagli da considerare quando si sceglie il software. Sia NGINX che Apache possono essere eseguiti su diversi sistemi operativi che supportano il sistema Unix. Sfortunatamente, le prestazioni di NGINX su Windows non sono eccezionali come su altre piattaforme.
  • Assistenza agli utenti – Gli utenti, dai principianti ai professionisti, hanno sempre bisogno di una buona comunità che possa aiutare quando sorgono problemi. Sebbene tutti e due i web-server abbiano supporto per la posta e un forum Stack Overflow, Apache non ha il supporto della sua azienda, Apache Foundation.
  • Prestazioni– NGINX può eseguire simultaneamente 1000 connessioni di contenuto statico due volte più velocemente di Apache e utilizza un pò meno memoria. Tuttavia, se confrontati per le loro prestazioni nell’esecuzione di contenuti dinamici, entrambi hanno la stessa velocità. NGINX è una scelta migliore per coloro che hanno un sito web più statico.

Come Verificare se si utilizzando Nginx o Apache

Per la maggior parte dei siti web, basta semplicemente controllare l’intestazione HTTP server per verificare se è Nginx o Apache. E’ possibile controllare le intestazioni HTTP lanciando la scheda di rete in Chrome Devtools controllando le intestazioni in uno strumento come Pingdom o GTmetrix.

Controllo web server con Pingdom Tools

Tuttavia, l’intestazione HTTP potrebbe non rivelare sempre il server web esatto. Se ad esempio il tuo sito WordPress è dietro un servizio proxy come Cloudflare, l’intestazione HTTP del server risulterà cloudflare.

Conclusione

In questa post abbiamo visto una breve storia del server NGINX, come è nato, il suo posto all’interno del panorama del server e anche i vantaggi di NGINX vs Apache. Sebbene entrambi i tipi di server siano di per sé potenti , è importante riconoscere scenari di casi d’uso specifici in modo che sviluppatori e amministratori possano essere meglio informati quando devono prendere decisioni sull’infrastruttura da utilizzare.

Buon lavoro.