From 7e68d4be0d0b899e2f9c14e1ee4cb7a1c74452c7 Mon Sep 17 00:00:00 2001 From: "srvproxy001.itguys.com.br" Date: Mon, 15 Sep 2025 22:27:37 -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-15=2022:27:37?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../webmail.itguys.com.br.conf | 125 ++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 nginx/sites-available/webmail.itguys.com.br.conf diff --git a/nginx/sites-available/webmail.itguys.com.br.conf b/nginx/sites-available/webmail.itguys.com.br.conf new file mode 100644 index 0000000..9b593f7 --- /dev/null +++ b/nginx/sites-available/webmail.itguys.com.br.conf @@ -0,0 +1,125 @@ +# Ficheiro: /etc/nginx/sites-available/webmail.itguys.com.br.conf +# +# Configuração de Proxy Reverso COMPLETA e CORRIGIDA com cache HÍBRIDO (público e privado) +# e suporte para WebSockets, otimizada para Microsoft Exchange. + +# ============================================================================== +# BLOCO HTTP: Redirecionar todo o tráfego para a versão segura HTTPS +# ============================================================================== +server { + listen 80; + listen [::]:80; + server_name webmail.itguys.com.br; + + # Regra especial para permitir a validação do Let's Encrypt, que acontece na porta 80. + location /.well-known/acme-challenge/ { + root /var/www/html; + } + + # Para todas as outras requisições, envia um redirecionamento permanente (301) para HTTPS. + location / { + return 301 https://$host$request_uri; + } +} + +# ============================================================================== +# BLOCO HTTPS: O Coração da nossa Configuração +# ============================================================================== +server { + listen 443 ssl http2; + listen [::]:443 ssl http2; + server_name webmail.itguys.com.br; + + # --- Certificados SSL --- + # As linhas do Let's Encrypt estão comentadas, como pedido. + # O Certbot irá descomentá-las e preenchê-las automaticamente. + # ssl_certificate /etc/letsencrypt/live/webmail.itguys.com.br/fullchain.pem; + # ssl_certificate_key /etc/letsencrypt/live/webmail.itguys.com.br/privkey.pem; + + # --- Cabeçalhos de Segurança Padrão --- + # Instrui os navegadores a sempre usarem HTTPS neste site, aumentando a segurança. + add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; + # Protege contra ataques de "MIME type sniffing". + add_header X-Content-Type-Options "nosniff" always; + # Previne que o site seja incorporado em iframes noutros sites (clickjacking). + add_header X-Frame-Options "SAMEORIGIN" always; + + # --- Configurações de Log --- + # Usa o nosso formato de log JSON detalhado que já configurámos globalmente no nginx.conf. + access_log /var/log/nginx/access.log detailed_proxy; + error_log /var/log/nginx/error.log; + + # --- CABEÇALHOS DE PROXY GLOBAIS --- + # Estas diretivas são definidas uma vez aqui e serão herdadas por TODAS as 'location' abaixo. + # Isto evita repetição e torna a configuração mais limpa e fácil de manter. + 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; + # Necessário se o seu Exchange interno usar um certificado auto-assinado. + proxy_ssl_verify off; + + # --- LOCALIZAÇÃO PARA O CACHE PRIVADO E DINÂMICO (.aspx, .slab) --- + # Esta regra apanha os ficheiros da interface dinâmica do Exchange. + location ~* \.(aspx|slab)$ { + # Usa a nossa zona de cache dedicada para conteúdo privado, definida no nginx.conf. + proxy_cache exchange_private_cache; + # A "CHAVE" PESSOAL DE CADA UTILIZADOR. Usa o cookie de sessão para criar um cache único. + proxy_cache_key "$scheme$proxy_host$request_uri$cookie_ASP_NET_SessionId"; + # Cacheia por um tempo muito curto: 1 minuto. + proxy_cache_valid 200 1m; + # Ignora cabeçalhos que normalmente impediriam o cache de conteúdo autenticado. + proxy_ignore_headers Expires Cache-Control Set-Cookie; + # Esconde o cabeçalho Set-Cookie para o cliente quando a resposta vem do cache, para evitar conflitos. + proxy_hide_header Set-Cookie; + # Adiciona um cabeçalho para podermos depurar este cache específico (ver se foi HIT ou MISS). + add_header X-Private-Cache $upstream_cache_status; + + # A diretiva proxy_pass precisa de estar dentro de cada location. + proxy_pass https://172.16.150.150; + } + + # --- LOCALIZAÇÃO PARA FICHEIROS ESTÁTICOS (CACHE PÚBLICO) --- + # Esta regra apanha os ficheiros que são seguros para cachear, incluindo as fontes e os ficheiros JSON de tradução. + location ~* \.(jpg|jpeg|gif|png|webp|svg|css|js|ico|woff2|ttf|json)$ { + # Usa a nossa zona de cache pública. + proxy_cache zabbix_cache; + # Adiciona um cabeçalho de depuração para o cache público. + add_header X-Public-Cache $upstream_cache_status; + # Ativa o cache para estes ficheiros. + proxy_no_cache 0; + proxy_cache_bypass 0; + # Define que as respostas válidas (código 200) ficam no cache por 60 minutos. + proxy_cache_valid 200 60m; + # Instrui o NAVEGADOR do cliente a guardar uma cópia por 24 horas. + expires 24h; + + # A diretiva proxy_pass precisa de estar dentro de cada location. + proxy_pass https://172.16.150.150; + } + + # --- LOCALIZAÇÃO PRINCIPAL PARA O RESTO (SEM CACHE, SUPORTE A WEBSOCKETS) --- + # Apanha ActiveSync, MAPI, e o tráfego da interface que precisa de ser em tempo real. + location / { + # Regra geral: NÃO cachear nada por defeito. + proxy_no_cache 1; + proxy_cache_bypass 1; + + # --- CORREÇÃO PARA ATUALIZAÇÕES EM TEMPO REAL --- + # As linhas abaixo são essenciais para permitir que as conexões WebSocket e + # de longa duração funcionem, resolvendo o "bug" da lista de e-mails. + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + + # Desativa o buffering para garantir que os dados fluam em tempo real. + proxy_buffering off; + + # Timeouts longos para suportar sessões do Outlook e uploads/downloads grandes. + proxy_read_timeout 3600s; + + # A diretiva proxy_pass precisa de estar dentro de cada location. + proxy_pass https://172.16.150.150; + } +} +