diff --git a/nginx/sites-available/unifi.itguys.com.br.conf b/nginx/sites-available/unifi.itguys.com.br.conf index 575fc75..29f3266 100644 --- a/nginx/sites-available/unifi.itguys.com.br.conf +++ b/nginx/sites-available/unifi.itguys.com.br.conf @@ -1,20 +1,21 @@ # ========================================================================================= # ARQUIVO: /etc/nginx/sites-available/unifi.itguys.com.br.conf -# AUTOR: Gemini (Especialista NGINX) - VERSÃO 5 (SOLUÇÃO DEFINITIVA) +# AUTOR: Gemini (Especialista NGINX) - VERSÃO 6 (OTIMIZADA COM CACHE) # DATA: 21/09/2025 # # DESCRIÇÃO: -# Configuração final ajustada para corrigir o erro "403 Forbidden" em chamadas de API, -# que impedia o funcionamento correto da interface ao trocar de site. +# Configuração otimizada com cache para arquivos estáticos, visando melhorar o +# desempenho e reduzir a carga no backend do UniFi Controller. # # MELHORIAS DESTA VERSÃO: -# - CORREÇÃO (Erro 403 Forbidden): Adicionados os cabeçalhos 'Origin' e 'Referer' -# no proxy_pass. O backend do UniFi usa esses headers como uma medida de segurança -# CSRF. Sem eles, requisições que modificam dados (como PUT para /api/self) -# são rejeitadas. Com essa mudança, o NGINX garante que o backend confie -# nas requisições vindas do proxy. ESTA É A MUDANÇA CRUCIAL. -# - ESTRUTURA: Mantida a separação de 'location' para Web e WebSockets, que é a -# prática mais robusta e já se provou funcional para as conexões em tempo real. +# - OTIMIZAÇÃO (CACHE): Foram adicionados blocos 'location' específicos para +# arquivos estáticos (.js, .css, imagens, fontes). +# - ESTRATÉGIA DE CACHE: +# - Assets com hash no nome (ex: app.a1b2c3d4.js) são considerados imutáveis +# e recebem um cache agressivo de longa duração no navegador. +# - Assets comuns recebem um cache padrão. +# - MANUTENÇÃO: A lógica funcional da API e dos WebSockets permanece intacta, +# garantindo que a estabilidade alcançada seja mantida. # # ========================================================================================= @@ -64,7 +65,24 @@ server { proxy_ssl_verify off; include /etc/nginx/snippets/proxy_params.conf; - # --- ROTA PARA A APLICAÇÃO --- + # --- OTIMIZAÇÃO DE CACHE PARA ASSETS ESTÁTICOS --- + + # Bloco para assets imutáveis (com hash no nome). + # Aplica um cache de longa duração no navegador. + location ~* \.[a-z0-9]{8,}\.(css|js)$ { + include /etc/nginx/snippets/cache_immutable_static.conf; + proxy_pass https://unifi_backend_web; + } + + # Bloco para outros assets estáticos comuns. + # Aplica um cache padrão. + location ~* \.(?:css|js|jpe?g|png|gif|ico|svg|webp|avif|eot|ttf|woff|woff2|mp4|webm)$ { + include /etc/nginx/snippets/cache_static_assets.conf; + proxy_pass https://unifi_backend_web; + } + + # --- ROTA PARA A APLICAÇÃO (SEM CACHE) --- + # Captura a página principal e todas as chamadas de API. location / { proxy_pass https://unifi_backend_web; @@ -73,14 +91,11 @@ server { 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 ERRO 403 !! - # Força os headers de Origin e Referer para passar na validação CSRF do UniFi. - proxy_set_header Origin ""; # Alguns cenários exigem um Origin vazio + proxy_set_header Origin ""; proxy_set_header Referer $scheme://$host/; } - # --- ROTA DEDICADA PARA WEBSOCKETS --- + # --- ROTA DEDICADA PARA WEBSOCKETS (SEM CACHE) --- location /wss/ { proxy_pass https://unifi_backend_web; @@ -97,7 +112,6 @@ server { } } - # ============================================================================== # BLOCO 3: Servidor para o "Inform" dos Dispositivos (HTTP na porta 8080) # ==============================================================================