From 28cb83396cf537603e8a6626af2831e69ff76971 Mon Sep 17 00:00:00 2001 From: "srvproxy001.itguys.com.br" Date: Sat, 20 Sep 2025 01:48:13 -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-20=2001:48:13?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nginx/sites-available/mimir.itguys.com.br | 126 ++++++++-------------- 1 file changed, 45 insertions(+), 81 deletions(-) diff --git a/nginx/sites-available/mimir.itguys.com.br b/nginx/sites-available/mimir.itguys.com.br index d49258b..3519996 100644 --- a/nginx/sites-available/mimir.itguys.com.br +++ b/nginx/sites-available/mimir.itguys.com.br @@ -1,114 +1,78 @@ -# ==================================================================================== -# SERVIDOR HTTP (Porta 80) - APENAS PARA REDIRECIONAMENTO -# A única função deste bloco é capturar todo o tráfego inseguro (HTTP) -# e redirecioná-lo permanentemente (código 301) para a versão segura (HTTPS). -# ==================================================================================== +# Ficheiro: /etc/nginx/sites-available/mimir.itguys.com.br.conf +# +# Configuração de Proxy Reverso OTIMIZADA para Zabbix. +# Esta versão usa snippets, inclui cache para ficheiros estáticos e está restrita à rede interna. + +# ============================================================================== +# BLOCO HTTP: Redirecionar para HTTPS +# ============================================================================== server { - # Escuta na porta 80 para tráfego IPv4 e IPv6. listen 80; listen [::]:80; - - # Responde apenas a requisições para este nome de domínio específico. server_name mimir.itguys.com.br; - # Captura todas as requisições para qualquer URL neste domínio. + # Permite a validação do Let's Encrypt, mesmo com a trava de rede na porta 443. + location /.well-known/acme-challenge/ { + root /var/www/html; + } + + # Redireciona todo o outro tráfego para a versão segura. location / { - # Retorna um redirecionamento 301. - # $host mantém o domínio original (mimir.itguys.com.br). - # $request_uri mantém o caminho original (ex: /zabbix/dashboard.php). return 301 https://$host$request_uri; } } -# ==================================================================================== -# SERVIDOR HTTPS (Porta 443) - O SERVIDOR PRINCIPAL -# Este bloco lida com todo o tráfego seguro e contém toda a lógica de -# proxy reverso, segurança e cache para a aplicação Zabbix. -# ==================================================================================== +# ============================================================================== +# BLOCO HTTPS: O Coração da nossa Configuração +# ============================================================================== server { - # Escuta na porta 443 para tráfego IPv4 e IPv6. - # 'ssl' ativa a encriptação TLS. - # 'http2' ativa o protocolo HTTP/2 para melhor performance. listen 443 ssl http2; listen [::]:443 ssl http2; - include /etc/nginx/snippets/global_robots.conf; - - # Responde apenas a requisições para este nome de domínio. server_name mimir.itguys.com.br; - # --- CAMINHOS DOS CERTIFICADOS SSL --- - # O Certbot gere estas linhas automaticamente. Não as descomente manualmente. - ssl_certificate /etc/letsencrypt/live/mimir.itguys.com.br/fullchain.pem; # managed by Certbot - ssl_certificate_key /etc/letsencrypt/live/mimir.itguys.com.br/privkey.pem; # managed by Certbot + # --- Certificados e Segurança SSL --- + ssl_certificate /etc/letsencrypt/live/mimir.itguys.com.br/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/mimir.itguys.com.br/privkey.pem; + ssl_trusted_certificate /etc/letsencrypt/live/mimir.itguys.com.br/fullchain.pem; + # Inclui o nosso "kit" de segurança SSL com cifras modernas e cabeçalhos. + include /etc/nginx/snippets/ssl_params.conf; - # --- CONFIGURAÇÕES DE SEGURANÇA E LOGS --- - - # Inclui o ficheiro que contém a lista de IPs da sua rede interna permitidos. - # A diretiva 'deny all' dentro daquele ficheiro irá bloquear todo o resto. + # --- Políticas de Acesso e Logs --- + # A TRAVA DE SEGURANÇA: Restringe o acesso apenas às suas redes internas. include /etc/nginx/conf.d/internal_networks.conf; - - # Define que os logs de acesso para este site devem usar o nosso formato JSON detalhado. + # Bloqueia a indexação por motores de busca. + include /etc/nginx/snippets/robots_block_all.conf; + # Usa o nosso formato de log JSON detalhado. access_log /var/log/nginx/access.log detailed_proxy; - # Define o ficheiro para onde os logs de erro específicos deste site serão escritos. error_log /var/log/nginx/error.log; - # --- CABEÇALHOS DE PROXY GLOBAIS --- - # Estas diretivas são aplicadas a TODAS as requisições de proxy neste bloco, - # evitando a necessidade de repeti-las em cada '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; - - # --- ESTRATÉGIA DE CACHE HÍBRIDA E SEGURA --- - - # Aponta para a zona de cache 'zabbix_cache' que definimos no nginx.conf. + # --- ESTRATÉGIA DE CACHE HÍBRIDA --- + # Usa a nossa zona de cache pública. proxy_cache zabbix_cache; - # Adiciona um cabeçalho na resposta para podermos ver se o cache foi um HIT, MISS, ou BYPASS. add_header X-Proxy-Cache $upstream_cache_status; - - # Criamos uma variável $skip_cache. Por padrão, o seu valor é 0 ("não saltar o cache"). - set $skip_cache 0; - # Se a requisição usar o método POST (usado para submeter formulários, criar itens, etc.), - # mudamos o valor da variável para 1 ("saltar o cache"). - if ($request_method = POST) { - set $skip_cache 1; - } - - # Diz ao Nginx para ignorar o cache se $skip_cache for 1. - proxy_cache_bypass $skip_cache; - # Diz ao Nginx para NÃO guardar a resposta no cache se $skip_cache for 1. - proxy_no_cache $skip_cache; + # Regra geral: NÃO cachear nada por defeito. Isto protege todo o conteúdo dinâmico. + proxy_no_cache 1; + proxy_cache_bypass 1; # --- REGRAS DE ROTEAMENTO (LOCATIONS) --- - # O Nginx processa estas regras na ordem, procurando a mais específica. - # 1. LOCALIZAÇÃO PARA FICHEIROS ESTÁTICOS (CACHE ATIVADO) - # Captura requisições para ficheiros com extensões estáticas comuns. - location ~* \.(jpg|jpeg|gif|png|webp|svg|css|js|ico|woff2|ttf)$ { - # ATIVA o cache para estes ficheiros, sobrescrevendo a regra geral. - # Como as requisições para estes ficheiros são GET, $skip_cache será 0. - proxy_no_cache 0; - proxy_cache_bypass 0; + # 1. Rota para Ficheiros Estáticos (Cache Agressivo) + # Apanha a "casca" da aplicação Zabbix para acelerar o carregamento. + location ~* \.(?:css|js|mjs|svg|gif|png|jpg|jpeg|ico|wasm|woff2?|ttf|eot)$ { + include /etc/nginx/snippets/proxy_params.conf; + include /etc/nginx/snippets/cache_aggressive_static.conf; - # Define que as respostas válidas (código 200) devem ser cacheadas por 60 minutos. - proxy_cache_valid 200 60m; - - # Encaminha a requisição para o servidor Zabbix. proxy_pass http://172.16.254.11; } - - # 2. LOCALIZAÇÃO PARA TODO O RESTO (PÁGINAS DINÂMICAS - SEM CACHE) - # Esta localização captura todas as outras requisições (ex: zabbix.php, dashboard.php). + + # 2. Rota Principal para a Aplicação (SEM CACHE) + # Apanha todo o resto do tráfego (zabbix.php, dashboards, APIs, etc.). location / { - # Aqui, não definimos nenhuma regra de cache específica. Portanto, as regras - # gerais do servidor são aplicadas. Se a requisição for um POST, $skip_cache - # será 1 e o cache será ignorado. Se for um GET, o cache também será - # ignorado porque as regras gerais `proxy_no_cache 1` e `proxy_cache_bypass 1` - # do Zabbix não foram sobrescritas como fizemos para os ficheiros estáticos. + include /etc/nginx/snippets/proxy_params.conf; + # Embora o Zabbix não use WebSockets de forma intensiva, incluir este snippet + # não prejudica e mantém a configuração padronizada. + include /etc/nginx/snippets/websocket_params.conf; - # Encaminha a requisição para o servidor Zabbix. proxy_pass http://172.16.254.11; } } -