Wat is Nginx en wat doet het op je server?

Auteur: Gepubliceerd

Kort samengevat: Nginx is serversoftware die verzoeken van browsers ontvangt en websitebestanden levert of het verkeer doorstuurt naar een applicatie. Het kan ook versleutelde HTTPS-verbindingen afhandelen, verkeer over servers verdelen en kopieën van antwoorden in een cache bewaren. Bij managed hosting regelt de provider dit meestal; op je eigen server kan de configuratie jouw verantwoordelijkheid zijn.

Welke rol speelt Nginx bij het openen van een website?

Nginx, uitgesproken als ‘engine-x’, is in de eerste plaats een HTTP-server: een programma dat de communicatie voor het ophalen van webpagina’s afhandelt. Verwar het niet met een fysieke server of virtuele machine: Nginx draait op zo’n computer naast andere programma’s.

Wanneer je een websiteadres invoert, helpt DNS — het systeem dat domeinnamen aan netwerkadressen koppelt — de browser om de server te vinden. De browser maakt verbinding en verstuurt een verzoek, bijvoorbeeld om de homepage op te halen. Als het verkeer bij Nginx terechtkomt, bepaalt het programma op basis van de configuratie hoe het verzoek wordt afgehandeld. Daarbij kijkt het onder meer naar de domeinnaam en het pad in het adres.

Nginx kan rechtstreeks statische bestanden terugsturen: eerder opgeslagen bestanden zoals HTML-documenten, CSS-stylesheets, JavaScript-scripts en afbeeldingen. Het is echter geen contentmanagementsysteem of database. Nginx maakt zelf geen beheeromgeving voor een webshop en berekent de inhoud van het winkelmandje niet — dat zijn taken van de applicatie.

Reverse proxy, HTTPS en andere toepassingen

Een tweede belangrijke functie van Nginx is die van reverse proxy: een tussenlaag die namens de applicatie verzoeken van gebruikers ontvangt. De browser maakt verbinding met Nginx, dat het verzoek doorstuurt naar het juiste proces of de juiste server en het ontvangen antwoord terugstuurt. Daardoor hoeft de applicatie niet rechtstreeks verbindingen vanaf het internet te accepteren.

Veelvoorkomende toepassingen zijn:

Nginx gebruikt een gebeurtenisgestuurde architectuur: een werkproces kan veel verbindingen afhandelen door te reageren zodra gegevens kunnen worden gelezen of geschreven. Dat helpt om gelijktijdig verkeer efficiënt te verwerken, maar betekent niet dat alleen het installeren van het programma elke website sneller maakt. Trage databasequery’s kunnen antwoorden nog steeds vertragen.

Voorbeeld: een webshop en applicatie achter Nginx

Stel je een webshop voor waarbij Nginx het domein winkel.example bedient. Een verzoek om een productfoto kan worden afgehandeld door een bestand van de schijf te lezen. Een verzoek om het winkelmandje gaat daarentegen naar de applicatie, die de gebruikerssessie controleert, gegevens ophaalt en een antwoord samenstelt.

Bij WordPress wordt PHP-code doorgaans uitgevoerd door PHP-FPM, een afzonderlijk programma dat PHP-processen beheert. Nginx stuurt de betreffende verzoeken via het FastCGI-protocol naar dit programma. Bij een applicatie die in Node.js of Python is geschreven, kan Nginx het verkeer via HTTP doorsturen naar de applicatieserver die op een lokale poort draait.

Deze taakverdeling helpt bij het opsporen van problemen. Als afbeeldingen wel verschijnen, maar het winkelmandje een fout geeft, kan Nginx correct werken terwijl het probleem bij de applicatie ligt. De fout 502 Bad Gateway wijst vaak op een probleem bij het verkrijgen van een geldig antwoord van de dienst achter de proxy. De oorzaak moet worden achterhaald aan de hand van de logs: de registraties van wat Nginx en de applicatie doen.

Schakel daarbij niet zonder meer caching in voor de hele webshop. Het winkelmandje, de klantomgeving en antwoorden met persoonsgegevens moeten op de juiste manier van caching worden uitgesloten of met nauwkeurige regels van elkaar worden afgeschermd.

Nginx of Apache — wat telt bij de keuze?

Apache HTTP Server is een andere populaire HTTP-server. Beide oplossingen kunnen websites bedienen en als tussenlaag voor applicaties fungeren. De keuze komt niet neer op ‘Nginx is snel, Apache is traag’: het soort verkeer, de configuratie, de applicatie en de ervaring van de beheerder spelen allemaal een rol.

Een praktisch verschil betreft .htaccess-bestanden, die in Apache lokale regels kunnen bevatten, bijvoorbeeld voor doorverwijzingen. Nginx leest deze bestanden niet. Bij een verhuizing van een website moet je de benodigde regels daarom overzetten naar de configuratie van Nginx, en niet alleen de websitebestanden kopiëren.

Nginx en Apache kunnen ook samenwerken: Nginx ontvangt het verkeer en Apache handelt een deel van de verzoeken af. De mededeling ‘de hosting gebruikt Nginx’ beschrijft dus niet de volledige configuratie en garandeert evenmin een bepaald prestatieniveau.

Moet je Nginx zelf configureren?

Vraag bij shared hosting of managed hosting aan de provider wie verantwoordelijk is voor HTTPS, doorverwijzingen, caching en de regels die de applicatie nodig heeft. Mogelijk kun je alle benodigde instellingen via het beheerpaneel regelen, zonder toegang tot de serverconfiguratie.

Op je eigen VPS, oftewel virtuele server, ben je meestal verantwoordelijk voor de installatie, updates, certificaten en het opsporen van problemen. Bewaar een kopie van de werkende configuratie voordat je iets wijzigt. Het commando nginx -t controleert of de syntaxis klopt en of de opgegeven bestanden beschikbaar zijn. Het bevestigt echter niet dat de applicatie goed werkt of dat de regels veilig zijn.

Laad de configuratie na een geslaagde test opnieuw en controleer vervolgens de website, het inloggen, de doorverwijzingen en de foutlogs. Controleer de exacte bestandspaden en de commando’s voor het beheer van de dienst in de documentatie van Nginx en de gebruikte systeemdistributie: deze hangen af van de manier waarop Nginx is geïnstalleerd.

Zie ook: Wat is 2FA?

Lees ook

Lees hoe PHP-FPM PHP-verzoeken verwerkt, verschilt van een webserver en hoe je processen afstemt op verkeer en hostingcapaciteit.
Ontdek hoe BIND als open DNS-serversoftware domeinen beheert, welke rollen het vervult en wanneer zelf beheren zinvol is.
Lees wat het Poolse REGON-register en -nummer betekenen, hoe ze verschillen van NIP en KRS en hoe je bedrijfsgegevens controleert.