🔒 HTTPS, domein & troubleshooting
DNS koppelen, gratis SSL via Let's Encrypt en veelvoorkomende fouten oplossen.
Een domein koppelen via DNS
Om jouw domein naar de VPS te laten wijzen, voeg je een A-record toe bij de DNS-beheerder van je domein (bijv. TransIP, Cloudflare, NameCheap).
Vervang 123.45.67.89 door jouw VPS IP-adres. @ staat voor het rootdomein (jouwdomein.nl).
Na het aanpassen van DNS duurt het even voordat de wijziging wereldwijd zichtbaar is. Controleer met:
nslookup jouwdomein.nl
Certbot installeren
Certbot is de officiële tool van Let's Encrypt — een gratis, automatisch certificate authority. Het vraagt een SSL-certificaat aan en configureert nginx automatisch.
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d jouwdomein.nl -d www.jouwdomein.nl
• Voer je e-mailadres in (voor verlengingsherinneringen)
• Accepteer de gebruiksvoorwaarden
• Certbot past de nginx-config automatisch aan!
sudo certbot renew --dry-run
Certbot verlengt het certificaat automatisch elke 90 dagen via een cron-taak. Deze test controleert of dat werkt.
HTTP → HTTPS redirect
Certbot voegt automatisch een redirect toe, maar het is goed te begrijpen wat er in je nginx-config staat na de installatie.
server {
listen 80;
server_name jouwdomein.nl www.jouwdomein.nl;
return 301 https://$server_name$request_uri; # HTTPS redirect
}
server {
listen 443 ssl;
server_name jouwdomein.nl www.jouwdomein.nl;
ssl_certificate /etc/letsencrypt/live/jouwdomein.nl/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/jouwdomein.nl/privkey.pem;
root /var/www/mijnapp/public;
# ... rest van je config
}
Een 301 Permanent Redirect vertelt browsers en zoekmachines dat HTTP voorgoed verplaatst is naar HTTPS. Browsers onthouden dit en gaan direct naar HTTPS bij een volgend bezoek.
Troubleshooting: nginx fouten
De meeste problemen na deployment hebben een van deze oorzaken. Werk de checklist systematisch af voordat je verder zoekt.
nginx kan PHP-FPM niet bereiken.
sudo systemctl status php8.3-fpm sudo systemctl restart php8.3-fpm # Check socket pad in nginx config vs. wat FPM gebruikt ls /run/php/
nginx heeft geen leesrechten op de webroot of de index.php ontbreekt.
ls -la /var/www/mijnapp/public/ sudo chown -R www-data:www-data /var/www/mijnapp/public
Symfony of PHP gooit een fout. Kijk in de logs:
tail -f /var/www/mijnapp/var/log/prod.log tail -f /var/log/nginx/mijnapp_error.log
De standaard site is nog actief of de server_name in je config klopt niet.
sudo rm /etc/nginx/sites-enabled/default sudo nginx -t && sudo systemctl reload nginx
Troubleshooting: Symfony fouten
Als nginx werkt maar Symfony problemen geeft, zijn dit de meest voorkomende oorzaken.
Symfony kan niet schrijven naar var/ of de cache is corrupt.
sudo chown -R www-data:www-data /var/www/mijnapp/var php bin/console cache:clear --env=prod
DATABASE_URL in .env.local klopt niet.
php bin/console doctrine:schema:validate --env=prod # Controleer .env.local en voer dan opnieuw uit: composer dump-env prod
composer install is niet uitgevoerd of de autoloader is verouderd.
composer install --no-dev --optimize-autoloader composer dump-autoload --optimize --no-dev
try_files in nginx config mist of verwijst verkeerd.
# Controleer dat dit in je server block staat: # try_files $uri $uri/ /index.php$is_args$args; cat /etc/nginx/sites-available/mijnapp
Gefeliciteerd — je app staat live!
# Symfony logs volgen tail -f /var/www/mijnapp/var/log/prod.log # nginx error log tail -f /var/log/nginx/mijnapp_error.log # nginx access log tail -f /var/log/nginx/mijnapp_access.log # PHP-FPM log tail -f /var/log/php8.3-fpm.log # Systemd status journalctl -u nginx -f
Kennischeck
Les 7 afronden
Ga door naar: Bonus — Railway PaaS →