[Auto-Sync] Atualização das configurações em srvproxy001.itguys.com.br - 2025-09-27 12:38:31

This commit is contained in:
srvproxy001.itguys.com.br 2025-09-27 12:38:31 -03:00
parent 11e5ab4d8b
commit c537c3e80d
1 changed files with 129 additions and 44 deletions

View File

@ -1,20 +1,40 @@
# Ficheiro: /etc/nginx/sites-available/anatram.com.br.conf # ==============================================================================
# ARQUIVO DE CONFIGURAÇÃO PARA: anatram.com.br
# ==============================================================================
# #
# Configuração de Proxy Reverso OTIMIZADA com redirecionamento canónico (VERSÃO CORRIGIDA) # 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 --- # --- HISTÓRICO DE ALTERAÇÕES ---
# - [2025-09-21] Refatoração completa para alinhar com as melhores práticas. # - [2025-09-27] Refatoração completa:
# - Consolidados os 3 blocos de servidor originais em 2 blocos mais eficientes. # - Implementados blocos de proteção contra bots e scanners.
# - Simplificado o bloco HTTP para um único redirecionamento canónico. # - Adicionados headers de segurança HTTP (HSTS, CSP, X-Frame-Options, etc.).
# - Unificado o bloco HTTPS para lidar com 'www' e 'não-www', com um redirecionamento interno. # - Otimizadas as configurações de SSL/TLS com OCSP Stapling.
# - Agrupadas todas as diretivas SSL para melhor legibilidade. # - Logs de acesso e erro segregados por site.
# - Centralizada a diretiva `proxy_ssl_verify` para evitar repetição. # - 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 --- # --- DESCRIÇÃO ---
# Este ficheiro serve o site público anatram.com.br, forçando o uso de HTTPS e do domínio sem 'www'. # 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 Global para o Destino Canónico # BLOCO 1: HTTP (Porta 80) -> Redirecionamento Permanente para HTTPS
# ============================================================================== # ==============================================================================
server { server {
listen 80; listen 80;
@ -23,68 +43,133 @@ server {
# Permite a validação do Let's Encrypt para ambos os domínios. # Permite a validação do Let's Encrypt para ambos os domínios.
location /.well-known/acme-challenge/ { location /.well-known/acme-challenge/ {
root /var/www/html; root /var/www/html; # Certifique-se de que este diretório existe e é acessível
} }
# Redireciona permanentemente (301) todo o tráfego diretamente para a URL final e correta. # Redireciona permanentemente (301) todo o resto do tráfego para a URL canônica em HTTPS.
# Esta abordagem é mais limpa e eficiente do que múltiplos 'if' ou redirecionamentos em cadeia.
location / { location / {
return 301 https://anatram.com.br$request_uri; return 301 https://anatram.com.br$request_uri;
} }
} }
# ============================================================================== # ==============================================================================
# BLOCO 2: HTTPS (Porta 443) - Servidor Principal e Canónico # 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 { server {
listen 443 ssl http2; listen 443 ssl http2;
listen [::]:443 ssl http2; listen [::]:443 ssl http2;
# Escuta em ambos os domínios para poder redirecionar a versão 'www'. server_name anatram.com.br;
server_name anatram.com.br www.anatram.com.br;
# --- Configurações de Segurança e SSL --- # --- Logs Dedicados ---
# Diretivas SSL agrupadas para clareza. O mesmo certificado vale para ambos os subdomínios. # Logs específicos para este site, facilitando o monitoramento e a integração com fail2ban.
ssl_certificate /etc/letsencrypt/live/anatram.com.br/fullchain.pem; # managed by Certbot access_log /var/log/nginx/anatram.com.br.access.log;
ssl_certificate_key /etc/letsencrypt/live/anatram.com.br/privkey.pem; # managed by Certbot 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; 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;
# --- Redirecionamento Canónico de 'www' para 'não-www' --- # --- Headers de Segurança HTTP ---
# Se a requisição chegar em HTTPS com 'www', redireciona para a versão sem 'www'. # Adiciona HSTS para forçar o navegador a usar apenas HTTPS por 2 anos.
# Este é um dos poucos usos considerados aceitáveis e eficientes para a diretiva 'if'. add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
if ($host = "www.anatram.com.br") { add_header X-Frame-Options "SAMEORIGIN" always;
return 301 https://anatram.com.br$request_uri; 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;
# --- Políticas de Acesso, Erros e Logs --- # --- Estratégia de Cache ---
include /etc/nginx/snippets/custom_errors.conf; proxy_cache static_cache; # Usa a zona de cache definida em nginx.conf
access_log /var/log/nginx/access.log detailed_proxy; add_header X-Proxy-Cache $upstream_cache_status; # Header para depuração do cache
error_log /var/log/nginx/error.log;
# --- 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 --- # --- Parâmetros de Proxy e Backend ---
include /etc/nginx/snippets/proxy_params.conf; include /etc/nginx/snippets/proxy_params.conf;
# A diretiva foi movida para o nível do servidor para evitar repetição nos blocos 'location'. # ATENÇÃO: Desativar a verificação SSL só é seguro para backends em rede interna controlada.
# NOTA: Desativar a verificação SSL só é recomendado para backends em rede interna segura.
proxy_ssl_verify off; proxy_ssl_verify off;
# --- ESTRATÉGIA DE CACHE HÍBRIDA (Padrão: NÃO CACHEAR) --- # ==========================================================================
proxy_cache static_cache; # REGRAS DE BLOQUEIO E SEGURANÇA (LOCATIONS)
add_header X-Proxy-Cache $upstream_cache_status; # ==========================================================================
proxy_no_cache 1;
proxy_cache_bypass 1;
# --- REGRAS DE ROTEAMENTO (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.
}
# 1. Rota para Ficheiros Estáticos (Cache Agressivo) # 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)$ { location ~* \.(?:css|js|mjs|svg|gif|png|jpg|jpeg|ico|wasm|woff2?|ttf|eot)$ {
include /etc/nginx/snippets/cache_static_assets.conf;
proxy_pass https://172.16.12.9:443; 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)
} }
# 2. Rota Principal para a Aplicação (Cache Curto de 5 minutos) # Rota principal para a aplicação.
location / { location / {
proxy_no_cache 0; # A estratégia padrão será não cachear, a menos que especificado aqui.
proxy_cache_bypass 0;
proxy_cache_valid 200 5m;
proxy_pass https://172.16.12.9:443; 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;
} }