From de4441d2cd4dc4c64fadaf846347bb516153a0a3 Mon Sep 17 00:00:00 2001 From: "srvproxy001.itguys.com.br" Date: Mon, 15 Sep 2025 22:06:18 -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:06:18?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../webmail.itguys.com.br.conf | 74 ++++++++++--------- 1 file changed, 39 insertions(+), 35 deletions(-) diff --git a/nginx/sites-available/webmail.itguys.com.br.conf b/nginx/sites-available/webmail.itguys.com.br.conf index 06579d6..b9391f5 100644 --- a/nginx/sites-available/webmail.itguys.com.br.conf +++ b/nginx/sites-available/webmail.itguys.com.br.conf @@ -1,6 +1,7 @@ # Ficheiro: /etc/nginx/sites-available/webmail.itguys.com.br.conf # -# Configuração de Proxy Reverso com cache HÍBRIDO (público e privado) para Microsoft Exchange. +# Configuração de Proxy Reverso com cache HÍBRIDO (público e privado) e suporte +# para WebSockets, otimizada para Microsoft Exchange. # ============================================================================== # BLOCO HTTP: Redirecionar para HTTPS @@ -21,76 +22,79 @@ server { listen [::]:443 ssl http2; server_name webmail.itguys.com.br; - # Certificados SSL (Geridos pelo Certbot) - #ssl_certificate /etc/letsencrypt/live/webmail.itguys.com.br/fullchain.pem; - #ssl_certificate_key /etc/letsencrypt/live/webmail.itguys.com.br/privkey.pem; + # --- Certificados SSL (Geridos pelo Certbot) --- + #ssl_certificate /etc/letsencrypt/live/webmail.itguys.com.br/fullchain.pem; # managed by Certbot + #ssl_certificate_key /etc/letsencrypt/live/webmail.itguys.com.br/privkey.pem; # managed by Certbot - # Cabeçalhos de Segurança + # --- Cabeçalhos de Segurança Padrão --- + # Instrui os navegadores a sempre usarem HTTPS neste site. add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; - # Configurações de Log + # --- Configurações de Log --- + # Usa o nosso formato de log JSON detalhado que já configurámos globalmente. 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. + 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_pass https://172.16.150.150; # O nosso único servidor de backend. + proxy_ssl_verify off; # Necessário se o Exchange interno usar um certificado auto-assinado. + # --- 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. proxy_cache exchange_private_cache; - - # A "CHAVE" PESSOAL DE CADA UTILIZADOR. - # Combina a URL com o cookie de sessão para criar uma chave única. - # O Nginx extrai o valor do cookie com a variável $cookie_NOME_DO_COOKIE. + # 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. proxy_hide_header Set-Cookie; - # Adiciona um cabeçalho para podermos depurar este cache específico. add_header X-Private-Cache $upstream_cache_status; - - proxy_pass https://172.16.150.150; - proxy_ssl_verify off; - 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; } # --- LOCALIZAÇÃO PARA FICHEIROS ESTÁTICOS (CACHE PÚBLICO) --- - # Esta regra apanha os ficheiros que são seguros para cachear. + # Esta regra apanha os ficheiros que são seguros para cachear, incluindo as fontes. location ~* \.(jpg|jpeg|gif|png|webp|svg|css|js|ico|woff2|ttf)$ { # Usa a nossa zona de cache pública. proxy_cache zabbix_cache; 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; - - proxy_pass https://172.16.150.150; - proxy_ssl_verify off; } - - # --- LOCALIZAÇÃO PRINCIPAL PARA O RESTO (SEM CACHE) --- - # Apanha ActiveSync, MAPI, Autodiscover, etc. + + # --- 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; - proxy_pass https://172.16.150.150; - proxy_read_timeout 3600s; - - 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; + # --- 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; } } -