Guida Nginx Introduzione

La concorrenza e tempi di caricamento più rapidi sono sempre stati una sfida per qualsiasi sito Web ad alto traffico. Per caricare i siti più velocemente, i browser aprono più connessioni a un server Web per caricare il contenuto in parallelo. Combinato con connessioni persistenti, il web server deve essere davvero robusto e essere in grado di scalare in modo non lineare con il numero di richieste.

Diventa molto importante che il sito web sia basato su un numero di blocchi di costruzione liberamente accoppiati ma altamente coesivi, e nginx è davvero un pezzo importante per essere in grado di ottenerlo. 

Nginx (pronounced engine x) è un server proxy HTTP e reverse proxy leggero, libero e open source, nonché un server proxy di posta.

Nginx può essere utilizzato come sostituto completo per altri server HTTP come Apache, o può anche stare di fronte all'infrastruttura esistente che hai, per funzionare come proxy inverso.

Reverse Proxy Server

Fare uso di un proxy inverso è molto importante in quanto aiuta a:

  1. nascondendo l'esistenza e le caratteristiche del server di origine effettivo
  2. distribuire il carico
  3. comprimere e memorizzare nella cache il contenuto
  4. facendo test A / B
  5. manipolazione richiesta / risposta
Fonte: Wikipedia

Server HTTP (contro Apache)

In che modo Nginx differisce da Apache? Nginx è basato su eventi e asincrono, mentre Apache dipende interamente dai thread. Su un server web con traffico relativamente elevato, i thread sono destinati ad esaurire la memoria. Un evento basato su un modello asincrono e non bloccante (di nginx) è un ovvio vincitore in questo caso.

Architettura e interni

Ha un unico processo master e diversi processi "di lavoro" eseguiti sotto un utente non privilegiato. All'interno di ciascun lavoratore, nginx può gestire diverse migliaia di connessioni.

Fonte: l'architettura delle applicazioni open source

Il nginx lavoratore il codice include il nucleo e i moduli funzionali. L'architettura modulare di Nginx consente di estendere le funzionalità del server Web senza modificare il core. I moduli leggono e scrivono sulla rete e allo storage, trasformano il contenuto, passano le richieste ai server di origine, includono azioni sul lato server e altre cose. I moduli costituiscono principalmente il livello dell'applicazione e le funzionalità di presentazione. 

I moduli Nginx sono disponibili in diverse forme: moduli di base, moduli di eventi, gestori di fasi, protocolli, gestori variabili, filtri, upstream e load balancer. Al momento, nginx non supporta i moduli caricati dinamicamente, quindi i moduli devono essere compilati insieme al core durante la compilazione.

Nginx elabora le connessioni come moduli collegati l'uno all'altro, come una catena. Per ogni operazione c'è un modulo che sta facendo il lavoro pertinente, ad es. compressione, modifica del contenuto, esecuzione di include sul lato server e comunicazione ai server delle applicazioni a monte. Un tipico ciclo di elaborazione delle richieste HTTP è simile al seguente:

  1. Il client invia una richiesta HTTP.
  2. Nginx core sceglie il gestore di fase appropriato in base alla posizione configurata corrispondente alla richiesta.
  3. Se configurato per farlo, un servizio di bilanciamento del carico seleziona un server upstream per il proxy.
  4. Il gestore di fase fa il suo lavoro e passa ogni buffer di output al primo filtro.
  5. Il primo filtro passa l'output al secondo filtro.
  6. Il secondo filtro passa l'output al terzo (e così via).
  7. La risposta finale viene inviata al cliente.

Questo approccio stratificato e liberamente accoppiato ma altamente coeso lo rende davvero bravo in quello che fa.

Download e installazione

Configurazione Nginx

La configurazione di Nginx si trova in file di testo, tipicamente a / Usr / local / etc / nginx/ Etc / nginx. Viene chiamato il file di configurazione principale nginx.conf. Il file di configurazione di Nginx è essenzialmente un elenco di direttive organizzate in una struttura logica. L'intero comportamento dell'applicazione è definito dai valori che dai a queste direttive. 

nginx.conf

# utente nessuno; worker_processes 1; #error_log logs / error.log; #error_log logs / error.log notice; #error_log logs / error.log info; #pid logs / nginx.pid; events worker_connections 1024;  http ... 

Sopra, si vede un piccolo estratto di un conf predefinito nginx (annotato con spiegazione). L'intero file può anche essere localizzato in /usr/local/etc/nginx/nginx.conf.default. L'essenziale cerca di spiegare in dettaglio ogni direttiva.

Questo articolo ha introdotto ciò che nginx è e il ruolo importante che svolge nel rendere i siti web più veloci. Ha anche toccato le direttive nel file di configurazione. La seconda parte dell'articolo andrà avanti per spiegare e dare alcune ricette per l'utilizzo di nginx in diversi contesti e anche per parlare di moduli must-use di nginx.