Werken met Nginx

De eerste twee artikelen in de serie hebben een overzicht gegeven en hebben ook gesproken over de essentiële modules voor Nginx. Deze tutorial helpt je aan de slag met Nginx door je te begeleiden bij enkele basistechnieken voor het beheren van configuratiebestanden en het instellen van basisparameters in de configs.. 

Configuratiebestanden splitsen

Nadat Nginx is geïnstalleerd, is de / Etc / nginx / map heeft de volgende inhoud:

  • nginx.conf: Het primaire configuratiebestand.
  • conf.d: gebruikt voor zaken als het laden van modules en voor dingen die niet specifiek zijn voor een enkele virtuele host.
  • -sites-available: opslaan allemaal virtuele hostconfiguraties, zelfs als deze momenteel niet zijn ingeschakeld.
  • -sites-enabled: alle sites die zijn ingeschakeld (symlinks naar bestanden in de map met beschikbare sites).
  • mime.types: brengt bestandsextensie-extensies toe aan MIME-typen responsen.

Deze sites- * mapworkflow maakt de dingen een beetje meer georganiseerd. In het geval van meerdere websites, d.w.z. virtuele hosts, krijgt elke virtuele host zijn eigen configuratiebestand. -sites-available kan alle configuratiebestanden van de virtuele host bevatten, terwijl de bestanden die zijn ingeschakeld van elkaar kunnen worden voorzien -sites-enabled.

Deze configuratie is de standaardinstelling wanneer u Nginx installeert. Je kunt zien hoe omvatten heeft de opname van externe configuratiebestanden toegestaan. Als er fouten zijn in een van deze opgenomen bestanden, zal Nginx niet laden.

Meerdere virtuele hosts

Met Nginx kunt u, net als bij elke andere webserver, meer dan één virtuele host configureren.

# sites-enabled / example.com.conf server luister 80; # zowel adres als poort, of alleen adres of enige poort. server_name example.com www.example.com; # namen van een virtuele server. Kan jokertekens en reguliere expressies gebruiken. access_log /var/log/nginx/example_com_access.log; error_log /var/log/nginx/example_com_error.log; # stelt de configuratie in afhankelijk van een aanvraag-URI. locatie / root /var/www/www.example.com; index index.html index.htm; 

Dit gebeurt via het serverblok. De luisterrichtlijn beschrijft de poort waarop de webserver luistert en de servernaamregel vermeldt alle servernamen. Binnenlocatie, kunt u definiëren hoe de virtuele host werkt.

Nginx opnieuw laden

De proces-ID van het hoofd-Nginx-proces wordt geschreven naar een bestand zoals gedefinieerd door de pid-richtlijn, bijv. pid /var/run/nginx.pid;. Dit hoofdproces ondersteunt de volgende signalen:

TERM, INT Quick Shutdown
STOPPEN Sierlijke Shutdown
HUP Herlaad config + Arbeiders sierlijke shutdown + Herstart
USR1 Open logbestanden opnieuw
USR2 Upgrade uitvoerbaar bij fly
LIER Sierlijke stopzetting van werkprocessen

Om Nginx te herladen, kun je rennen kill -HUP

Individuele werkprocessen kunnen ook worden bestuurd via signalen.

TERM, INT Quick Shutdown
STOPPEN Sierlijke Shutdown
USR1 Open logbestanden opnieuw
LIER abnormale beëindiging voor foutopsporing
* vereist foutopsporingspunten

Nginx in de foutopsporingsmodus

Hiervoor moet u Nginx compileren met de foutopsporingsvlag (--met-debug). Nadat u dat gedaan hebt, is het mogelijk om verbindingen van specifieke adressen te debuggen met de debug_connection richtlijn.

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

Vraag bij het vragen om hulp met Nginx de uitvoer van nginx -V, volledige configuratie en het logboek voor foutopsporing.

404 en andere foutpagina's

Dit wordt bereikt met behulp van een error_page richtlijn. Het definieert de bron die voor de fout wordt weergegeven.

# 1 error_page 404 / 404.html; error_page 500 502 503 504 / 50x.html; # 2 error_page 404 = 200 /empty.gif; # verander de antwoordcode in een andere met behulp van de "= response" error_page 404 = 301 http://example.com/notfound.html; # gebruik omleidingen voor foutverwerking # 3 # foutverwerking met een benoemde locatielocatie / error_page 404 = @fallback;  location @fallback proxy_pass http: // backend; 

Er is ook een richtlijn genoemd recursive_error_pages die het mogelijk maakt om verschillende omleidingen te doen met behulp van de error_page richtlijn. Bijvoorbeeld:

error_page 400 404 / 404.html; recursive_error_pages aan; locatie ~ * ^ / (404 \ .html | 500 \ .html | 503 \ .html) $ log_not_found off; # Schakelt het loggen van fouten over niet gevonden bestanden uit. error_page 404 = @default;  location @default log_not_found on; root / var / www / default; 

Index automatisch indexeren

Een verzoek waarbij het indexbestand niet wordt gevonden, wordt naar deze module gerouteerd (ngx_http_autoindex_module). [Voorbeeld: lokaal netwerk delen]

locatie / root / var / www / localdropbox; autoindex aan; # Schakelt de uitvoer van de directorylijst in of uit. autoindex_exact_size uit; # Exacte bestandsgrootte versus afronding naar dichtstbijzijnde KB, MB, GB. autoindex_format html; # indeling van een directoryvermelding. XML, JSON, JSONP mogelijk. autoindex_localtime aan; # lokale TZ versus UTC.  

Grootte van bestandsuploads

"Verzoek entiteit te groot" (413) is een veel voorkomende foutmelding wanneer de gebruiker probeert een bestand te uploaden. Deze bestandsgrootte wordt beheerd door een Nginx-configuratievariabele:

variabele client_max_body_size 10M; # M staat voor megabytes.

Hiermee wordt de maximale grootte van het hoofdgedeelte van de clientaanvraag ingesteld, gespecificeerd in de header "Content-Length" request. Om gebruikersfeedback te hebben voor deze uploads, kun je ook nginx-upload-voortgangsmodule gebruiken. U moet een X-Progress-ID toevoegen, waarmee u het bestand dat wordt geüpload, eenduidig ​​kunt identificeren.

koekjes

Nginx heeft een zeer nuttige en handige functionaliteit voor het aanbieden van cookies voor het identificeren van eindgebruikers. In een situatie waarin u geen externe analyses wilt gebruiken, is de ngx_http_userid_module module kan invullen door cookies te serveren.

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

Door deze module in te schakelen, de variabelen $ uid_reset$ uid_got en $ uid_set beschikbaar worden. Deze kunnen u helpen bij het schrijven van nog ingewikkeldere herschrijfregels.

Met deze stappen moet u zeker beginnen aan uw pad om Nginx productiever te gebruiken. 

Aanvullende bronnen

  1. Hoe nginx een verzoek verwerkt
  2. Nginx-foutopsporing