뚠뚠멍의 생각들

Belangrijkste nginx-configuraties voor gebruik als webserver

Aangemaakt: 2024-09-26

Aangemaakt: 2024-09-26 21:20

Nginx is een open-source webserver en wordt vaak gebruikt als webserver of webproxy-server.

Met de juiste configuratie kan het statische content efficiënt leveren.

Hieronder beschrijf ik een aantal belangrijke configuratie-instellingen.


Enkele belangrijke instellingen met betrekking tot prestaties

1. gzip-compressie

Bij het laden van een website worden talloze bestanden zoals Javascript, afbeeldingen, HTML en CSS van de webserver ontvangen.

In plaats van deze content ongecomprimeerd te versturen, kan gzip-compressie worden gebruikt om de hoeveelheid verzonden data aanzienlijk te verminderen.


Dit resulteert in:

- Verminderde hoeveelheid data, wat leidt tot besparing op bandbreedte.

- Besparing op serverresources.

- Een snellere laadtijd voor de gebruiker.


Anderzijds kan het uitvoeren van gzip-compressie vóór het verzenden van de content leiden tot een hogere CPU-belasting op de server.

Het is essentieel om te testen welke soorten bestanden gecomprimeerd moeten worden, de compressieniveau en de minimale bestandsgrootte voordat de instellingen in productie worden genomen.


Hieronder volgen enkele instellingen met betrekking tot gzip.

* gzip_vary zorgt ervoor dat de content zowel in gecomprimeerde als ongecomprimeerde vorm kan worden verzonden, afhankelijk van of de client gzip ondersteunt. (Geeft aan dat verschillende versies van de content kunnen worden aangeboden, afhankelijk van de Accept-Encoding header in het client request.)


2. proxy_buffer instellingen

Nginx slaat de respons op in een buffer voordat deze naar de client wordt verzonden.

Wanneer de webserver een respons naar de client verzendt en de client langzaam is, moet de server wachten tot de data is verzonden. (netwerk bottle neck)

Dit houdt server resources in beslag. Om dit op te lossen, wordt een buffer gebruikt om de respons tijdelijk op te slaan, ongeacht de snelheid van de client. Dit levert de volgende voordelen op:

- Optimalisatie van de serverbelasting

- Verminderde netwerk bottle necks

※ Als de buffergrootte te groot is ingesteld, kan dit leiden tot vertraging bij real-time data transmissie zoals text streaming. Daarom is testen essentieel. Dit is vooral belangrijk bij recente AI-diensten; controleer deze instelling als text streaming niet werkt.


3. worker en http instellingen

Workers zijn processen die client requests afhandelen. Het aantal workers per CPU-core kan worden geconfigureerd.

HTTP verwerkt doorgaans request - connectie - respons - connectie sluiten. Om resources te besparen bij meerdere requests, kan de client connectie in stand worden gehouden. Dit is de keep-alive instelling.

De reden om deze twee te combineren is als volgt:

Als de server 4 cores heeft, is het theoretische maximum aantal connecties 1024 * 4 = 4096.

(Dit kan afwijken afhankelijk van resources en netwerkverkeer.)

Wanneer 4096 clients tegelijkertijd verbonden zijn en 65 seconden alle keep-alive connecties gebruiken,

kan de 4097e gebruiker geen verbinding maken, wat kan leiden tot vertraging.


Onder de aanname van stabiele server resources door middel van auto-scaling, kan deze configuratie een indirecte invloed hebben op responsvertragingen tijdens piekperiodes.


4. Overige - location block

Sommige instellingen, zoals proxy buffer, kunnen per request URL worden toegepast.

* Keep-alive en andere instellingen worden toegepast op HTTP/Server niveau en kunnen niet per blok worden geconfigureerd.

server {
listen 80;
server_name example.com;


Met bovenstaande instellingen kan de web performance worden geoptimaliseerd. Test grondig met verschillende testcases om de serverprestaties te optimaliseren!

* De gewijzigde nginx configuratie kan meestal zonder downtime worden toegepast, dus het is over het algemeen stabiel.






Reacties0