From f4a41e28193d63dbf49528efc7a38175ab391230 Mon Sep 17 00:00:00 2001 From: "srvproxy001.itguys.com.br" Date: Sun, 21 Sep 2025 21:04:43 -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-21=2021:04:42?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sites-available/unifi.itguys.com.br.conf | 172 ++++++++---------- 1 file changed, 76 insertions(+), 96 deletions(-) diff --git a/nginx/sites-available/unifi.itguys.com.br.conf b/nginx/sites-available/unifi.itguys.com.br.conf index af9a21b..8b99207 100644 --- a/nginx/sites-available/unifi.itguys.com.br.conf +++ b/nginx/sites-available/unifi.itguys.com.br.conf @@ -1,136 +1,116 @@ -# ================================================================================================= -# ARQUIVO DE CONFIGURAÇÃO NGINX PARA O UNIFI NETWORK CONTROLLER +# ========================================================================================= +# ARQUIVO DE CONFIGURAÇÃO NGINX PARA O UNIFI CONTROLLER # -# OBJETIVO: -# Atuar como um proxy reverso seguro para a interface web do UniFi Controller. +# DOMÍNIO: unifi.com.br +# BACKEND: 172.16.254.123:8443 # -# URL: https://unifi.com.br -# Backend: https://172.16.254.123:8443 +# CRIADO EM: 21/09/2025 # -# PRINCIPAIS CARACTERÍSTICAS DESTA CONFIGURAÇÃO: +# DESCRIÇÃO: +# Este arquivo configura o NGINX como um proxy reverso seguro para a interface web +# do UniFi Controller. # -# 1. SEM CACHE (Versão Inicial): -# - Esta configuração desativa intencionalmente todo tipo de cache (`proxy_buffering off`, -# `proxy_cache off`) e envia headers (`Cache-Control`, `Expires`) para instruir -# navegadores e proxies a não armazenarem nada em cache. Isso é fundamental para -# testar e validar que toda a comunicação com o backend está funcionando -# corretamente antes de introduzir otimizações. +# PONTOS IMPORTANTES DESTA CONFIGURAÇÃO: # -# 2. SUPORTE A WEBSOCKETS: -# - O UniFi Controller utiliza WebSockets para comunicação em tempo real (atualização de -# dispositivos, alertas, estatísticas e autenticação, incluindo 2FA). As diretivas -# `Upgrade` e `Connection` na seção de proxy são essenciais para que essa -# comunicação persistente funcione através do NGINX. Um timeout de leitura -# elevado (`proxy_read_timeout`) previne que conexões ativas sejam encerradas -# prematuramente. +# 1. PROXY REVERSO: +# - Redireciona todo o tráfego do NGINX para a aplicação UniFi Controller que está +# rodando em 'https://172.16.254.123:8443'. Note o uso de 'https' no proxy_pass, +# pois a porta 8443 do UniFi espera conexões seguras. # -# 3. SEGURANÇA (SSL/TLS E HEADERS): -# - Redirecionamento automático de HTTP para HTTPS. -# - Configuração de SSL/TLS baseada nas recomendações modernas (Mozilla Intermediate), -# priorizando protocolos e cifras seguras (TLSv1.2, TLSv1.3). -# - HSTS (Strict-Transport-Security) para forçar o navegador a usar apenas HTTPS. -# - Inclusão de headers de segurança para mitigar ataques como Clickjacking -# (X-Frame-Options) e Cross-Site Scripting (X-XSS-Protection). +# 2. SEGURANÇA: +# - Força o uso de HTTPS redirecionando permanentemente (301) todo o tráfego HTTP. +# - Utiliza os parâmetros de SSL/TLS centralizados do snippet 'ssl_params.conf' +# para garantir uma configuração segura e consistente. +# - Headers de segurança como 'X-Forwarded-Proto' e 'X-Real-IP' são passados +# para que o UniFi Controller tenha a informação correta sobre o cliente original. # -# BLOCOS DE CONFIGURAÇÃO: +# 3. SUPORTE A WEBSOCKETS (ESSENCIAL PARA 2FA E TEMPO REAL): +# - A interface do UniFi, incluindo o sistema de 2FA, depende de conexões +# WebSocket para comunicação em tempo real. +# - Um bloco 'location /wss/' dedicado foi criado para manipular essas conexões, +# realizando o upgrade necessário do protocolo HTTP para WebSocket. Sem isso, +# a interface não funcionaria corretamente. # -# - server (porta 80): Redireciona todo o tráfego HTTP para HTTPS. -# - server (porta 443): Bloco principal que lida com o tráfego HTTPS. -# - ssl_*: Diretivas de configuração do certificado e segurança TLS. -# - location /: Define como as requisições são encaminhadas (proxy) para o -# backend do UniFi Controller. +# 4. SEM CACHE: +# - Conforme solicitado, nenhuma diretiva de cache foi implementada nesta versão +# inicial para garantir a funcionalidade básica antes de introduzir otimizações. # -# AUTOR: Gemini (Especialista NGINX) -# VERSÃO: 1.0 (Base, sem cache) -# ================================================================================================= +# 5. UTILIZAÇÃO DE SNIPPETS: +# - A configuração aproveita os snippets pré-existentes em '/etc/nginx/snippets/' +# para manter o código limpo e modular. ('ssl_params.conf', 'proxy_params.conf'). +# +# ========================================================================================= -# --- Bloco 1: Redirecionamento de HTTP para HTTPS --- -# Redireciona permanentemente (301) qualquer tentativa de acesso via HTTP -# para a versão segura (HTTPS), garantindo que a comunicação seja sempre criptografada. +# --- Bloco Upstream --- +# Define o servidor backend para facilitar a referência e o gerenciamento. +# O NGINX irá balancear a carga aqui se mais de um servidor for listado. +upstream unifi_controller { + server 172.16.254.123:8443; +} + +# ========================================================================================= + +# --- Servidor HTTP (Porta 80) --- +# Redireciona todo o tráfego HTTP para a versão segura HTTPS. server { listen 80; listen [::]:80; server_name unifi.com.br; - # Para renovação do Certbot (Let's Encrypt) - location ~ /.well-known/acme-challenge/ { - allow all; - root /var/www/html; # Ajuste este caminho se necessário - } - + # Força a reescrita para HTTPS com um redirecionamento permanente (bom para SEO e segurança) location / { return 301 https://$host$request_uri; } } -# --- Bloco 2: Configuração Principal do Servidor HTTPS --- -# Este é o bloco principal que serve o conteúdo do UniFi Controller via HTTPS. +# ========================================================================================= + +# --- Servidor HTTPS (Porta 443) --- +# O bloco principal que lida com as conexões seguras. server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name unifi.com.br; # --- Configurações de SSL/TLS --- - # Substitua pelos caminhos corretos do seu certificado. - # Se usar Certbot, os caminhos serão algo como: - # ssl_certificate /etc/letsencrypt/live/unifi.com.br/fullchain.pem; - # ssl_certificate_key /etc/letsencrypt/live/unifi.com.br/privkey.pem; - ssl_certificate /caminho/para/seu/certificado/fullchain.pem; - ssl_certificate_key /caminho/para/seu/certificado/privkey.pem; + # !! IMPORTANTE !! + # Substitua os caminhos abaixo pelos caminhos corretos dos seus certificados. + ssl_certificate /etc/letsencrypt/live/unifi.com.br/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/unifi.com.br/privkey.pem; - # Configurações de segurança TLS baseadas nas recomendações da Mozilla - # (Consulte: https://wiki.mozilla.org/Security/Server_Side_TLS) - ssl_protocols TLSv1.2 TLSv1.3; - ssl_prefer_server_ciphers on; - ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384"; - ssl_session_cache shared:SSL:10m; - ssl_session_timeout 1d; - ssl_session_tickets off; - ssl_dhparam /etc/nginx/dhparam.pem; # Gere com: openssl dhparam -out /etc/nginx/dhparam.pem 4096 + # Inclui os parâmetros de SSL seguros a partir de um arquivo centralizado. + include /etc/nginx/snippets/ssl_params.conf; - # --- Headers de Segurança --- - # HSTS (Strict-Transport-Security) - Força o navegador a usar HTTPS por 6 meses - add_header Strict-Transport-Security "max-age=15768000; includeSubDomains" always; - # Prevenção de Clickjacking - add_header X-Frame-Options "SAMEORIGIN" always; - # Prevenção de MIME-type sniffing - add_header X-Content-Type-Options "nosniff" always; - # Proteção contra XSS - add_header X-XSS-Protection "1; mode=block" always; - - # --- Bloco 3: Configuração do Proxy Reverso --- + # --- Proxy para a Aplicação Principal --- location / { - # --- Configurações do Proxy --- - # Endereço do seu UniFi Controller. - # IMPORTANTE: O UniFi Controller usa HTTPS na porta 8443, então o proxy_pass - # deve usar o esquema "https" - proxy_pass https://172.16.254.123:8443; + # Inclui os parâmetros de proxy padrão. + include /etc/nginx/snippets/proxy_params.conf; - # --- Headers para o Backend --- - # Repassa informações do cliente original para o backend, essencial para logs e - # funcionamento correto da aplicação. + # Define os headers necessários para o proxy reverso funcionar corretamente. 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; - # --- Suporte a WebSocket --- - # Essencial para a comunicação em tempo real do UniFi (2FA, stats, etc). - proxy_http_version 1.1; + # Aponta para o upstream definido no início do arquivo. + # É crucial usar https:// pois a porta 8443 do controller espera SSL. + proxy_pass https://unifi_controller; + } + + # --- Proxy para WebSockets --- + # Este bloco é VITAL para a funcionalidade em tempo real do UniFi e para o 2FA. + location /wss/ { + # Inclui os parâmetros de proxy padrão. + include /etc/nginx/snippets/proxy_params.conf; + + # Aponta para o upstream. + proxy_pass https://unifi_controller; + + # Headers específicos para permitir a "promoção" da conexão de HTTP para WebSocket. proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; - # Timeout longo para manter conexões WebSocket ativas. - proxy_read_timeout 86400s; # 24 horas - - # --- Desativação Explícita de Cache --- - # Garante que NGINX não fará buffer nem cache das respostas. - proxy_buffering off; - proxy_cache off; - - # --- Headers de Controle de Cache para o Cliente --- - # Instrui o navegador a não fazer cache de nenhum conteúdo. - add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0"; - expires -1; + # Aumenta os timeouts, pois conexões WebSocket podem ser de longa duração. + proxy_read_timeout 86400; # 24 horas } }