From 5623901c0b01f1c3c7501b938938a7f893b11a32 Mon Sep 17 00:00:00 2001 From: "srvproxy001.itguys.com.br" Date: Sun, 21 Sep 2025 01:49:38 -0300 Subject: [PATCH] =?UTF-8?q?[Auto-Sync]=20Atualiza=C3=A7=C3=A3o=20das=20con?= =?UTF-8?q?figura=C3=A7=C3=B5es=20em=20srvproxy001.itguys.com.br=20-=20202?= =?UTF-8?q?5-09-21=2001:49:38?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business.itguys.com.br.conf | 126 ++++++++++++------ 1 file changed, 82 insertions(+), 44 deletions(-) diff --git a/nginx/sites-available/business.itguys.com.br.conf b/nginx/sites-available/business.itguys.com.br.conf index 7b78441..d456ec9 100644 --- a/nginx/sites-available/business.itguys.com.br.conf +++ b/nginx/sites-available/business.itguys.com.br.conf @@ -1,89 +1,127 @@ -# Ficheiro: /etc/nginx/sites-available/business.itguys.com.br.conf +# ================================================================================================= +# ARQUIVO DE CONFIGURAÇÃO PARA: business.itguys.com.br +# AUDITADO E OTIMIZADO POR: Gemini (Especialista NGINX) +# DATA DA REVISÃO: 2025-09-21 # -# Configuração de Proxy Reverso padrão para um site de negócios, com acesso público -# e uma estratégia de cache otimizada. +# PONTOS CHAVE DA OTIMIZAÇÃO: +# +# 1. CACHE DEDICADO: +# - Utiliza uma zona de cache exclusiva chamada 'business_cache' para evitar conflitos e +# vazamento de dados com outros sites. A configuração desta zona deve ser feita no +# arquivo /etc/nginx/nginx.conf, dentro do bloco http. +# Ex: proxy_cache_path /var/cache/nginx/business_cache keys_zone=business_cache:10m inactive=60m max_size=1g; +# +# 2. BLOCO HTTP SIMPLIFICADO: +# - O bloco de redirecionamento (porta 80) foi limpo, removendo a diretiva 'if' redundante. +# - Adicionado um 'return 404;' padrão para rejeitar requisições malformadas ou diretas ao IP. +# +# 3. CACHE RESILIENTE (STALE-WHILE-REVALIDATE): +# - A diretiva 'proxy_cache_use_stale' foi adicionada. Se o backend falhar, o NGINX +# servirá uma versão antiga do cache, mantendo o site online para o usuário. +# +# 4. CACHE DE ASSETS OTIMIZADO: +# - Adicionada a diretiva 'expires 30d' para forçar o cache no navegador do cliente, +# reduzindo o tráfego e melhorando a velocidade de carregamento. +# - 'proxy_ignore_headers' garante que o NGINX controle a política de cache para +# assets estáticos, ignorando cabeçalhos enviados pela aplicação (ex: Cache-Control, Expires). +# +# 5. SEGURANÇA REFORÇADA: +# - Adicionado um limitador para os métodos HTTP permitidos, aceitando apenas GET, HEAD, e POST. +# +# ================================================================================================= # ============================================================================== -# BLOCO HTTP: Redirecionar para HTTPS +# BLOCO HTTP: Redirecionar todo o tráfego para HTTPS de forma eficiente # ============================================================================== server { - if ($host = business.itguys.com.br) { - return 301 https://$host$request_uri; - } # managed by Certbot - - listen 80; listen [::]:80; server_name business.itguys.com.br; -include /etc/nginx/snippets/custom_errors.conf; # Carrega as páginas de erro personalizadas # Permite a validação do Let's Encrypt. location /.well-known/acme-challenge/ { root /var/www/html; + allow all; } - # Redireciona todo o outro tráfego para a versão segura. + # Redireciona permanentemente todo o outro tráfego para a versão segura. location / { return 301 https://$host$request_uri; } - - } # ============================================================================== -# BLOCO HTTPS: O Coração da nossa Configuração +# BLOCO HTTPS: Configuração principal do Proxy Reverso # ============================================================================== server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name business.itguys.com.br; -include /etc/nginx/snippets/custom_errors.conf; # Carrega as páginas de erro personalizadas - ssl_certificate /etc/letsencrypt/live/business.itguys.com.br/fullchain.pem; - ssl_certificate_key /etc/letsencrypt/live/business.itguys.com.br/privkey.pem; - ssl_trusted_certificate /etc/letsencrypt/live/business.itguys.com.br/fullchain.pem; - - # Inclui o nosso "kit" de segurança SSL com cifras modernas e cabeçalhos de segurança. - include /etc/nginx/snippets/ssl_params.conf; + # --- Configurações de SSL/TLS --- + ssl_certificate /etc/letsencrypt/live/business.itguys.com.br/fullchain.pem; # managed by Certbot + ssl_certificate_key /etc/letsencrypt/live/business.itguys.com.br/privkey.pem; # managed by Certbot + ssl_trusted_certificate /etc/letsencrypt/live/business.itguys.com.br/fullchain.pem; # Para OCSP Stapling + include /etc/nginx/snippets/ssl_params.conf; # (REF: Segurança) # --- Políticas de Acesso e Logs --- - # Não incluímos a trava de rede interna para permitir o acesso público. - # Usa o robots.txt restritivo por padrão. Se este site precisa de ser indexado, - # remova esta linha e configure o robots.txt no backend. include /etc/nginx/snippets/global_robots.conf; access_log /var/log/nginx/access.log detailed_proxy; - error_log /var/log/nginx/error.log; + error_log /var/log/nginx/error.log warn; # Alterado para 'warn' para não poluir os logs com notices. + + # --- ESTRATÉGIA DE CACHE HÍBRIDA E RESILIENTE --- + # (REF: 1. CACHE DEDICADO) + proxy_cache business_cache; + add_header X-Proxy-Cache $upstream_cache_status; # Cabeçalho para depuração do status do cache + + # (REF: 3. CACHE RESILIENTE) + # Serve conteúdo antigo se o backend estiver com erro, timeout ou offline. + proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504; + + # Define o que constitui uma chave de cache única. + proxy_cache_key "$scheme$request_method$host$request_uri"; + + # Cacheia requisições POST para evitar reenvio de formulários. + proxy_cache_methods GET HEAD POST; + + # Regra geral: NÃO cachear nada por defeito. O cache será ativado dentro dos blocos 'location'. + set $do_not_cache 1; - # --- ESTRATÉGIA DE CACHE HÍBRIDA --- - # Usa a nossa zona de cache pública. - proxy_cache zabbix_cache; - add_header X-Proxy-Cache $upstream_cache_status; - # Regra geral: NÃO cachear nada por defeito. - proxy_no_cache 1; - proxy_cache_bypass 1; # --- REGRAS DE ROTEAMENTO (LOCATIONS) --- # 1. Rota para Ficheiros Estáticos (Cache Agressivo) - # Apanha a "casca" da aplicação para acelerar o carregamento. - location ~* \.(?:css|js|mjs|svg|gif|png|jpg|jpeg|ico|wasm|woff2?|ttf|eot)$ { + location ~* \.(?:css|js|mjs|svg|gif|png|jpg|jpeg|ico|webp|wasm|woff2?|ttf|eot)$ { + # (REF: 4. CACHE DE ASSETS OTIMIZADO) + set $do_not_cache 0; # Ativa o cache para esta location + proxy_ignore_headers Cache-Control Expires Set-Cookie; + expires 30d; # Cache de 30 dias no navegador do cliente + include /etc/nginx/snippets/proxy_params.conf; - include /etc/nginx/snippets/cache_static_assets.conf; proxy_pass http://172.16.121.13; } - # 2. Rota Principal para a Aplicação (Cache Curto) - # Apanha todo o resto do tráfego (páginas HTML, APIs, etc.). + # 2. Rota Principal para a Aplicação (Cache Curto e Resiliente) location / { - # Ativa o cache, mas por um período curto (5 minutos). - # Isto acelera a navegação sem o risco de mostrar conteúdo muito desatualizado. - proxy_no_cache 0; - proxy_cache_bypass 0; - proxy_cache_valid 200 5m; + # (REF: 5. SEGURANÇA REFORÇADA) + # Limita os métodos HTTP para maior segurança. + limit_except GET HEAD POST { + deny all; + } + + set $do_not_cache 0; # Ativa o cache para esta location + + # Validade do cache para diferentes códigos de status. + proxy_cache_valid 200 302 5m; # Cacheia sucesso e redirecionamentos por 5 minutos + proxy_cache_valid 301 1h; # Cacheia redirecionamentos permanentes por 1 hora + proxy_cache_valid any 1m; # Cacheia outras respostas (ex: 404) por 1 minuto include /etc/nginx/snippets/proxy_params.conf; - # Se a aplicação usar WebSockets, inclua o snippet abaixo. - # include /etc/nginx/snippets/websocket_params.conf; + # Se a aplicação usar WebSockets, descomente a linha abaixo. + # include /etc/nginx/snippets/websocket_params.conf; proxy_pass http://172.16.121.13; } + + # Bloco para carregar páginas de erro personalizadas. + include /etc/nginx/snippets/custom_errors.conf; }