diff --git a/nginx/sites-available/webmail.itguys.com.br.conf b/nginx/sites-available/webmail.itguys.com.br.conf index 0a873d4..def0215 100644 --- a/nginx/sites-available/webmail.itguys.com.br.conf +++ b/nginx/sites-available/webmail.itguys.com.br.conf @@ -23,100 +23,63 @@ server { 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; + # O Certbot irá gerir estas linhas. + #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; - # --- A CORREÇÃO ESTÁ AQUI: A ORDEM DAS LOCALIZAÇÕES --- + # --- A ORDEM DAS LOCALIZAÇÕES É CRUCIAL --- # As localizações com expressões regulares (~) são verificadas na ordem em que aparecem. - # Colocamos a regra mais específica (ficheiros estáticos) primeiro, para que ela seja - # sempre verificada antes das regras mais genéricas. # --- 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. + # A CORREÇÃO ESTÁ AQUI: Removemos '|json' da lista. Os ficheiros JSON de tradução + # serão agora tratados pela 'location /' principal, que é o correto para o Exchange. + location ~* \.(jpg|jpeg|gif|png|webp|svg|css|js|ico|woff2|ttf)$ { 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 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 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. + # Apanha ActiveSync, MAPI, e todo o tráfego dinâmico da interface. 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; } } -