[Auto-Sync] Atualização das configurações em srvproxy001.itguys.com.br - 2025-09-21 20:54:23
This commit is contained in:
parent
743b195529
commit
16d18c3c9a
|
|
@ -1,104 +1,136 @@
|
||||||
# ==============================================================================
|
# =================================================================================================
|
||||||
# ARQUIVO: /etc/nginx/sites-available/unifi.itguys.com.br.conf (VERSÃO MINIMALISTA)
|
# ARQUIVO DE CONFIGURAÇÃO NGINX PARA O UNIFI NETWORK CONTROLLER
|
||||||
# AUTOR: Gemini (Especialista NGINX)
|
|
||||||
# DATA: 21/09/2025
|
|
||||||
#
|
#
|
||||||
# DESCRIÇÃO:
|
# OBJETIVO:
|
||||||
# Configuração MÍNIMA e EXPLÍCITA para diagnóstico do UniFi Controller.
|
# Atuar como um proxy reverso seguro para a interface web do UniFi Controller.
|
||||||
# REMOVEMOS toda a complexidade (cache, múltiplas locations, snippets) para
|
#
|
||||||
# focar em estabelecer a comunicação básica com o backend.
|
# URL: https://unifi.com.br
|
||||||
# ==============================================================================
|
# Backend: https://172.16.254.123:8443
|
||||||
|
#
|
||||||
|
# PRINCIPAIS CARACTERÍSTICAS DESTA CONFIGURAÇÃO:
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# 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).
|
||||||
|
#
|
||||||
|
# BLOCOS DE CONFIGURAÇÃO:
|
||||||
|
#
|
||||||
|
# - 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.
|
||||||
|
#
|
||||||
|
# AUTOR: Gemini (Especialista NGINX)
|
||||||
|
# VERSÃO: 1.0 (Base, sem cache)
|
||||||
|
# =================================================================================================
|
||||||
|
|
||||||
upstream unifi_backend_web {
|
# --- Bloco 1: Redirecionamento de HTTP para HTTPS ---
|
||||||
server 172.16.254.123:8443;
|
# Redireciona permanentemente (301) qualquer tentativa de acesso via HTTP
|
||||||
}
|
# para a versão segura (HTTPS), garantindo que a comunicação seja sempre criptografada.
|
||||||
|
|
||||||
upstream unifi_backend_inform {
|
|
||||||
server 172.16.254.123:8080;
|
|
||||||
}
|
|
||||||
|
|
||||||
# ==============================================================================
|
|
||||||
# BLOCO 1: Redirecionamento de HTTP (porta 80) para HTTPS
|
|
||||||
# ==============================================================================
|
|
||||||
server {
|
server {
|
||||||
listen 80;
|
listen 80;
|
||||||
listen [::]:80;
|
listen [::]:80;
|
||||||
server_name unifi.itguys.com.br;
|
server_name unifi.com.br;
|
||||||
|
|
||||||
location /.well-known/acme-challenge/ {
|
# Para renovação do Certbot (Let's Encrypt)
|
||||||
root /var/www/html;
|
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 ---
|
||||||
# BLOCO 2: Servidor Principal - Proxy Reverso para a Interface Web (HTTPS)
|
# Este é o bloco principal que serve o conteúdo do UniFi Controller via HTTPS.
|
||||||
# ==============================================================================
|
|
||||||
server {
|
server {
|
||||||
listen 443 ssl http2;
|
listen 443 ssl http2;
|
||||||
listen [::]:443 ssl http2;
|
listen [::]:443 ssl http2;
|
||||||
server_name unifi.itguys.com.br;
|
server_name unifi.com.br;
|
||||||
|
|
||||||
# --- CONFIGURAÇÕES DE SSL ---
|
# --- Configurações de SSL/TLS ---
|
||||||
ssl_certificate /etc/letsencrypt/live/unifi.itguys.com.br/fullchain.pem;
|
# Substitua pelos caminhos corretos do seu certificado.
|
||||||
ssl_certificate_key /etc/letsencrypt/live/unifi.itguys.com.br/privkey.pem;
|
# Se usar Certbot, os caminhos serão algo como:
|
||||||
include /etc/nginx/snippets/ssl_params.conf;
|
# 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;
|
||||||
|
|
||||||
# --- LOGS ---
|
# Configurações de segurança TLS baseadas nas recomendações da Mozilla
|
||||||
access_log /var/log/nginx/unifi.itguys.com.br.access.log;
|
# (Consulte: https://wiki.mozilla.org/Security/Server_Side_TLS)
|
||||||
error_log /var/log/nginx/unifi.itguys.com.br.error.log warn;
|
ssl_protocols TLSv1.2 TLSv1.3;
|
||||||
|
ssl_prefer_server_ciphers on;
|
||||||
# --- ROTA ÚNICA E EXPLÍCITA PARA TODA A APLICAÇÃO ---
|
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 ---
|
||||||
|
# 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 / {
|
||||||
# --- CABEÇALHOS DEFINIDOS MANUALMENTE ---
|
# --- Configurações do Proxy ---
|
||||||
# Protocolo e cabeçalhos para suporte a WebSocket
|
# 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;
|
||||||
|
|
||||||
|
# --- Headers para o Backend ---
|
||||||
|
# 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 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;
|
proxy_http_version 1.1;
|
||||||
proxy_set_header Upgrade $http_upgrade;
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
proxy_set_header Connection "upgrade";
|
proxy_set_header Connection "Upgrade";
|
||||||
|
|
||||||
# Cabeçalhos padrão (substituindo o snippet proxy_params.conf)
|
# Timeout longo para manter conexões WebSocket ativas.
|
||||||
proxy_set_header Host $host;
|
proxy_read_timeout 86400s; # 24 horas
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
# --- Desativação Explícita de Cache ---
|
||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
# Garante que NGINX não fará buffer nem cache das respostas.
|
||||||
|
|
||||||
# Cabeçalho de segurança CSRF do UniFi
|
|
||||||
proxy_set_header X-Csrf-Token $cookie_csrf_token;
|
|
||||||
|
|
||||||
# --- CONFIGURAÇÕES DE CONEXÃO ---
|
|
||||||
# Medida de diagnóstico para evitar problemas com buffering
|
|
||||||
proxy_buffering off;
|
proxy_buffering off;
|
||||||
|
proxy_cache off;
|
||||||
# Parâmetros para conexão com o backend HTTPS
|
|
||||||
proxy_ssl_verify off;
|
# --- Headers de Controle de Cache para o Cliente ---
|
||||||
proxy_ssl_server_name on;
|
# 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";
|
||||||
proxy_pass https://unifi_backend_web;
|
expires -1;
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# ==============================================================================
|
|
||||||
# BLOCO 3: Servidor para o "Inform" dos Dispositivos (HTTP na porta 8080)
|
|
||||||
# ==============================================================================
|
|
||||||
server {
|
|
||||||
listen 8080;
|
|
||||||
listen [::]:8080;
|
|
||||||
server_name unifi.itguys.com.br;
|
|
||||||
|
|
||||||
access_log /var/log/nginx/unifi-inform.log;
|
|
||||||
error_log /var/log/nginx/unifi-inform.error.log;
|
|
||||||
|
|
||||||
location / {
|
|
||||||
# Definindo os cabeçalhos manualmente aqui também para consistência
|
|
||||||
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;
|
|
||||||
|
|
||||||
proxy_read_timeout 600s;
|
|
||||||
proxy_send_timeout 600s;
|
|
||||||
proxy_pass http://unifi_backend_inform;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue