server { listen 80; # Écoute sur le port 80 pour HTTP server_name localhost; # Peut être votre nom de domaine (ex: cert.example.com) root /var/www/html/public; # Dossier racine de l'application PHP accessible via Nginx index index.php index.html index.htm; # Fichiers d'index à rechercher charset utf-8; # Encodage des caractères # Configuration pour les fichiers statiques et le routage de l'application location / { try_files $uri $uri/ /index.php?$query_string; # Essaye de servir le fichier, sinon passe à index.php } location ~* \.(css|js|gif|png|jpe?g|svg|ico|pdf|fla|swf|woff|woff2|ttf|eot)$ { expires 30d; # Mettre en cache pour 30 jours add_header Cache-Control "public, no-transform"; try_files $uri =404; # Si le fichier n'est pas trouvé, retourne 404 } # Passe les requêtes PHP à PHP-FPM location ~ \.php$ { # Vérifiez que le fichier PHP existe # try_files $uri =404; # Passe la requête à PHP-FPM fastcgi_pass php-fpm:9000; # Nom du service PHP-FPM dans docker-compose et son port fastcgi_index index.php; # Fichier index pour PHP-FPM fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # Chemin complet du script PHP include fastcgi_params; # Inclut les paramètres FastCGI par défaut # Ces paramètres sont essentiels pour une configuration FastCGI robuste fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_param PATH_INFO $fastcgi_path_info; } # Bloque l'accès aux fichiers .ht* (pour la sécurité) location ~ /\.ht { deny all; } # Empêcher l'accès aux fichiers cachés (.git, .env, etc.) location ~ /\. { deny all; } # Fichiers de log d'erreurs et d'accès Nginx error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; }