# Exemple de configuration Nginx pour un serveur en ligne (à adapter :
# domaine, chemins, certificat, version PHP-FPM).
#
# Nginx n'utilise pas de .htaccess (ignoré s'il est présent) : toute la
# réécriture d'URL vers le front controller se fait ici, via try_files.

server {
    listen 80;
    server_name votre-domaine.dz;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name votre-domaine.dz;

    ssl_certificate      /etc/letsencrypt/live/votre-domaine.dz/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/votre-domaine.dz/privkey.pem;

    # ⚠️ CRITIQUE : root pointe sur public/, jamais sur la racine du
    # projet — sinon .env, la base SQLite et le code applicatif
    # deviennent accessibles directement par URL.
    root /var/www/forms/public;
    index index.php;

    # Équivalent du .htaccess Apache : toute requête qui ne correspond
    # pas à un fichier réel est envoyée au front controller.
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

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

    # Défense en profondeur : bloque l'accès direct à un .php uploadé
    # par erreur dans un sous-dossier de public/ (ne devrait jamais
    # arriver, mais coûte rien).
    location ~* /(storage|database|config|app|vendor)/ {
        deny all;
        return 404;
    }

    access_log /var/log/nginx/forms-access.log;
    error_log  /var/log/nginx/forms-error.log;
}
