{ frankenphp order php_server before file_server } :80 { root * /app/public header { X-Frame-Options "DENY" X-Content-Type-Options "nosniff" Referrer-Policy "strict-origin-when-cross-origin" Permissions-Policy "camera=(), microphone=(), geolocation=()" -Server } # Assets Symfony (webpack encore) handle /bundles/* { file_server } # Service worker (must be served from root scope) handle /sw.js { file_server } # API → Symfony front controller handle /api/* { php_server } # SPA React : try static files first, fallback to index.html handle { try_files {path} /index.html file_server } encode gzip }