Arbeider med Nginx

De to første artiklene i serien har gitt en oversikt og snakket også om de grunnleggende modulene for Nginx. Denne opplæringen vil hjelpe deg med å komme i gang med å bruke Nginx ved å veilede deg gjennom noen grunnleggende teknikker for å administrere konfigurasjonsfiler og sette opp grunnleggende parametere i konfigs. 

Splitting konfigurasjonsfiler

Etter at Nginx er installert, vil / Etc / Nginx / katalogen vil ha følgende innhold:

  • nginx.conf: Den primære konfigurasjonsfilen.
  • conf.d: brukes til ting som lasting av moduler og for ting som ikke er spesifikke for en enkelt virtuell vert.
  • sider-butikken: lagring alle virtuelle verts konfigurasjoner, selv om de ikke er aktivert for øyeblikket.
  • sider-aktiverte: alle nettstedene som er aktivert (symlinks til filer i den tilgjengelige mappen).
  • mime.types: Kart filnavn utvidelser til MIME typer svar.

Dette nettsteder- * mappe arbeidsflyt gjør ting litt mer organisert. I tilfelle av flere nettsteder, dvs. virtuelle verter, får hver virtuelle vert sin egen konfigurasjonsfil. sider-butikken kan inneholde alle de virtuelle vertkonfigurasjonsfilene, mens de som er aktivert, kan symlinkes fra sider-aktiverte.

Denne konfigurasjonen er standard når du installerer Nginx. Du kan se hvordan inkludere har tillatt inkludering av eksterne konfigurasjonsfiler. Hvis det er feil i noen av disse inkluderte filene, vil Nginx ikke laste.

Flere virtuelle verter

Nginx, som alle andre web-serverer, lar deg konfigurere mer enn én virtuell vert.

# sites-enabled / example.com.conf server listen 80; # både adresse og port, eller bare adresse eller eneste port. server_name example.com www.example.com; # navn på en virtuell server. Kan bruke jokertegn og vanlige uttrykk. access_log /var/log/nginx/example_com_access.log; error_log /var/log/nginx/example_com_error.log; # sett konfigurasjon avhengig av en forespørsel URI. sted / root /var/www/www.example.com; indeks index.html index.htm; 

Dette gjøres via serverblokken. Lyttedirektivet beskriver porten som webserveren lytter på, og servernavnnavnet inneholder alle servernavn. På innsiden, kan du definere hvordan den virtuelle verten fungerer.

Oppdatering av Nginx

Prosess-ID for master Nginx-prosessen er skrevet til en fil som definert av pid-direktivet, f.eks. pid /var/run/nginx.pid;. Denne hovedprosessen støtter følgende signaler:

TERM, INT Hurtig nedleggelse
SLUTTE Grasiøs nedleggelse
HUP Last inn config + Arbeidere grasiøs nedleggelse + Start på nytt
USR1 Re-åpne loggfiler
USR2 Oppgrader kjørbar på fly
VINSJ Grasiøs nedleggelse av arbeidsprosesser

For å gjenopplaste Nginx, kan du kjøre drepe -HUP

Individuelle arbeidsprosesser kan også styres via signaler.

TERM, INT Hurtig nedleggelse
SLUTTE Grasiøs nedleggelse
USR1 Re-åpne loggfiler
VINSJ unormal avslutning for feilsøking
* krever feilsøkingspunkter

Nginx i feilsøkingsmodus

For dette må du kompilere Nginx med feilsøkingsflagget (--med-debug). Etter å ha gjort det, er det mulig å feilsøke tilkoblinger fra bestemte adresser med debug_connection direktiv.

error_log / var / log / nginx / feil; hendelser debug_connection 192.168.1.18; 

Når du ber om hjelp med Nginx, må du dele utdataene fra nginx -V, full konfigurasjon og feilsøkingslogg.

404 og andre feil sider

Dette oppnås ved hjelp av en error_page direktiv. Det definerer ressursen som vil bli vist for feilen.

# 1 error_page 404 / 404.html; error_page 500 502 503 504 / 50x.html; # 2 error_page 404 = 200 /empty.gif; # endre svarkoden til en annen ved hjelp av "= respons" error_page 404 = 301 http://example.com/notfound.html; # bruk omdirigeringer for feilbehandling # 3 # feilbehandling med en navngitt stedplassering / error_page 404 = @fallback;  plassering @ fallback proxy_pass http: // backend; 

Det er også et direktiv som heter recursive_error_pages som gjør det mulig å gjøre flere omdirigeringer ved hjelp av error_page-direktivet. For eksempel:

error_page 400 404 / 404.html; recursive_error_pages on; plassering ~ * ^ / (404 \ .html | 500 \ .html | 503 \ .html) $ log_not_found off; # Deaktiverer logging av feil om ikke funnet filer. error_page 404 = @default;  location @default log_not_found on; root / var / www / default; 

Automatisk indekseringskatalog

En forespørsel der indeksfilen ikke er funnet, blir sendt til denne modulen (ngx_http_autoindex_module). [Eksempel: Lokal nettverksdeling]

plassering / root / var / www / localdropbox; autoindex på; # Aktiverer eller deaktiverer katalogoppføringsutgangen. autoindex_exact_size off; # Eksakt filstørrelse vs avrunde dem til nærmeste KB, MB, GB. autoindex_format html; # format av en katalogoppføring. XML, JSON, JSONP mulig. autoindex_localtime på; # lokal TZ vs UTC.  

Størrelse på filopplastinger

"Request entity too Large" (413) er en vanlig feilmelding når brukeren prøver å laste opp en fil. Denne filstørrelsen styres av en Nginx konfigurasjonsvariabel:

variabel client_max_body_size 10M; # M står for megabyte.

Dette angir maksimal størrelse på klientforespørselslegemet, spesifisert i forespørselen for innholds lengde. For å få tilbakemeldinger fra brukerne for disse opplastingene, kan du også bruke nginx-upload-progress-modulen. Du må legge til en X-Progress-ID, som hjelper unikt å identifisere filen som lastes opp.

kjeks

Nginx har en veldig nyttig og nifty funksjonalitet til å vise informasjonskapsler for å identifisere sluttbrukere. I en situasjon der du ikke vil ansette ekstern analyse, vil ngx_http_userid_module modulen kan fylle ut ved å vise informasjonskapsler.

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"';

Ved å aktivere denne modulen, variablene $ uid_reset$ uid_got og $ uid_set bli tilgjengelig. Disse kan hjelpe deg med å skrive enda mer intrikate omskrivningsregler.

Disse trinnene bør definitivt komme i gang på vei til å bruke Nginx mer produktivt. 

Tilleggsressurser

  1. Hvordan behandler nginx en forespørsel
  2. Nginx Feilsøking