VPS · Gids

nginx reverse proxy: handleiding

Bijgewerkt October 11, 2026 5 min leestijd

Op deze pagina
  1. Wat een reverse proxy doet
  2. Stap 1: nginx installeren
  3. Stap 2: het proxy server block aanmaken
  4. De headers, en de slash aan het eind
  5. WebSockets
  6. Stap 3: gratis HTTPS met Certbot
  7. 502-, 504- en 413-fouten oplossen
  8. Draai het op een HytHost VPS
  9. FAQ

Een reverse proxy staat vóór je applicaties en geeft de verzoeken van bezoekers aan ze door. Met nginx ervoor wordt een Node.js-app, een Docker-container of een dashboard dat op een of andere poort draait gewoon https://app.example.com, met HTTPS, de juiste headers en één plek om alles te beheren.

Deze handleiding zet nginx stap voor stap op als reverse proxy op Ubuntu: het server block, de headers, WebSockets, gratis HTTPS en de fouten die je het vaakst tegenkomt.

Wat een reverse proxy doet

  • Eén publiek toegangspunt. nginx luistert op poort 80 en 443 en stuurt elk domein of pad door naar de juiste app, zodat de apps zelf nooit rechtstreeks aan het internet hangen.
  • HTTPS op één plek. nginx regelt de certificaten; de apps erachter kunnen gewoon HTTP praten op localhost.
  • Meerdere apps op één server. app.example.com, api.example.com en example.com/blog kunnen elk naar een andere dienst gaan.
  • Extra's: compressie, caching, uploadlimieten en toegangsregels, zonder de app aan te raken.

Stap 1: nginx installeren

sudo apt update
sudo apt install nginx

Open http://your-server-ip en je zou de welkomstpagina van nginx moeten zien. Gebruik je ufw, sta webverkeer dan toe met sudo ufw allow 'Nginx Full'.

Controleer of je app draait en op de server zelf bereikbaar is, bijvoorbeeld met curl http://127.0.0.1:3000. Als dat mislukt, mislukt nginx ook.

Draai nginx en je apps met volledige root-toegang: HytHost KVM VPS-pakketten vanaf €2.92/mnd.

VPS-pakketten bekijken

Stap 2: het proxy server block aanmaken

Op Ubuntu krijgt elke site een bestand in /etc/nginx/sites-available/, dat je activeert met een link in sites-enabled. Maak /etc/nginx/sites-available/app.example.com aan:

server {
    listen 80;
    server_name app.example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Activeer het, test de configuratie en herlaad:

sudo ln -s /etc/nginx/sites-available/app.example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Laat het A-record van het domein naar je server wijzen en http://app.example.com toont nu je app. Draai altijd nginx -t voordat je herlaadt: zo vang je typefouten af voordat ze de site platleggen.

De headers, en de slash aan het eind

  • Host geeft het domein door dat de bezoeker opvroeg. Zonder deze header stuurt nginx het adres uit proxy_pass, en apps die links opbouwen vanuit de host gaan stuk.
  • X-Real-IP en X-Forwarded-For geven het IP-adres van de bezoeker door. Zonder deze headers lijkt elk verzoek van 127.0.0.1 te komen.
  • X-Forwarded-Proto vertelt de app of de bezoeker HTTPS gebruikte, zodat die niet in een redirect-lus belandt.

Het nginx-pakket van Ubuntu levert deze regels mee in /etc/nginx/proxy_params, dus include proxy_params; is een handige snelkoppeling.

De slash aan het eind maakt uit. Voor een app onder een pad:

location /app/ {
    proxy_pass http://127.0.0.1:3000/;
}

Met de slash na de poort komt /app/login bij de app aan als /login. Zonder slash krijgt de app het volledige /app/login.

WebSockets

Chat-apps, live dashboards en veel beheerpanelen gebruiken WebSockets, die twee extra headers nodig hebben. Voeg deze map één keer toe, binnen het http-blok, bijvoorbeeld in een nieuw bestand /etc/nginx/conf.d/websocket.conf:

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

Daarna in de location:

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_read_timeout 1h;

nginx sluit een geproxiede verbinding die 60 seconden niets verstuurt; de langere proxy_read_timeout houdt stille WebSockets open. proxy_http_version 1.1 is pas de standaard vanaf nginx 1.29.7, en Ubuntu 24.04 levert 1.24, dus laat de regel staan.

Stap 3: gratis HTTPS met Certbot

sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/local/bin/certbot
sudo certbot --nginx -d app.example.com

Certbot haalt een gratis Let's Encrypt-certificaat op, voegt de HTTPS-instellingen toe aan je server block en kan HTTP naar HTTPS doorsturen. Het certificaat wordt automatisch verlengd; controleer dat met sudo certbot renew --dry-run. Meer over certificaten in zo krijg je een gratis SSL-certificaat.

502-, 504- en 413-fouten oplossen

FoutGebruikelijke oorzaakOplossing
502 Bad Gatewaynginx kan de app niet bereiken: die is gestopt, gecrasht of luistert op een andere poort of een ander adresStart de app, controleer de poort met curl http://127.0.0.1:PORT, lees /var/log/nginx/error.log
504 Gateway TimeoutDe app deed er langer dan 60 seconden over om te antwoordenMaak het verzoek sneller, of verhoog proxy_read_timeout voor die location
413 Request Entity Too LargeEen upload is groter dan de standaardlimiet van nginx van 1 MBZet client_max_body_size 50m; in het server block
Redirect-lusDe app weet niet dat de bezoeker HTTPS gebruikteGeef X-Forwarded-Proto door en vertel de app dat hij achter een proxy draait

Na elke wijziging: sudo nginx -t, daarna sudo systemctl reload nginx.

Draai het op een HytHost VPS

Een reverse proxy heeft een server nodig waarop jij poort 80 en 443 in handen hebt. HytHost VPS-pakketten draaien op KVM met volledige root-toegang, SSD-opslag en DDoS-bescherming; kies Ubuntu 24.04 en volg de stappen hierboven. Draai je je apps in containers? Zet dan eerst Docker op met zo installeer je Docker op Ubuntu, en bind de poorten van de containers aan 127.0.0.1, zodat alleen nginx ze kan bereiken.

FAQ

Veelgestelde vragen

Een reverse proxy stuurt verzoeken door naar een of meer apps erachter. Een load balancer is een reverse proxy die verzoeken verdeelt over meerdere kopieën van dezelfde app. nginx kan allebei, met een upstream-blok dat de kopieën opsomt.

nginx kan de app erachter niet bereiken. Controleer of de app draait en luistert op het adres en de poort uit proxy_pass, en lees /var/log/nginx/error.log voor de precieze reden.

Nee, als de app op dezelfde server draait. nginx regelt HTTPS voor bezoekers en praat met de app via gewoon HTTP op 127.0.0.1, dat de machine nooit verlaat.

Geef elke app een eigen server block met een eigen server_name, zoals app.example.com en api.example.com, elk met een proxy_pass naar een andere poort.

Ja. Publiceer de poort van elke container alleen op 127.0.0.1 en laat proxy_pass daarnaar wijzen. Zo blijven de containers van het publieke internet af, en dat is belangrijk omdat door Docker gepubliceerde poorten ufw omzeilen.

Host je apps achter nginx

HytHost KVM VPS-pakketten met volledige root-toegang, SSD-opslag en DDoS-bescherming vanaf €2.92/mnd.

Live chat 8 AM – 11 PM (Chișinău time) · tickets answered during business hours

Was deze gids nuttig?