server { listen 80 default_server; listen [::]:80 default_server; root /app; index index.php index.html index.htm; server_name _; # Oculta a versão do NGINX para reduzir informações expostas server_tokens off; # Cabeçalhos de Segurança # Habilita HSTS (HTTP Strict Transport Security) para forçar conexões HTTPS add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; # Previne ataques de clickjacking, permitindo que o site seja exibido apenas em seu próprio domínio add_header X-Frame-Options "SAMEORIGIN" always; # Ativa proteção contra ataques de Cross-Site Scripting (XSS) add_header X-XSS-Protection "1; mode=block" always; # Impede que navegadores tentem adivinhar (sniff) o tipo MIME dos arquivos add_header X-Content-Type-Options "nosniff" always; # Controla como os cabeçalhos de referência são enviados add_header Referrer-Policy "strict-origin-when-cross-origin" always; # Limita o tamanho de uploads para prevenir ataques de negação de serviço client_max_body_size 10M; client_body_buffer_size 128k; # Desativa listagem de diretórios para evitar exposição de estrutura autoindex off; # Bloqueia acesso a diretórios sensíveis location ~ ^/(logs|cache|inc|data|cli)/ { return 301 /; } location / { try_files $uri $uri/ $uri/index.php?$args; } location ~ ^/(api|p)/ { try_files $uri $uri/ /$1.php; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass 127.0.0.1:9000; # Oculta cabeçalho que revela a versão do PHP fastcgi_hide_header X-Powered-By; } # Bloqueia acesso a arquivos e diretórios ocultos location ~ /\. { deny all; return 404; } # Bloqueia acesso a arquivos de configuração e banco de dados location ~ \.(sql|conf|ini)$ { deny all; return 404; } # Minimiza logs para reduzir exposição de informações access_log /dev/null; error_log /dev/stderr warn; }