NGINX-tutorial: de basiscommando’s en configuraties

nginx

NGINX: wat doet het?

In ons basisartikel hebben wij al voor je op een rijtje gezet wat NGINX is en hoe je het installeert en inricht op je systeem. In de volgende tutorial geven we je een overzicht van de basiscommando’s en configuratiemogelijkheden van de NGINX-webserver.


De centrale besturingseenheid: nginx.conf

De NGINX-webserver werkt event-based, in tegenstelling tot bijvoorbeeld Apache. Aparte aanvragen worden niet geclassificeerd als nieuw werkproces waarvoor alle modules moeten worden geladen, maar als events. Deze events worden verdeeld in bestaande werkprocessen die door het primaire hoofdproces worden beheerd. Hoeveel werkprocessen er uiteindelijk zijn en hoe de serveraanvragen (de events) worden opgedeeld, is gedefinieerd in het configuratiebestand nginx.conf. Deze vind je in de directory’s /usr/local/nginx/conf, /etc/nginx of /usr/local/etc/nginx.


NGINX-processen beheren en nieuwe configuraties toepassen

NGINX start na de installatie automatisch op, maar kan ook opgestart worden met het volgende commando:

sudo service nginx start				
		

Wanneer de webserversoftware draait, kun je die beheren door de processen (in de eerste plaats het hoofdproces) aan te spreken met de parameter –s en een specifiek signaal. De syntax van het betreffende commando is niet zo verrassend:

sudo nginx -s signal		
		

Voor "signal" heb je de volgende vier mogelijkheden:

  • stop: NGINX wordt direct afgesloten.
  • quit: NGINX wordt afgesloten nadat alle actieve aanvragen zijn beantwoord.
  • reload: het configuratiebestand wordt opnieuw geladen.
  • reopen: de logfiles worden opnieuw gestart.

In NGINX is de reload-optie, waarbij het configuratiebestand opnieuw wordt geladen, een goede mogelijkheid om veranderingen aan te brengen zonder de server te moeten afsluiten en opnieuw op te starten. Om veranderingen op te slaan, zal je altijd moeten kiezen of je de server helemaal opnieuw wilt opstarten of een eenvoudige reload van NGINX wilt uitvoeren. Als je kiest voor de laatste optie en het onderstaande commando hebt uitgevoerd, ontvangt het hoofdproces de opdracht om de veranderingen in het nginx.conf-bestand op te slaan:

sudo nginx -s reload		
		

Hiervoor wordt eerst gecontroleerd of de syntax correct is. Bij een positieve feedback start het hoofdproces nieuwe werkprocessen met de nieuwe instellingen en stopt hij tegelijkertijd de oude processen. Wanneer de syntax niet wordt gevalideerd, wordt de oude configuratiestatus gehandhaafd. Alle actieve werkprocessen worden afgesloten zodra alle actieve aanvragen zijn verwerkt.

Je kunt NGINX-processen ook doelgericht aanspreken met behulp van tools, zoals “kill”. Daarvoor heb je alleen het corresponderende proces-ID nodig dat je kan vinden in het nginx.pid-bestand in de directory /usr/local/nginx/logs of in de directory /var/run. Als het hoofdproces bijvoorbeeld het ID 1628 heeft, kan hij met kill en het quit-signaal als volgt worden beëindigd:

sudo kill -s quit 1628			
		

Met het serviceprogramma “ps” kan je ook een lijst met alle uitgevoerde NGINX-processen laten weergeven:

sudo ps -ax | grep nginx				
		

Zo reguleer je met NGINX de levering van statische content

Je gebruikt je webserver waarschijnlijk om bestanden, zoals foto’s, video’s of statische HTML-content te leveren. Om meer efficiëntie te behalen is het verstandig om verschillende lokale directory’s voor de verschillende soorten content te kiezen. Begin met het maken van een voorbeelddirectory /data/html/, plaats daarin een voorbeeld HTML-document index.html en maak een map /data/afbeeldingen aan met enkele voorbeeldafbeeldingen.

Hierna moeten de twee directory’s in het configuratiebestand worden ingevoerd door ze allebei in de server block directive vast te leggen, die op zijn beurt de sub-directive van de http-block directive is. Hier zijn al verschillende statements standaard ingesteld die je eerst uit kunt zetten (off). Maak vervolgens eenvoudig een apart server block statement:


http {
server {
}
}

In dit server block moet je de twee directory’s specificeren waarin de afbeeldingen en HTML-documenten zich bevinden. Dat ziet er als volgt uit:

server {
	
location / {
root /data/html;
}
location /bilder/ {
root /data;
}
}

Het gaat bij deze configuratie om een standaardinstelling van een server die luistert op poort 80 en toegankelijk is via de local host. Alle aanvragen waarvan de URI’s met /afbeeldingen/ beginnen, zullen worden doorgeleid naar de directory /data/html.

Vergeet niet om NGINX met reload opnieuw te laden of geheel op te starten om de veranderingen op te slaan.


Een eenvoudige NGINX-proxyserver inrichten

In plaats van een bestaande server, wordt de NGINX-server heel vaak als proxyserver gebruikt. Hij kan inkomende aanvragen ontvangen, ze volgens verschillende criteria filteren en doorsturen, en het desbetreffende antwoord bij de clients afleveren. Vooral cache proxy’s zijn populair. Zij leveren lokaal opgeslagen, statische content direct af en sturen alle andere aanvragen alleen aan de server door. Ook firewall proxy’s worden veel gebruikt. Zij filteren onveilige of ongewenste verbindingen eruit. Het volgende voorbeeld is een cache proxy die opgevraagde afbeeldingen uit de lokale directory haalt en alle andere aanvragen aan de webserver doorstuurt.

Allereerst definieer je de mainserver in nginx.conf:

server {
	
list 8080;
root /data/up1;
location / {
}
}

In tegenstelling tot het vorige voorbeeld, gebruik je hierbij de list directive omdat niet de standaardpoort, maar poort 8080 moet worden gebruikt voor inkomende aanvragen. Maak tevens de target directory /data/up1 aan en sla hier de index.html-pagina op.

Vervolgens worden de NGINX-proxyserver en zijn functie om beeldcontent af te leveren gedefinieerd door de proxyPass directive te gebruiken, inclusief details over het protocol (http), de naam (localhost) en de poort (8080) van de mainserver:

server {
	
location / {
proxy_pass http://localhost:8080;
}
location ~ \.(gif|jpg|png) $ {
root /data/bilder;
}
}

Het tweede location block geeft de proxyserver instructies om alle aanvragen zelf te beantwoorden als hun URI’s eindigen op kenmerkende type-aanduidingen voor afbeeldingen, zoals .gif, .jpg en .png, door de overeenkomstige content van de lokale directory /data/afbeeldingen op te halen. Alle andere aanvragen worden naar de mainserver doorgestuurd. Net als bij eerdere instellingen sla je je afbeeldingenproxy op met het reload-signaal aan NGINX in het hoofdproces of met een herstart van NGINX. Meer directives voor complexere proxy-instellingen kan je vinden in de officiële online handleiding van NGINX.

  • Gecertificeerde veiligheid

    Gecertificeerde veiligheid
  • Beste hostingbedrijf

    Beste hostingbedrijf
  • MKB Best Choice

    MKB Best Choice
  • Professionele support

    Professionele support
  • Hosted in Germany

    Hosted in Germany