Deployment-track Les 4 van 8

⚙️ nginx configureren voor Symfony

Server block schrijven, PHP-FPM koppelen en de webserver klaarstomen voor jouw app.

⏱ 25 min5 stappen Vereist: Les 3 — PHP, Composer & MySQL
Stap 1 / 5

nginx installeren

nginx is de webserver die HTTP-verzoeken ontvangt en doorstuurt naar PHP-FPM. Het is sneller en minder geheugenintensief dan Apache — de standaardkeuze voor Symfony in productie.

Installeer nginx
sudo apt install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginx
Test dat nginx werkt
curl http://localhost

Je ziet de standaard nginx-welkomstpagina in HTML. Via je browser: open http://jouw-ip-adres.

🏗️ Hoe nginx werkt met Symfony

1. Browser stuurt HTTP-verzoek naar poort 80

2. nginx ontvangt het verzoek en kijkt in zijn server block

3. PHP-bestanden worden doorgestuurd naar PHP-FPM via een socket

4. PHP-FPM voert public/index.php uit (Symfony front controller)

5. Het antwoord gaat terug via nginx naar de browser

Stap 2 / 5

Map aanmaken voor je app

nginx verwacht dat bestanden op een vaste locatie staan. We plaatsen de app in /var/www/mijnapp en stellen de juiste eigenaar in.

Maak de map aan en stel eigenaar in
sudo mkdir -p /var/www/mijnapp
sudo chown -R deploy:www-data /var/www/mijnapp
sudo chmod -R 775 /var/www/mijnapp

Vervang deploy door je gebruikersnaam. www-data is de groep van nginx/PHP-FPM.

Voeg jezelf toe aan de www-data groep
sudo usermod -aG www-data deploy

Log opnieuw in na dit commando zodat de groepswijziging geldt.

Stap 3 / 5

Server block schrijven

Een server block vertelt nginx hoe hij verzoeken voor jouw domein moet afhandelen. We maken een bestand aan in /etc/nginx/sites-available/.

Maak het configuratiebestand aan
sudo nano /etc/nginx/sites-available/mijnapp
Plak deze configuratie (vervang jouwdomein.nl)
server {
    listen 80;
    server_name jouwdomein.nl www.jouwdomein.nl;
    root /var/www/mijnapp/public;

    index index.php;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?:ht|git|svn) {
        deny all;
    }

    error_log /var/log/nginx/mijnapp_error.log;
    access_log /var/log/nginx/mijnapp_access.log;
}
📖 Wat doet elke regel?

root /var/www/mijnapp/public — Symfony's public-map is de webroot (alleen hier staan publieke bestanden)

try_files ... /index.php — Stuur alle routes naar Symfony's front controller

fastcgi_pass unix:/run/php/php8.3-fpm.sock — PHP via een Unix-socket (sneller dan TCP)

deny all voor .ht/.git — Verberg gevoelige bestanden

Stap 4 / 5

Site activeren en testen

nginx heeft twee mappen: sites-available (alle configs) en sites-enabled (actieve configs). We maken een symlink om de site te activeren.

1. Activeer de site (symlink aanmaken)
sudo ln -s /etc/nginx/sites-available/mijnapp /etc/nginx/sites-enabled/
2. Verwijder de standaard site
sudo rm /etc/nginx/sites-enabled/default
3. Test de configuratie op fouten
sudo nginx -t

Je ziet: nginx: configuration file /etc/nginx/nginx.conf test is successful. Anders staat de fout er direct bij.

4. Herlaad nginx
sudo systemctl reload nginx
🔁 Komt terug uit de Linux-track

systemctl reload en ln -s (symlinks) heb je gezien in Linux les 6. nginx -t is de manier om configuratiefouten te vinden vóór reload.

Stap 5 / 5

PHP-FPM controleren

PHP-FPM moet actief zijn en via de juiste socket communiceren met nginx. Check dit altijd als nginx de PHP-verzoeken niet verwerkt.

Status controleren
sudo systemctl status php8.3-fpm
Check dat de socket bestaat
ls -la /run/php/php8.3-fpm.sock

Je ziet een srwxrwx-bestand. Als het niet bestaat draait PHP-FPM niet.

Start PHP-FPM als het niet actief is
sudo systemctl start php8.3-fpm
sudo systemctl enable php8.3-fpm
✅ nginx is klaar voor Symfony

In de volgende les clone je de code naar /var/www/mijnapp en zie je je app in de browser — via het IP-adres van je server.

Kennischeck

Les 4 afronden

Ga door naar: code deployen met Git →