⚙️ nginx configureren voor Symfony
Server block schrijven, PHP-FPM koppelen en de webserver klaarstomen voor jouw app.
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.
sudo apt install nginx -y sudo systemctl enable nginx sudo systemctl start nginx
curl http://localhost
Je ziet de standaard nginx-welkomstpagina in HTML. Via je browser: open http://jouw-ip-adres.
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
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.
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.
sudo usermod -aG www-data deploy
Log opnieuw in na dit commando zodat de groepswijziging geldt.
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/.
sudo nano /etc/nginx/sites-available/mijnapp
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;
}
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
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.
sudo ln -s /etc/nginx/sites-available/mijnapp /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default
sudo nginx -t
Je ziet: nginx: configuration file /etc/nginx/nginx.conf test is successful. Anders staat de fout er direct bij.
sudo systemctl reload nginx
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.
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.
sudo systemctl status php8.3-fpm
ls -la /run/php/php8.3-fpm.sock
Je ziet een srwxrwx-bestand. Als het niet bestaat draait PHP-FPM niet.
sudo systemctl start php8.3-fpm sudo systemctl enable php8.3-fpm
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 →