From 5aa99dbc8b95361dcc1b859909f47796a3ee5c71 Mon Sep 17 00:00:00 2001 From: "srvproxy001.itguys.com.br" Date: Sun, 21 Sep 2025 02:22: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=2002:22:38?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dns-primario.itguys.com.br.conf | 143 ++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 nginx/sites-available/dns-primario.itguys.com.br.conf diff --git a/nginx/sites-available/dns-primario.itguys.com.br.conf b/nginx/sites-available/dns-primario.itguys.com.br.conf new file mode 100644 index 0000000..6ead45a --- /dev/null +++ b/nginx/sites-available/dns-primario.itguys.com.br.conf @@ -0,0 +1,143 @@ +# ARQUIVO: /etc/nginx/sites-available/dns-primario.itguys.com.br.conf +# OBJETIVO: Atuar como um proxy reverso seguro para a aplicação em 172.16.254.252:53443, +# com redirecionamento de HTTP para HTTPS e uma estratégia de cache híbrida +# para arquivos estáticos. +# +# ------------------------------------------------------------------------------------- +# EXPLICAÇÕES E MELHORIAS APLICADAS +# ------------------------------------------------------------------------------------- +# +# 1. SEGURANÇA (SECURITY HARDENING): +# - [CRÍTICO] `proxy_ssl_verify`: A diretiva `proxy_ssl_verify off;` foi removida. +# Desativar a verificação do certificado SSL do backend é uma FALHA DE SEGURANÇA, +# pois permite ataques "Man-in-the-Middle" (MITM) entre o NGINX e sua aplicação. +# A solução correta é fazer o NGINX confiar no certificado do backend. Se o +# backend usa um certificado autoassinado, você deve usar a diretiva +# `proxy_ssl_trusted_certificate` para apontar para o certificado CA ou o +# próprio certificado público do backend. +# - Cabeçalhos de Segurança: Adicionados cabeçalhos HTTP para fortalecer a +# segurança do lado do cliente (HSTS, X-Frame-Options, X-Content-Type-Options). +# O HSTS (Strict-Transport-Security) força o navegador a usar apenas HTTPS, +# prevenindo ataques de downgrade. +# +# 2. OTIMIZAÇÃO DE DESEMPENHO: +# - Headers de WebSocket Condicionais: As diretivas `Upgrade` e `Connection` +# são específicas para o protocolo WebSocket. Na sua configuração original, elas +# eram enviadas em TODAS as requisições, o que é desnecessário. A nova +# configuração as aplica apenas quando o cliente solicita uma atualização +# para WebSocket, tornando a comunicação mais limpa. +# - Cache de Navegador: Adicionada a diretiva `expires` para os arquivos estáticos. +# Isso instrui o navegador do usuário a armazenar esses arquivos localmente +# por um período, reduzindo o número de requisições ao seu servidor. +# - Redução de I/O de Logs: Para o bloco de arquivos estáticos, as diretivas +# `access_log off;` e `log_not_found off;` foram adicionadas para evitar +# escrever logs desnecessários e poupar recursos de disco. +# +# 3. ESTRUTURA E BOAS PRÁTICAS: +# - Bloco HTTP Simplificado: O bloco de redirecionamento (porta 80) foi simplificado +# para usar a diretiva `return` diretamente no contexto `server`, eliminando +# a necessidade de um bloco `location` para essa única tarefa. +# - Ordem das Localizações: Embora o NGINX processe a localização por regex (`~*`) +# primeiro, a ordem no arquivo foi ajustada para maior clareza lógica, colocando +# a localização mais específica (estáticos) primeiro e a geral (`/`) depois. +# - Comentários de Referência: Adicionados comentários como `` para +# facilitar a referência cruzada entre as explicações no topo e os blocos de +# código correspondentes. +# +# ------------------------------------------------------------------------------------- + +# --- Bloco 1: Redirecionamento HTTP para HTTPS --- +# Redireciona de forma permanente (301) todo o tráfego da porta 80 para a porta 443 (HTTPS). +server { + listen 80; + listen [::]:80; + server_name dns-primario.itguys.com.br; + + # Responde diretamente com o redirecionamento, sem processar location. É mais eficiente. + return 301 https://$host$request_uri; +} + +# --- Bloco 2: Servidor Principal HTTPS --- +server { + listen 443 ssl http2; + listen [::]:443 ssl http2; + server_name dns-primario.itguys.com.br; + + # --- Configurações de SSL/TLS --- + # O Certbot irá gerenciar estas linhas. Mantenha-as comentadas se usar o Certbot. + # ssl_certificate /etc/letsencrypt/live/ns1.itguys.com.br/fullchain.pem; + # ssl_certificate_key /etc/letsencrypt/live/ns1.itguys.com.br/privkey.pem; + # include /etc/nginx/snippets/ssl_params.conf; # Recomendado: Um snippet com parâmetros de segurança SSL + + # --- Configurações de Log --- + access_log /var/log/nginx/access.log detailed_proxy; + error_log /var/log/nginx/error.log warn; # Alterado para 'warn' para evitar logs excessivamente verbosos. + + # --- Cabeçalhos de Segurança --- + # Força o navegador a usar HTTPS por 1 ano, incluindo subdomínios. + add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; + # Previne clickjacking. + add_header X-Frame-Options "SAMEORIGIN" always; + # Previne ataques de "MIME-sniffing". + add_header X-Content-Type-Options "nosniff" always; + + # --- Inclusão de Snippets Personalizados --- + include /etc/nginx/snippets/custom_errors.conf; + include /etc/nginx/snippets/global_robots.conf; + include /etc/nginx/snippets/internal_networks.conf; + + # --- Estratégia de Cache Híbrida --- + # Define a zona de cache a ser usada. + proxy_cache zabbix_cache; + # Adiciona um cabeçalho para depuração, mostrando se o cache foi HIT, MISS, etc. + add_header X-Proxy-Cache $upstream_cache_status; + # REGRA GERAL: Por padrão, não usar o cache. O cache será ativado em blocos `location` específicos. + proxy_no_cache 1; + proxy_cache_bypass 1; + + # --- Cabeçalhos de Proxy Globais --- + # Estes cabeçalhos serão herdados por todos os blocos `location`. + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_http_version 1.1; + + # --- Localização para Arquivos Estáticos (CACHE ATIVADO) --- + # location ~* \.(css|js|jpg|jpeg|gif|png|ico|svg|webp|ttf|woff2)$ { + # Desativa o log de acesso e de erros para "arquivo não encontrado", reduzindo I/O de disco. + access_log off; + log_not_found off; + + # Ativa o cache para esta localização específica. + proxy_no_cache 0; + proxy_cache_bypass 0; + proxy_cache_valid 200 60m; # Cacheia respostas 200 por 60 minutos. + + # Instrui o navegador do cliente a cachear o arquivo por 1 mês. + expires 1M; + + proxy_pass https://172.16.254.252:53443; + } + + # --- Localização Principal (SEM CACHE) --- + # Captura todas as outras requisições. + location / { + # O cache permanece desativado por herança das diretivas no nível `server`. + + # # A linha `proxy_ssl_verify off;` foi REMOVIDA. + # Se o seu backend usa um certificado autoassinado, DESCOMENTE e ajuste a linha abaixo: + # proxy_ssl_trusted_certificate /caminho/para/certificado_do_backend.pem; + # Isso garante que o NGINX confie no seu backend, prevenindo ataques MITM. + proxy_ssl_server_name on; # Importante para que o NGINX envie o SNI para o backend. + + # --- Tratamento Condicional para WebSockets --- + # # Somente envia os cabeçalhos de Upgrade se o cliente os solicitar. + if ($http_upgrade = "websocket") { + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + } + + proxy_pass https://172.16.254.252:53443; + } +}