Nginx instellen als reverse proxy en webserver - Complete handleiding
```html
Nginx instellen als reverse proxy en webserver: een praktische handleiding
Nginx is een van de meest gebruikte webservers ter wereld, bekend om zijn snelheid, stabiliteit en veelzijdigheid. Of je nu een website wilt hosten, een API achter een reverse proxy wilt plaatsen of meerdere diensten via één server wilt beheren – Nginx biedt de oplossing. In dit artikel leggen we stap voor stap uit hoe je Nginx instelt als reverse proxy én als webserver, inclusief praktische tips voor optimale prestaties.
Wat is Nginx en waarom kiezen voor een reverse proxy?
Nginx is een open-source webserver die ook functioneert als reverse proxy, load balancer en cachingtool. Het is lichtgewicht en kan duizenden gelijktijdige verbindingen aan, waardoor het ideaal is voor moderne webapplicaties.
Een reverse proxy fungeert als tussenpersoon tussen clients en backend-servers. Dit biedt voordelen zoals:
- Verbeterde beveiliging (verbergt backend-servers)
- Load balancing (verdeelt verkeer over meerdere servers)
- Caching (versnelt laadtijden)
- SSL-terminatie (vereenvoudigt certificaatbeheer)
Nginx installeren op je server
Voor we Nginx als reverse proxy of webserver kunnen gebruiken, moet het geïnstalleerd zijn. Hieronder vind je de commando's voor populaire Linux-distributies:
Ubuntu/Debian
sudo apt update
sudo apt install nginx
CentOS/RHEL sudo yum install epel-release sudo yum install nginx
Start en enable Nginx sudo systemctl start nginx sudo systemctl enable nginx
Controleer of Nginx draait door je server-IP in een browser te openen. Je zou de welkomstpagina moeten zien.
Nginx configureren als webserver
Standaard serveert Nginx bestanden uit /var/www/html. Laten we een basiswebsite instellen:
- Maak een directory voor je site:
sudo mkdir -p /var/www/mijnsite.nl/html - Zet de juiste permissies:
sudo chown -R $USER:$USER /var/www/mijnsite.nl/html - Maak een test
index.htmlbestand aan - Maak een serverblok (virtual host) aan in
/etc/nginx/sites-available/mijnsite.nl:server { listen 80; server_name mijnsite.nl www.mijnsite.nl; root /var/www/mijnsite.nl/html; index index.html; location / { try_files $uri $uri/ =404; } } - Activeer de configuratie:
sudo ln -s /etc/nginx/sites-available/mijnsite.nl /etc/nginx/sites-enabled/ - Test de configuratie en herlaad Nginx:
sudo nginx -t sudo systemctl reload nginx
Nginx als reverse proxy instellen
Stel dat je een Node.js, Python of andere applicatie draait op poort 3000. We kunnen Nginx als reverse proxy configureren om verkeer naar deze applicatie te sturen:
server {
listen 80;
server_name api.mijnsite.nl;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Belangrijke proxy-directives:
proxy_pass: Definieert de backend-serverproxy_set_header: Behoudt belangrijke headersproxy_http_version: Ondersteunt HTTP/1.1 voor betere prestaties
Geavanceerde reverse proxy configuraties
Load balancing
Met Nginx kun je verkeer verdelen over meerdere backend-servers:
upstream backend_servers {
server backend1.mijnsite.nl:3000;
server backend2.mijnsite.nl:3000;
server backend3.mijnsite.nl:3000;
}
server { location / { proxy_pass http://backend_servers; } }
SSL-terminatie
SSL-certificaten kunnen gecentraliseerd worden beheerd bij Nginx:
server {
listen 443 ssl;
server_name api.mijnsite.nl;
ssl_certificate /pad/naar/certificaat.pem;
ssl_certificate_key /pad/naar/sleutel.key;
location / {
proxy_pass http://localhost:3000;
... overige proxy-instellingen
}
}
Praktische tips voor Nginx optimalisatie
- Worker processes: Zet
worker_processes auto;innginx.confvoor optimale CPU-benutting - Keepalive: Verhoog
keepalive_timeoutvoor langdurige HTTP-verbindingen - Gzip-compressie: Activeer gzip om bandbreedte te besparen
- Caching: Configureer caching voor statische bestanden
- Logging: Beperk logging voor betere prestaties (
access_log off;voor statische bestanden)
Veelvoorkomende problemen en oplossingen
502 Bad Gateway: Meestal betekent dit dat Nginx de backend-server niet kan bereiken. Controleer of je applicatie draait en of de poort in proxy_pass klopt.
Permission denied: Zorg dat de Nginx gebruiker (www-data of nginx) leesrechten heeft op je websitebestanden.
Configuratiefouten: Gebruik altijd sudo nginx -t voor het testen van je configuratie voordat je Nginx herlaadt.
Conclusie
Nginx is een krachtig hulpmiddel dat zowel als webserver als reverse proxy kan fungeren. Met de juiste configuratie kun je:
- Websites en applicaties efficiënt hosten
- Verkeer optimaal verdelen over backend-servers
- Beveiliging en prestaties verbeteren
- Complexe architecturen vereenvoudigen
Begin met de basisconfiguraties in dit artikel en breid geleidelijk uit naar geavanceerdere setup. Vergeet niet om wijzigingen altijd eerst te testen met nginx -t voordat je ze activeert.
```