worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       C:/laragon/bin/nginx/nginx-1.28.2/conf/mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;
    keepalive_requests 1000;

    # PHP-CGI upstream — 3 instances × 60 workers = 180 concurrent workers
    upstream php_fpm {
        least_conn;
        server 127.0.0.1:9002 weight=1 max_fails=5 fail_timeout=10s;
        server 127.0.0.1:9003 weight=1 max_fails=5 fail_timeout=10s;
        server 127.0.0.1:9004 weight=1 max_fails=5 fail_timeout=10s;
        keepalive 32;
    }

    server {
        listen       8088 backlog=2048;
        server_name  localhost;
        root         C:/laragon/www/Beconnect/public;
        index        index.php;

        # Gzip — reduz JS/CSS em 60-70%
        gzip              on;
        gzip_comp_level   6;
        gzip_min_length   1000;
        gzip_proxied      any;
        gzip_vary         on;
        gzip_types
            text/plain text/css text/xml text/javascript
            application/json application/javascript application/xml
            application/rss+xml application/atom+xml
            image/svg+xml font/woff2;

        # Assets estáticos com hash no nome (Vite) — cache 1 ano no browser
        location ~* \.(js|css|woff2?|ttf|eot)$ {
            expires 1y;
            add_header Cache-Control "public, immutable";
            add_header Vary "Accept-Encoding";
            try_files $uri =404;
        }

        # Imagens — cache 30 dias
        location ~* \.(png|jpg|jpeg|gif|ico|svg|webp)$ {
            expires 30d;
            add_header Cache-Control "public";
            try_files $uri =404;
        }

        # All requests go through Laravel
        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }

        location ~ \.php$ {
            fastcgi_pass   php_fpm;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param  DOCUMENT_ROOT    $document_root;
            fastcgi_param  QUERY_STRING     $query_string;
            fastcgi_param  REQUEST_METHOD   $request_method;
            fastcgi_param  CONTENT_TYPE     $content_type;
            fastcgi_param  CONTENT_LENGTH   $content_length;
            fastcgi_param  SCRIPT_NAME      $fastcgi_script_name;
            fastcgi_param  REQUEST_URI      $request_uri;
            fastcgi_param  DOCUMENT_URI     $document_uri;
            fastcgi_param  SERVER_PROTOCOL  $server_protocol;
            fastcgi_param  GATEWAY_INTERFACE CGI/1.1;
            fastcgi_param  SERVER_SOFTWARE  nginx;
            fastcgi_param  REMOTE_ADDR      $remote_addr;
            fastcgi_param  REMOTE_PORT      $remote_port;
            fastcgi_param  SERVER_ADDR      $server_addr;
            fastcgi_param  SERVER_PORT      $server_port;
            fastcgi_param  SERVER_NAME      $server_name;
            fastcgi_param  REDIRECT_STATUS  200;
            fastcgi_param  HTTPS            off;
            fastcgi_keep_conn on;
            fastcgi_read_timeout 60;
            fastcgi_buffers 16 16k;
            fastcgi_buffer_size 32k;
        }
    }
}
