Lavorare con Nginx

I primi due articoli della serie hanno dato una panoramica e hanno anche parlato dei moduli essenziali per Nginx. Questo tutorial ti aiuterà a iniziare a utilizzare Nginx guidandoti attraverso alcune tecniche di base sulla gestione dei file di configurazione e l'impostazione dei parametri di base nelle configurazioni. 

Divisione dei file di configurazione

Dopo aver installato Nginx, il / Etc / nginx / directory avrà il seguente contenuto:

  • nginx.conf: Il file di configurazione principale.
  • conf.d: usato per cose come il caricamento del modulo e per cose che non sono specifiche per un singolo host virtuale.
  • sites-available: memorizzazione tutti configurazioni host virtuali, anche se attualmente non sono abilitate.
  • siti abilitati: tutti i siti abilitati (collegamenti simbolici ai file nella cartella disponibile per i siti).
  • mime.types: esegue il mapping delle estensioni del nome file ai tipi di risposte MIME.

Questo sites- * workflow della cartella rende le cose un po 'più organizzate. In caso di più siti Web, ad esempio host virtuali, ciascun host virtuale ottiene il proprio file di configurazione. sites-available può contenere tutti i file di configurazione dell'host virtuale, mentre quelli che sono abilitati possono essere collegati da siti abilitati.

Questa configurazione è l'impostazione predefinita quando si installa Nginx. Puoi vedere come includere ha permesso l'inclusione di file di configurazione esterni. Se ci sono errori in uno di questi file inclusi, Nginx non verrà caricato.

Più host virtuali

Nginx, come qualsiasi altro server web, ti permette di configurare più di un host virtuale.

# sites-enabled / example.com.conf server ascolta 80; # sia indirizzo e porta, o solo indirizzo o solo porta. server_name example.com www.example.com; # nomi di un server virtuale. Può utilizzare caratteri jolly ed espressioni regolari. access_log /var/log/nginx/example_com_access.log; error_log /var/log/nginx/example_com_error.log; # imposta la configurazione in base all'URI della richiesta. posizione / root /var/www/www.example.com; indice index.html index.htm; 

Questo viene fatto tramite il blocco del server. La direttiva listen descrive la porta su cui il server Web è in ascolto e la direttiva server_name elenca tutti i nomi dei server. All'interno della posizione, è possibile definire come funziona l'host virtuale.

Ricaricando Nginx

L'ID di processo del processo Nginx master è scritto in un file come definito dalla direttiva pid, ad es. pid /var/run/nginx.pid;. Questo processo master supporta i seguenti segnali:

TERMINE, INT Arresto rapido
SMETTERE Arresto grazioso
HUP Ricarica configurazione + Arresto normale dei lavoratori + Riavvia
USR1 Riapri i file di registro
USR2 Aggiorna eseguibile al volo
VERRICELLO Arresto graduale dei processi di lavoro

Per ricaricare Nginx, puoi correre kill -HUP

I singoli processi di lavoro possono anche essere controllati tramite segnali.

TERMINE, INT Arresto rapido
SMETTERE Arresto grazioso
USR1 Riapri i file di registro
VERRICELLO terminazione anomala per il debug
* richiede punti di debug

Nginx in modalità debug

Per questo, dovrai compilare Nginx con il flag di debug (--con-debug). Dopo averlo fatto, è possibile eseguire il debug delle connessioni da indirizzi specifici con debug_connection direttiva.

error_log / var / log / nginx / errors; events debug_connection 192.168.1.18; 

Quando chiedi aiuto con Nginx, assicurati di condividere l'output di nginx -V, configurazione completa e registro di debug.

404 e altre pagine di errore

Questo è ottenuto con l'aiuto di un error_page direttiva. Definisce la risorsa che verrà mostrata per l'errore.

# 1 error_page 404 /404.html; error_page 500 502 503 504 / 50x.html; # 2 error_page 404 = 200 /empty.gif; # cambia il codice di risposta in un altro usando "= risposta" error_page 404 = 301 http://example.com/notfound.html; # usa reindirizzamenti per l'elaborazione dell'errore # 3 # nell'elaborazione dell'errore con un percorso di posizione con nome / error_page 404 = @fallback;  location @fallback proxy_pass http: // backend; 

C'è anche una direttiva chiamata recursive_error_pages che consente di eseguire diversi reindirizzamenti usando la direttiva error_page. Per esempio:

error_page 400 404 /404.html; recursive_error_pages on; posizione ~ * ^ / (404 \ .html | 500 \ .html | 503 \ .html) $ log_not_found off; # Disabilita la registrazione degli errori sui file non trovati. error_page 404 = @default;  location @default log_not_found on; root / var / www / default; 

Directory di indicizzazione automatica

Una richiesta in cui il file indice non viene trovato viene instradata a questo modulo (ngx_http_autoindex_module). [Esempio: condivisione della rete locale]

posizione / root / var / www / localdropbox; autoindex on; # Abilita o disabilita l'output dell'elenco di directory. autoindex_exact_size off; # Esatta la dimensione del file e arrotondale alla KB, MB, GB più vicina. autoindex_format html; # formato di un elenco di directory. XML, JSON, JSONP possibili. autoindex_localtime on; # locale TZ vs UTC.  

Dimensione dei caricamenti di file

"Richiedi entità troppo grande" (413) è un messaggio di errore comune, quando l'utente sta tentando di caricare un file. Questa dimensione del file è controllata da una variabile di configurazione Nginx:

variabile client_max_body_size 10M; # M sta per megabyte.

Imposta la dimensione massima del corpo della richiesta client, specificata nell'intestazione della richiesta "Content-Length". Per avere un feedback degli utenti per questi caricamenti, puoi anche utilizzare nginx-upload-progress-module. È necessario aggiungere un ID X-Progress, che consente di identificare in modo univoco il file che viene caricato.

Biscotti

Nginx ha una funzionalità molto utile e nifty di servire i cookie per identificare gli utenti finali. In una situazione in cui non si desidera utilizzare l'analitica esterna, il ngx_http_userid_module modulo può compilare servendo i cookie.

userid su; userid_name uid; userid_domain example.com; userid_path /; userid_expires 365d; userid_p3p 'policyref = "/ w3c / p3p.xml", CP = "CUR ADM NOSTRO NOR STA NID"';

Abilitando questo modulo, le variabili $ uid_reset$ uid_got$ uid_set diventa disponibile. Questi possono aiutarti a scrivere regole di riscrittura ancora più complesse.

Questi passaggi dovrebbero sicuramente aiutarti a utilizzare Nginx in modo più produttivo. 

Risorse addizionali

  1. Come nginx elabora una richiesta
  2. Debug di Nginx