# AutoLuxe Atelier · exemplu nginx + PHP-FPM
# Structură pe server:
#   /var/www/autoluxe/app      (cod, în afara rădăcinii web)
#   /var/www/autoluxe/data     (bază de date, fotografii; scriere pentru utilizatorul PHP-FPM)
#   /var/www/autoluxe/public   (singurul dosar servit)
#   /var/www/autoluxe/tools    (backup.py)

server {
    listen 80;
    server_name crm.exemplu.ro;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name crm.exemplu.ro;

    ssl_certificate     /etc/letsencrypt/live/crm.exemplu.ro/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/crm.exemplu.ro/privkey.pem;

    root /var/www/autoluxe/public;
    index index.php;
    client_max_body_size 20m;
    server_tokens off;

    add_header X-Content-Type-Options "nosniff" always;
    add_header Referrer-Policy "same-origin" always;

    # fișiere ascunse și copii
    location ~ /\.            { deny all; }
    location ~ \.(bak|old|orig|swp|sql|sqlite|db|log|ini|env|md|sh|py)$ { deny all; }

    # doar patru puncte de intrare PHP
    location ~ ^/(index|api|intake|install)\.php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param HTTPS on;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }
    location ~ \.php$ { return 404; }

    location /assets/ {
        expires 1y;
        add_header Cache-Control "public, immutable";
        add_header X-Content-Type-Options "nosniff" always;
    }

    # limită de rată pentru autentificare și pentru configurator (pe lângă limitele din aplicație)
    # în blocul http { }:  limit_req_zone $binary_remote_addr zone=alx:10m rate=30r/m;
    # location = /intake.php { limit_req zone=alx burst=10 nodelay; ...fastcgi ca mai sus... }
}

# php.ini / pool FPM recomandat:
#   upload_max_filesize = 16M
#   post_max_size = 20M
#   expose_php = Off
#   display_errors = Off
#   session.cookie_secure = 1
#   open_basedir = /var/www/autoluxe/:/tmp/
