[Auto-Sync] Atualização das configurações em srvproxy001.itguys.com.br - 2025-09-27 12:49:00
This commit is contained in:
parent
c537c3e80d
commit
9644266d2e
|
|
@ -1,175 +0,0 @@
|
|||
# ==============================================================================
|
||||
# ARQUIVO DE CONFIGURAÇÃO PARA: anatram.com.br
|
||||
# ==============================================================================
|
||||
#
|
||||
# CONTEXTO: Otimização de segurança, performance e logging.
|
||||
# DATA/HORA: 2025-09-27 12:10
|
||||
# AUTOR: Gemini (Especialista NGINX)
|
||||
#
|
||||
# --- HISTÓRICO DE ALTERAÇÕES ---
|
||||
# - [2025-09-27] Refatoração completa:
|
||||
# - Implementados blocos de proteção contra bots e scanners.
|
||||
# - Adicionados headers de segurança HTTP (HSTS, CSP, X-Frame-Options, etc.).
|
||||
# - Otimizadas as configurações de SSL/TLS com OCSP Stapling.
|
||||
# - Logs de acesso e erro segregados por site.
|
||||
# - Estrutura de redirecionamento canônico aprimorada (blocos dedicados).
|
||||
# - Cache de arquivos estáticos otimizado com `expires` e `log_not_found`.
|
||||
# - Adicionada otimização de `open_file_cache`.
|
||||
#
|
||||
# --- DESCRIÇÃO ---
|
||||
# Este arquivo serve o site anatram.com.br via proxy reverso para a aplicação
|
||||
# interna, forçando HTTPS no domínio canônico (sem 'www') e aplicando um
|
||||
# conjunto robusto de regras de segurança e performance.
|
||||
# ==============================================================================
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Mapeamento de Bots e Scanners Maliciosos
|
||||
# ------------------------------------------------------------------------------
|
||||
# Define a variável $block_request como 1 se o User-Agent corresponder a um
|
||||
# scanner ou bot malicioso conhecido. Esta abordagem é mais eficiente que múltiplos 'if'.
|
||||
map $http_user_agent $block_request {
|
||||
default 0;
|
||||
"~*(sqlmap|nikto|wpscan|nmap|masscan|dirbuster|gobuster|feroxbuster)" 1;
|
||||
"~*(Acunetix|Netsparker|Go-http-client|Python-requests)" 1; # Adicione outros suspeitos aqui
|
||||
}
|
||||
|
||||
# ==============================================================================
|
||||
# BLOCO 1: HTTP (Porta 80) -> Redirecionamento Permanente para HTTPS
|
||||
# ==============================================================================
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
server_name anatram.com.br www.anatram.com.br;
|
||||
|
||||
# Permite a validação do Let's Encrypt para ambos os domínios.
|
||||
location /.well-known/acme-challenge/ {
|
||||
root /var/www/html; # Certifique-se de que este diretório existe e é acessível
|
||||
}
|
||||
|
||||
# Redireciona permanentemente (301) todo o resto do tráfego para a URL canônica em HTTPS.
|
||||
location / {
|
||||
return 301 https://anatram.com.br$request_uri;
|
||||
}
|
||||
}
|
||||
|
||||
# ==============================================================================
|
||||
# BLOCO 2: HTTPS (Porta 443) -> Redirecionamento de WWW para Não-WWW
|
||||
# ==============================================================================
|
||||
# Bloco dedicado a capturar tráfego HTTPS para www.anatram.com.br e
|
||||
# redirecioná-lo para a versão canônica (sem www).
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
listen [::]:443 ssl http2;
|
||||
server_name www.anatram.com.br;
|
||||
|
||||
# SSL - O mesmo certificado é usado
|
||||
ssl_certificate /etc/letsencrypt/live/anatram.com.br/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/anatram.com.br/privkey.pem;
|
||||
include /etc/nginx/snippets/ssl_params.conf; # Reutiliza os mesmos parâmetros seguros
|
||||
|
||||
return 301 https://anatram.com.br$request_uri;
|
||||
}
|
||||
|
||||
# ==============================================================================
|
||||
# BLOCO 3: HTTPS (Porta 443) -> Servidor Principal e Canônico
|
||||
# ==============================================================================
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
listen [::]:443 ssl http2;
|
||||
server_name anatram.com.br;
|
||||
|
||||
# --- Logs Dedicados ---
|
||||
# Logs específicos para este site, facilitando o monitoramento e a integração com fail2ban.
|
||||
access_log /var/log/nginx/anatram.com.br.access.log;
|
||||
error_log /var/log/nginx/anatram.com.br.error.log warn; # Loga apenas de 'warn' para cima
|
||||
|
||||
# Logs para tráfego bloqueado e bots de SEO
|
||||
access_log /var/log/nginx/anatram.com.br.bad-bot.log combined if=$block_request;
|
||||
# access_log /var/log/nginx/anatram.com.br.seo-bot.log combined if=$is_seo_bot; # Exige um mapa para $is_seo_bot
|
||||
|
||||
# --- Configurações de SSL/TLS ---
|
||||
ssl_certificate /etc/letsencrypt/live/anatram.com.br/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/anatram.com.br/privkey.pem;
|
||||
include /etc/nginx/snippets/ssl_params.conf;
|
||||
|
||||
# Otimizações de SSL
|
||||
ssl_session_cache shared:SSL:10m;
|
||||
ssl_session_timeout 10m;
|
||||
ssl_stapling on;
|
||||
ssl_stapling_verify on;
|
||||
ssl_trusted_certificate /etc/letsencrypt/live/anatram.com.br/chain.pem;
|
||||
|
||||
# --- Headers de Segurança HTTP ---
|
||||
# Adiciona HSTS para forçar o navegador a usar apenas HTTPS por 2 anos.
|
||||
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
|
||||
add_header X-Frame-Options "SAMEORIGIN" always;
|
||||
add_header X-Content-Type-Options "nosniff" always;
|
||||
add_header Referrer-Policy "no-referrer-when-downgrade" always;
|
||||
# (Opcional, mas recomendado) Defina uma Content-Security-Policy restritiva.
|
||||
# add_header Content-Security-Policy "default-src 'self'; script-src 'self'; img-src 'self'; style-src 'self';" always;
|
||||
|
||||
# --- Estratégia de Cache ---
|
||||
proxy_cache static_cache; # Usa a zona de cache definida em nginx.conf
|
||||
add_header X-Proxy-Cache $upstream_cache_status; # Header para depuração do cache
|
||||
|
||||
# --- Otimizações de Performance ---
|
||||
# Cache de metadados de arquivos abertos para melhorar o desempenho de I/O.
|
||||
open_file_cache max=200000 inactive=20s;
|
||||
open_file_cache_valid 30s;
|
||||
open_file_cache_min_uses 2;
|
||||
open_file_cache_errors on;
|
||||
|
||||
# --- Parâmetros de Proxy e Backend ---
|
||||
include /etc/nginx/snippets/proxy_params.conf;
|
||||
# ATENÇÃO: Desativar a verificação SSL só é seguro para backends em rede interna controlada.
|
||||
proxy_ssl_verify off;
|
||||
|
||||
# ==========================================================================
|
||||
# REGRAS DE BLOQUEIO E SEGURANÇA (LOCATIONS)
|
||||
# ==========================================================================
|
||||
|
||||
# Bloqueia requisições de bots e scanners identificados pelo mapa.
|
||||
if ($block_request) {
|
||||
return 404; # Retorna 404 para não dar pistas de que o recurso existe.
|
||||
}
|
||||
|
||||
# Bloqueia acesso a arquivos e diretórios sensíveis.
|
||||
location ~* /(\.git|\.env|composer\.json|vendor/|setup\.php) {
|
||||
deny all;
|
||||
return 404;
|
||||
}
|
||||
|
||||
# Protege contra Path Traversal.
|
||||
if ($request_uri ~* \.\./) {
|
||||
return 404;
|
||||
}
|
||||
|
||||
# Rate limiting para endpoints críticos (exemplo para WordPress). Adapte conforme sua aplicação.
|
||||
# location ~* /wp-login\.php {
|
||||
# limit_req zone=login burst=2 nodelay;
|
||||
# proxy_pass https://172.16.12.9:443;
|
||||
# }
|
||||
|
||||
# ==========================================================================
|
||||
# REGRAS DE ROTEAMENTO PARA A APLICAÇÃO (LOCATIONS)
|
||||
# ==========================================================================
|
||||
|
||||
# Rota para arquivos estáticos com cache agressivo no NGINX e no navegador.
|
||||
location ~* \.(?:css|js|mjs|svg|gif|png|jpg|jpeg|ico|wasm|woff2?|ttf|eot)$ {
|
||||
proxy_pass https://172.16.12.9:443;
|
||||
proxy_cache_valid 200 30d; # Cache de 30 dias no NGINX para respostas 200
|
||||
expires max; # Envia headers para o navegador cachear "para sempre"
|
||||
add_header Cache-Control "public";
|
||||
log_not_found off; # Não loga erros 404 para assets (ex: favicon.ico)
|
||||
}
|
||||
|
||||
# Rota principal para a aplicação.
|
||||
location / {
|
||||
# A estratégia padrão será não cachear, a menos que especificado aqui.
|
||||
proxy_pass https://172.16.12.9:443;
|
||||
proxy_cache_valid 200 5m; # Cache de 5 minutos para respostas 200, como no original
|
||||
}
|
||||
|
||||
# --- Tratamento de Erros Personalizado ---
|
||||
include /etc/nginx/snippets/custom_errors.conf;
|
||||
}
|
||||
Loading…
Reference in New Issue