Onafhankelijke vergelijking · geen betaalde rankings
Home / Blog / Technisch / Gunicorn en Nginx: rollen correct verdelen voor Django

Gunicorn en Nginx: rollen correct verdelen voor Django

Gunicorn bestuurt Django; Nginx bedient statische bestanden en beschermt de socket. Het omkeren of samenvoegen van rollen betekent dat Python-werknemers worden verzadigd met favicons.

Redactie Hébergeurs.eu 4 min Bijgewerkt 19 jul. 2026

Django in productie: Gunicorn gelanceerd met zeventien werknemers “via internetformule”, Nginx die alles – inclusief /statisch/ – proxy voor Gunicorn. De Gunicorn CPU gaat tot 100% tijdens een beeldcrawl. Oplossing: nginx alias /static/ en werkers teruggebracht tot vijf: API-latentie wordt gedeeld door drie.

De standaard Django-stack in productie ziet er als volgt uit:


Klant → Nginx (TLS, compressie, statische bestanden, snelheidsbeperking) → Gunicorn (WSGI) → Django

Gunicorn is geen openbare webserver — het is een WSGI-procesmanager. Nginx voert geen Python uit — het zou Django nooit moeten interpreteren.

Maatvoering van Gunicorn met meting, niet met alleen de formule

Startformule op een VPS met twee kernen: workers = (2 × cores) + 1 → vijf werknemers.

Verfijn vervolgens volgens:

  • RAM: sta 100 tot 300 MB per Django-werknemer toe, afhankelijk van de toepassing.
  • --time-out 30: dood een geblokkeerde werker - een lang rapport moet via Celery gaan, niet via HTTP.
  • --graceful-timeout: uitgelijnd met proxy_read_timeout nginx.
  • --max-requests 1000 --max-requests-jitter 50: recycle werknemers om lichte geheugenlekken te beperken.

gunicorn mijnproject.wsgi:application\

  --bind unix:/run/gunicorn.sock \

  --werknemers 5 \

  --time-out 30 \

  --toegang-logbestand -

Typische nginx-configuratie


locatie /statisch/ {

    alias /var/www/mijnproject/static/;

    vervalt 30d;

}

locatie /media/ {

    alias /var/www/mijnproject/media/;

}

locatie / {

    proxy_pass http://unix:/run/gunicorn.sock;

    proxy_set_header Host $host;

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    proxy_set_header X-Forwarded-Proto $schema;

}

Configureer ALLOWED_HOSTS en SECURE_PROXY_SSL_HEADER in Django zodat HTTPS achter nginx correct wordt herkend.

systemd, socket en naadloze implementatie

Een gunicorn.service-eenheid met User=www-data en Restart=always zorgt voor automatisch opnieuw opstarten. De Unix-socketmachtigingen moeten nginx toegang geven.

Bij implementatie: collectstatic, herlaad dan Gunicorn (gracieuze HUP). Werknemers voltooien huidige verzoeken voordat nieuwe code wordt geladen – geen abrupte beëindiging als time-outs op één lijn liggen.

Asynchrone werknemers: voorzichtigheid

gevent kan helpen als uit profilering blijkt dat er sprake is van aanzienlijke netwerkwachttijden (externe API-aanroepen). Dit is niet de standaardkeuze voor e-commerce met veel databases; synchronisatie met een grote Postgres-verbindingspool blijft voorspelbaarder.

Voor langlopende taken, zie Celery en wachtrijen.

Hosting- en productbeperkingen

Een VPS is het minimum voor een serieuze Django in productie. PaaS (Railway, Clever Cloud) abstracte Gunicorn - u configureert een Procfile of gelijkwaardig. Gedeelde Python blijft zeldzaam en maakt over het algemeen geen controle over het aantal werkers mogelijk.

De top: Overbelaste Gunicorn serveert vaak wat Nginx gratis zou geven

Controleer uw nginx-logboeken: als meer dan nul procent van de statische of mediaverzoeken naar de Gunicorn upstream gaat, corrigeer dan de aliassen voordat u werkrollen toevoegt.

Beslis en ga vooruit zonder blinde vlek

Om een Django-stack weer op een gezonde basis te brengen:

  1. Configureer nginx om /static/ en /media/ als aliassen te dienen - Gunicorn zou alleen dynamisch moeten omgaan.
  2. Grootte werknemers gebaseerd op het aantal cores en gemeten RAM, niet op een gekopieerde en geplakte formule.
  3. Lijn time-outs uit tussen nginx en Gunicorn om onderbrekingen tijdens de verwerking te voorkomen.
  4. Uitbesteden exports en rapportages langer dan dertig seconden naar Celery of een wachtrij.
  5. Script voor een soepele herlaadbeurt bij implementatie — collectstatic, HUP, HTTP-rooktest.

Voor het poolen van Postgres-verbindingen, zie Verbindingspooling. Om VPS-hosts te vergelijken, bladert u door onze overzicht.

Veelgestelde vragen

Hoeveel Gunicorn-arbeiders?

Begin met (2 × cores) + 1, en pas vervolgens aan op basis van RAM en metingen onder echte belasting.

Levert Nginx statische Django-bestanden?

Ja - collectstatic naar een mapalias nginx. Gunicorn mag geen CSS, JS of media bedienen.

Socket Unix of TCP?

Unix-socket op dezelfde machine; TCP localhost voor gecontaineriseerde architecturen.

synchroniseren versus gevent?

standaardsynchronisatie; alleen geven als profilering een dominante netwerkverwachting blijkt.


Gunicorn bestuurt Django; Nginx doet de rest: de twee verwarren is het betalen van Python om PNG's te serveren.

Vergelijk Europese providers

Filter op compliance, locatie en gebruikssituatie — open daarna de fiches om het echte bereik te controleren.

Blader door het overzicht
Blog

Gerelateerde lectuur

Alle artikelen →