[Auto-Sync] Atualização das configurações em srvproxy001.itguys.com.br - 2025-09-21 21:04:42

This commit is contained in:
srvproxy001.itguys.com.br 2025-09-21 21:04:43 -03:00
parent 16d18c3c9a
commit f4a41e2819
1 changed files with 76 additions and 96 deletions

View File

@ -1,136 +1,116 @@
# ================================================================================================= # =========================================================================================
# ARQUIVO DE CONFIGURAÇÃO NGINX PARA O UNIFI NETWORK CONTROLLER # ARQUIVO DE CONFIGURAÇÃO NGINX PARA O UNIFI CONTROLLER
# #
# OBJETIVO: # DOMÍNIO: unifi.com.br
# Atuar como um proxy reverso seguro para a interface web do UniFi Controller. # BACKEND: 172.16.254.123:8443
# #
# URL: https://unifi.com.br # CRIADO EM: 21/09/2025
# Backend: https://172.16.254.123:8443
# #
# 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): # PONTOS IMPORTANTES DESTA CONFIGURAÇÃO:
# - 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.
# #
# 2. SUPORTE A WEBSOCKETS: # 1. PROXY REVERSO:
# - O UniFi Controller utiliza WebSockets para comunicação em tempo real (atualização de # - Redireciona todo o tráfego do NGINX para a aplicação UniFi Controller que está
# dispositivos, alertas, estatísticas e autenticação, incluindo 2FA). As diretivas # rodando em 'https://172.16.254.123:8443'. Note o uso de 'https' no proxy_pass,
# `Upgrade` e `Connection` na seção de proxy são essenciais para que essa # pois a porta 8443 do UniFi espera conexões seguras.
# comunicação persistente funcione através do NGINX. Um timeout de leitura
# elevado (`proxy_read_timeout`) previne que conexões ativas sejam encerradas
# prematuramente.
# #
# 3. SEGURANÇA (SSL/TLS E HEADERS): # 2. SEGURANÇA:
# - Redirecionamento automático de HTTP para HTTPS. # - Força o uso de HTTPS redirecionando permanentemente (301) todo o tráfego HTTP.
# - Configuração de SSL/TLS baseada nas recomendações modernas (Mozilla Intermediate), # - Utiliza os parâmetros de SSL/TLS centralizados do snippet 'ssl_params.conf'
# priorizando protocolos e cifras seguras (TLSv1.2, TLSv1.3). # para garantir uma configuração segura e consistente.
# - HSTS (Strict-Transport-Security) para forçar o navegador a usar apenas HTTPS. # - Headers de segurança como 'X-Forwarded-Proto' e 'X-Real-IP' são passados
# - Inclusão de headers de segurança para mitigar ataques como Clickjacking # para que o UniFi Controller tenha a informação correta sobre o cliente original.
# (X-Frame-Options) e Cross-Site Scripting (X-XSS-Protection).
# #
# 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. # 4. SEM CACHE:
# - server (porta 443): Bloco principal que lida com o tráfego HTTPS. # - Conforme solicitado, nenhuma diretiva de cache foi implementada nesta versão
# - ssl_*: Diretivas de configuração do certificado e segurança TLS. # inicial para garantir a funcionalidade básica antes de introduzir otimizações.
# - location /: Define como as requisições são encaminhadas (proxy) para o
# backend do UniFi Controller.
# #
# AUTOR: Gemini (Especialista NGINX) # 5. UTILIZAÇÃO DE SNIPPETS:
# VERSÃO: 1.0 (Base, sem cache) # - 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 --- # --- Bloco Upstream ---
# Redireciona permanentemente (301) qualquer tentativa de acesso via HTTP # Define o servidor backend para facilitar a referência e o gerenciamento.
# para a versão segura (HTTPS), garantindo que a comunicação seja sempre criptografada. # 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 { server {
listen 80; listen 80;
listen [::]:80; listen [::]:80;
server_name unifi.com.br; server_name unifi.com.br;
# Para renovação do Certbot (Let's Encrypt) # Força a reescrita para HTTPS com um redirecionamento permanente (bom para SEO e segurança)
location ~ /.well-known/acme-challenge/ {
allow all;
root /var/www/html; # Ajuste este caminho se necessário
}
location / { location / {
return 301 https://$host$request_uri; 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 { server {
listen 443 ssl http2; listen 443 ssl http2;
listen [::]:443 ssl http2; listen [::]:443 ssl http2;
server_name unifi.com.br; server_name unifi.com.br;
# --- Configurações de SSL/TLS --- # --- Configurações de SSL/TLS ---
# Substitua pelos caminhos corretos do seu certificado. # !! IMPORTANTE !!
# Se usar Certbot, os caminhos serão algo como: # Substitua os caminhos abaixo pelos caminhos corretos dos seus certificados.
# ssl_certificate /etc/letsencrypt/live/unifi.com.br/fullchain.pem; ssl_certificate /etc/letsencrypt/live/unifi.com.br/fullchain.pem;
# ssl_certificate_key /etc/letsencrypt/live/unifi.com.br/privkey.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;
# Configurações de segurança TLS baseadas nas recomendações da Mozilla # Inclui os parâmetros de SSL seguros a partir de um arquivo centralizado.
# (Consulte: https://wiki.mozilla.org/Security/Server_Side_TLS) include /etc/nginx/snippets/ssl_params.conf;
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
# --- Headers de Segurança --- # --- Proxy para a Aplicação Principal ---
# 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 ---
location / { location / {
# --- Configurações do Proxy --- # Inclui os parâmetros de proxy padrão.
# Endereço do seu UniFi Controller. include /etc/nginx/snippets/proxy_params.conf;
# 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;
# --- Headers para o Backend --- # Define os headers necessários para o proxy reverso funcionar corretamente.
# Repassa informações do cliente original para o backend, essencial para logs e
# funcionamento correto da aplicação.
proxy_set_header Host $host; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Proto $scheme;
# --- Suporte a WebSocket --- # Aponta para o upstream definido no início do arquivo.
# Essencial para a comunicação em tempo real do UniFi (2FA, stats, etc). # É crucial usar https:// pois a porta 8443 do controller espera SSL.
proxy_http_version 1.1; 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 Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade"; proxy_set_header Connection "Upgrade";
# Timeout longo para manter conexões WebSocket ativas. # Aumenta os timeouts, pois conexões WebSocket podem ser de longa duração.
proxy_read_timeout 86400s; # 24 horas proxy_read_timeout 86400; # 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;
} }
} }