Middle
Welke limieten kunnen er bestaan op een nginx-server en waarmee kunnen ze verband houden?
sobes.tech AI
Antwoord van AI
De limieten van Nginx kunnen verband houden met prestaties, beveiliging en systeembronnen.
Belangrijkste limieten:
worker_processes: Beperkt het aantal werkprocessen van Nginx. Gerelateerd aan het aantal CPU-kernen en het beschikbare geheugen. Een te hoge waarde kan leiden tot overhead door contextwisselingen, een te lage waarde tot inefficiënt gebruik van bronnen.worker_connections: Maximaal aantal gelijktijdige verbindingen dat één werkproces kan verwerken. Gerelateerd aan de bestandsdescriptoren van het besturingssysteem (ulimit -n) en het beschikbare geheugen.client_max_body_size: Maximaal toegestane grootte van de body van het verzoek van de client. Gerelateerd aan het voorkomen van DoS-aanvallen door zeer grote verzoeken.limit_conn/limit_req: Modules om het aantal gelijktijdige verbindingen of de snelheid van verzoeken van één IP te beperken. Gebruikt ter bescherming tegen DoS-aanvallen en misbruik.open_file_cache max: Maximaal aantal items in de cache van geopende bestanden. Gerelateerd aan het aantal gelijktijdig geopende bestanden en het beschikbare geheugen. Beïnvloedt de prestaties bij werken met veel bestanden (bijvoorbeeld statische bestanden, logs).proxy_buffer_size/proxy_buffers: Groottes en aantal buffers voor geproxiede antwoorden. Gerelateerd aan het geheugen. Onjuiste waarden kunnen leiden tot fouten of inefficiënt gebruik van geheugen.- Time-out instellingen:
client_body_timeout: Time-out tussen het ontvangen van delen van de body van het verzoek.client_header_timeout: Time-out tussen het ontvangen van headers van het verzoek.send_timeout: Time-out tussen het verzenden van gegevens naar de client.keepalive_timeout: Time-out voor het onderhouden van keep-alive verbindingen. Gerelateerd aan de stabiliteit van de verbinding en bescherming tegen langzame aanvallen.
resolver_timeout: Time-out voor het oplossen van DNS-namen. Gerelateerd aan de beschikbaarheid van DNS-servers en de stabiliteit van het netwerk.
Limieten kunnen afhangen van:
- Besturingssysteem: Systeemlimieten voor het aantal bestandsdescriptoren, threads, geheugen.
- Hardwarebronnen: Aantal CPU-kernen, hoeveelheid RAM, netwerkbandbreedte.
- Belasting: Verwacht aantal gelijktijdige gebruikers, intensiteit van verzoeken.
- Nginx configuratie: Directieven in configuratiebestanden.
- Beveiliging: Noodzaak om bescherming te bieden tegen DoS-aanvallen, wachtwoordpogingen en andere bedreigingen.
Voorbeeld van configuratie van worker_processes en worker_connections:
# Bepaalt het aantal werkprocessen op basis van het aantal beschikbare CPU-kernen.
worker_processes auto;
# Maximaal aantal verbindingen dat één werkproces kan verwerken.
# 65535 - typische waarde voor Linux, maar controleer `ulimit -n`
# 1024 (standaard) * worker_processes - totaal aantal verbindingen dat Nginx aankan.
events {
worker_connections 65535;
}
Tabel met voorbeelden van limieten:
| Limiet | Relatie met | Typische waarde |
|---|---|---|
worker_processes |
CPU | auto |
worker_connections |
Bestandsdescriptoren, geheugen | 1024 - 65535 |
client_max_body_size |
Beveiliging | 1m - 100m |
limit_conn |
Beveiliging, belasting | Afhankelijk van beleid |
keepalive_timeout |
Prestaties, belasting | 60s - 120s |
open_file_cache max |
Geheugen, aantal bestanden | 1000 - 100000 |
Het correct instellen van limieten is cruciaal voor de stabiliteit, prestaties en beveiliging van Nginx. Dit vereist vaak monitoring en iteratieve afstelling.