diff --git a/nginx/sites-available/zammad.itguys.com.br.conf b/nginx/sites-available/zammad.itguys.com.br.conf index 6935bcd..3dcb64e 100644 --- a/nginx/sites-available/zammad.itguys.com.br.conf +++ b/nginx/sites-available/zammad.itguys.com.br.conf @@ -1,89 +1,92 @@ # Ficheiro: /etc/nginx/sites-available/zammad.itguys.com.br.conf # -# TEMPLATE DE CONFIGURAÇÃO OTIMIZADO PARA APLICAÇÕES WEB MODERNAS -# Este ficheiro foi reescrito para usar snippets, tornando-o mais limpo, seguro e fácil de manter. +# TEMPLATE DE CONFIGURAÇÃO OTIMIZADO PARA APLICAÇÕES WEB MODERNAS (VERSÃO CORRIGIDA) +# +# --- HISTÓRICO DE ALTERAÇÕES --- +# - [2025-09-21] Refatoração completa para alinhar com as melhores práticas. +# - Simplificado o bloco de redirecionamento HTTP para maior eficiência. +# - Agrupadas todas as diretivas SSL para melhor legibilidade. +# - Otimizada a inclusão de snippets de proxy para evitar repetição (DRY Principle). +# - Removidas diretivas redundantes e comentadas. +# +# --- DESCRIÇÃO --- +# Este bloco de servidor atua como um proxy reverso para a aplicação Zammad. # Acesso: RESTRITO À REDE INTERNA. # ============================================================================== -# BLOCO HTTP: Redirecionar para HTTPS +# BLOCO HTTP: Redirecionamento eficiente e limpo para HTTPS # ============================================================================== server { - if ($host = zammad.itguys.com.br) { - return 301 https://$host$request_uri; - } # managed by Certbot - - listen 80; listen [::]:80; server_name zammad.itguys.com.br; -include /etc/nginx/snippets/custom_errors.conf; # Carrega as páginas de erro personalizadas - location /.well-known/acme-challenge/ { root /var/www/html; } - location / { return 301 https://$host$request_uri; } + # Responde aos desafios do Let's Encrypt para renovação do certificado. + location /.well-known/acme-challenge/ { + root /var/www/html; + } + # Redireciona permanentemente (301) todo o restante tráfego para HTTPS. + # O bloco "if" gerado pelo Certbot foi removido por ser redundante e menos eficiente. + location / { + return 301 https://$host$request_uri; + } } # ============================================================================== -# BLOCO HTTPS: O Coração da nossa Configuração +# BLOCO HTTPS: Configuração principal da aplicação # ============================================================================== server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name zammad.itguys.com.br; -include /etc/nginx/snippets/custom_errors.conf; # Carrega as páginas de erro personalizadas - # --- Certificados e Segurança SSL --- - #ssl_certificate /etc/letsencrypt/live/zammad.itguys.com.br/fullchain.pem; - #ssl_certificate_key /etc/letsencrypt/live/zammad.itguys.com.br/privkey.pem; - #ssl_trusted_certificate /etc/letsencrypt/live/zammad.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 SSL --- + # Diretivas SSL agrupadas para maior clareza e manutenção. + ssl_certificate /etc/letsencrypt/live/zammad.itguys.com.br/fullchain.pem; # managed by Certbot + ssl_certificate_key /etc/letsencrypt/live/zammad.itguys.com.br/privkey.pem; # managed by Certbot + include /etc/nginx/snippets/ssl_params.conf; # Kit de segurança (cifras, HSTS, etc.) - # --- Políticas de Acesso e Logs --- - # A CORREÇÃO ESTÁ AQUI: A trava de rede é incluída APENAS neste ficheiro de site. - include /etc/nginx/snippets/internal_networks.conf; - include /etc/nginx/snippets/global_robots.conf; + # --- Políticas de Acesso e Páginas de Erro --- + include /etc/nginx/snippets/internal_networks.conf; # Trava de acesso por rede + include /etc/nginx/snippets/custom_errors.conf; # Páginas de erro personalizadas + include /etc/nginx/snippets/global_robots.conf; # Regras para crawlers + + # --- Logs e Parâmetros Gerais --- access_log /var/log/nginx/access.log detailed_proxy; error_log /var/log/nginx/error.log; + client_max_body_size 50M; # Permite anexos de até 50MB - # Aumenta o tamanho máximo do corpo da requisição para permitir anexos grandes. - client_max_body_size 50M; + # --- Otimização de Proxy (Princípio DRY) --- + # Incluímos os parâmetros de proxy aqui uma vez; eles serão herdados por todos os `location`. + # Isso evita repetição e simplifica a manutenção do ficheiro. + include /etc/nginx/snippets/proxy_params.conf; - # --- ESTRATÉGIA DE CACHE HÍBRIDA --- + # --- ESTRATÉGIA DE CACHE HÍBRIDA (Padrão: NÃO CACHEAR) --- proxy_cache zammad_cache; - add_header X-Proxy-Cache $upstream_cache_status; - proxy_no_cache 1; # Regra geral: NÃO cachear por defeito. + add_header X-Proxy-Cache $upstream_cache_status; # Cabeçalho para depuração do cache + proxy_no_cache 1; proxy_cache_bypass 1; # --- REGRAS DE ROTEAMENTO (LOCATIONS) --- # 1. Localização para Ficheiros Estáticos (CACHE ATIVADO) location /assets/ { - # Inclui o nosso "kit" de cache para ficheiros estáticos. + # Ativa e configura o cache apenas para esta localização. include /etc/nginx/snippets/cache_static_assets.conf; - # Inclui os cabeçalhos de proxy padrão. - include /etc/nginx/snippets/proxy_params.conf; proxy_pass http://172.16.254.59; } # 2. Localização para WebSockets (SEM CACHE) location /ws { - # Inclui os cabeçalhos de proxy padrão. - include /etc/nginx/snippets/proxy_params.conf; - # Inclui os parâmetros específicos para WebSockets. + # Adiciona os parâmetros específicos para a atualização do protocolo WebSocket. include /etc/nginx/snippets/websocket_params.conf; - - # Encaminha para a porta correta do serviço de WebSocket do Zammad. proxy_pass http://172.16.254.59:6042; } # 3. Localização Principal para a Aplicação (SEM CACHE) location / { - # Inclui os cabeçalhos de proxy padrão. - include /etc/nginx/snippets/proxy_params.conf; + # Nenhum parâmetro extra necessário, herda `proxy_params.conf` e a política de não cachear. proxy_pass http://172.16.254.59; } - - ssl_certificate /etc/letsencrypt/live/zammad.itguys.com.br/fullchain.pem; # managed by Certbot - ssl_certificate_key /etc/letsencrypt/live/zammad.itguys.com.br/privkey.pem; # managed by Certbot }