Arbetar med Nginx

De två första artiklarna i serien har gett en överblick och talade också om de väsentliga modulerna för Nginx. Denna handledning hjälper dig att komma igång med att använda Nginx genom att vägleda dig genom några grundläggande tekniker för hantering av konfigurationsfiler och inställning av grundläggande parametrar i konfigs. 

Splitting konfigurationsfiler

När Nginx är installerat, / Etc / nginx / katalogen kommer att ha följande innehåll:

  • nginx.conf: Den primära konfigurationsfilen.
  • conf.d: används för saker som laddning av moduler och för saker som inte är specifika för en enda virtuell värd.
  • sites-available: lagring Allt virtuella värdkonfigurationer, även om de för närvarande inte är aktiverade.
  • sites-aktiverade: alla webbplatser som är aktiverade (symlinker till filer i platserna-tillgänglig mapp).
  • mime.types: Kartor filnamnstillägg till MIME typer av svar.

Detta webbplatser- * mapp arbetsflöde gör sakerna lite mer organiserade. Vid multipla webbplatser, dvs virtuella värdar, får varje virtuell värd sin egen konfigurationsfil. sites-available kan innehålla alla virtuella värdkonfigurationsfiler, medan de som är aktiverade kan symlinkeras från sites-aktiverade.

Den här konfigurationen är standard när du installerar Nginx. Du kan se hur inkludera har tillåtit inkludering av externa konfigurationsfiler. Om det finns fel i någon av dessa inkluderade filer, kommer Nginx inte att ladda.

Flera virtuella värdar

Nginx, som vilken annan webbserver som helst, låter dig konfigurera mer än en virtuell värd.

# sites-enabled / example.com.conf server lyssna 80; # både adress och port, eller bara adress eller enda port. server_name example.com www.example.com; # Namn på en virtuell server. Kan använda jokertecken och vanliga uttryck. access_log /var/log/nginx/example_com_access.log; error_log /var/log/nginx/example_com_error.log; # sätter konfiguration beroende på en begäran URI. Plats / root /var/www/www.example.com; index index.html index.htm; 

Detta görs via serverns block. Lyssningsdirektivet beskriver porten som webbservern lyssnar på och servernamnsregistret listar alla servernamn. På platsen kan du definiera hur den virtuella värden fungerar.

Uppladdning av Nginx

Process-ID för master Nginx-processen skrivs till en fil enligt definitionen i pid-direktivet, t.ex.. pid /var/run/nginx.pid;. Denna huvudprocess stöder följande signaler:

TERM, INT Snabb avstängning
SLUTA MED Graceful Shutdown
HUP Uppdatera config + Arbetare graciös avstängning + Starta om
USR1 Öppna öppna loggfiler igen
USR2 Uppgradera körbar på flyg
VINSCH Graciös avstängning av arbetarnas processer

För att ladda om Nginx kan du springa döda -HUP

Individuella arbetstagarprocesser kan också styras via signaler.

TERM, INT Snabb avstängning
SLUTA MED Graceful Shutdown
USR1 Öppna öppna loggfiler igen
VINSCH onormal uppsägning för debugging
* kräver felsökningspunkter

Nginx i felsökningsläge

För detta måste du kompilera Nginx med felsökningsflaggan (--med-debug). Efter det är det möjligt att felsöka anslutningar från specifika adresser med debug_connection direktiv.

error_log / var / log / nginx / errors; händelser debug_connection 192.168.1.18; 

När du ber om hjälp med Nginx, var noga med att dela ut resultatet av nginx -V, fullständig konfiguration och felsökningsloggen.

404 och andra fel sidor

Detta uppnås med hjälp av en error_page direktiv. Det definierar resursen som kommer att visas för felet.

# 1 error_page 404 / 404.html; error_page 500 502 503 504 / 50x.html; # 2 error_page 404 = 200 /empty.gif; # ändra svarskoden till en annan med hjälp av "= svar" error_page 404 = 301 http://example.com/notfound.html; # använd omdirigeringar för felbehandling # 3 # felbehandling med en namngiven platsplats / error_page 404 = @fallback;  plats @ fallback proxy_pass http: // backend; 

Det finns också ett direktiv som heter recursive_error_pages vilket möjliggör flera omdirigeringar med hjälp av error_page-direktivet. Till exempel:

error_page 400 404 / 404.html; recursive_error_pages on; plats ~ * ^ / (404 \ .html | 500 \ .html | 503 \ .html) $ log_not_found off; # Inaktiverar loggning av fel om inte hittade filer. error_page 404 = @default;  location @default log_not_found on; root / var / www / default; 

Automatisk indexeringskatalog

En begäran där indexfilen inte hittas dirigeras till den här modulen (ngx_http_autoindex_module). [Exempel: Lokal nätverksdelning]

plats / root / var / www / localdropbox; autoindex på; # Aktiverar eller inaktiverar katalogutgåvan. autoindex_exact_size off # Exakt filstorlek vs avrunda dem till närmaste KB, MB, GB. autoindex_format html; # format för en kataloglista. XML, JSON, JSONP möjlig. autoindex_localtime på; # lokal TZ vs UTC.  

Storlek på filuppladdningar

"Request entity too Large" (413) är ett vanligt felmeddelande när användaren försöker ladda upp en fil. Denna filstorlek styrs av en Nginx-konfigurationsvariabel:

variabel client_max_body_size 10M; # M står för megabyte.

Det här ställer in den maximala storleken på klientförfrågan, som anges i rubriken "Innehållslängd". För att få lite användaråterkoppling för dessa uppladdningar kan du också använda nginx-uppladdnings-framdriftsmodulen. Du måste lägga till ett X-Progress-ID, vilket hjälper unikt att identifiera filen som laddas upp.

Småkakor

Nginx har en mycket användbar och smidig funktion för att servera cookies för att identifiera slutanvändare. I en situation där du inte vill använda extern analys, ngx_http_userid_module modulen kan fylla i genom att servera cookies.

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

Genom att aktivera denna modul, variablerna $ uid_reset$ uid_got och $ uid_set bli tillgänglig. Dessa kan hjälpa dig att skriva ännu mer invecklade omskrivningsregler.

Dessa steg bör definitivt komma igång på din väg att använda Nginx mer produktivt. 

Ytterligare resurser

  1. Hur behandlar nginx en förfrågan
  2. Nginx Debugging