Sobes.tech
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.