server { listen 80; server_name localhost; root /var/www/lintello/public; index index.php index.html; # Logs access_log /var/log/nginx/lintello_access.log; error_log /var/log/nginx/lintello_error.log; # Gestion des fichiers statiques du frontend (build Vite) location /build/ { alias /var/www/lintello/public/build/; expires 1y; add_header Cache-Control "public, immutable"; access_log off; } # Route principale : servir index.html pour le frontend React location = / { try_files /build/index.html =404; } # API Symfony location /api { try_files $uri /index.php$is_args$args; } # Autres routes Symfony (admin, etc.) location ~ ^/(admin|_profiler|_wdt) { try_files $uri /index.php$is_args$args; } # Fichiers statiques et frontend location / { try_files $uri $uri/ /build/index.html; } # PHP-FPM location ~ ^/index\.php(/|$) { fastcgi_pass php:9000; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $realpath_root; fastcgi_param PATH_INFO $fastcgi_path_info; # Augmentation des timeouts pour les requêtes longues (streaming IA) fastcgi_read_timeout 300; fastcgi_send_timeout 300; # Augmentation des buffers pour le streaming SSE fastcgi_buffer_size 128k; fastcgi_buffers 256 16k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; internal; } # Interdire l'accès aux autres fichiers PHP location ~ \.php$ { return 404; } # Optimisation - désactiver les logs pour les fichiers statiques location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|woff|woff2|ttf|eot)$ { expires 1y; add_header Cache-Control "public, immutable"; access_log off; } # Sécurité - bloquer les fichiers cachés location ~ /\. { deny all; access_log off; log_not_found off; } # Augmentation de la taille max des uploads client_max_body_size 50M; }