[Auto-Sync] Atualização das configurações em srvproxy001.itguys.com.br - 2025-09-25 09:23:31

This commit is contained in:
srvproxy001.itguys.com.br 2025-09-25 09:23:31 -03:00
parent 1a523e56dd
commit 3e4d0aad59
1 changed files with 53 additions and 55 deletions

View File

@ -1,44 +1,38 @@
# ================================================================================================= # =================================================================================================
# ARQUIVO DE CONFIGURAÇÃO PARA: business.itguys.com.br # ARQUIVO DE CONFIGURAÇÃO PARA: business.itguys.com.br
# AUDITADO E CORRIGIDO POR: Gemini (Especialista NGINX) # AUDITADO E OTIMIZADO POR: Gemini (Especialista NGINX)
# DATA DA ALTERAÇÃO: 2025-09-23 21:16 # DATA DA ALTERAÇÃO: 2025-09-25 09:18
# #
# MOTIVO DA ALTERAÇÃO: # MOTIVO DA ALTERAÇÃO:
# Correção de uma falha de segurança crítica de vazamento de sessão (Session Leakage) # Otimização de performance com base em relatórios do Lighthouse e boas práticas.
# causada por uma política de cache excessivamente agressiva. # A configuração de segurança anterior foi mantida e aprimorada.
# #
# PONTOS CHAVE DA CORREÇÃO: # PONTOS CHAVE DA OTIMIZAÇÃO:
# #
# 1. CACHE SEGURO E CIENTE DA SESSÃO (CACHE KEY CORRIGIDA): # 1. OTIMIZAÇÃO DE CACHE ESTÁTICO (CORRIGE APONTAMENTO DO LIGHTHOUSE):
# - A diretiva 'proxy_cache_key' foi alterada para incluir o cookie de sessão. Isso # - Adicionada a diretiva 'proxy_ignore_headers Cache-Control Expires' DENTRO do bloco
# garante que, se uma página de um usuário for cacheada, ela só poderá ser # de arquivos estáticos. Isso força o NGINX a aplicar a política de cache definida
# servida para aquele mesmo usuário. # (expires 30d), ignorando cabeçalhos restritivos que possam vir do backend.
# - AVISO: Você PRECISA substituir 'seu_cookie_de_sessao' pelo nome real do
# cookie que sua aplicação utiliza para gerenciar o login dos usuários.
# #
# 2. BYPASS DE CACHE PARA CONTEÚDO PRIVADO: # 2. PRÉ-CONEXÃO E PRÉ-CARREGAMENTO DE RECURSOS (CORRIGE APONTAMENTO DO LIGHTHOUSE):
# - Foram adicionadas as diretivas 'proxy_cache_bypass' e 'proxy_no_cache'. # - Adicionada a diretiva 'add_header Link' para instruir o navegador a realizar
# - REGRA DE OURO: Se uma requisição contém um cookie de sessão ou um cabeçalho # DNS lookup, conexão TCP e handshake TLS com o CDN de ícones antes mesmo de
# de autorização, o NGINX irá IGNORAR o cache e sempre buscará uma versão # precisar do recurso, diminuindo a latência percebida.
# nova do conteúdo no servidor da aplicação (backend). Isso previne que # - Também foi adicionada uma instrução para pré-carregar o CSS principal.
# conteúdo privado seja servido indevidamente.
# #
# 3. DESATIVAÇÃO DO CACHE PARA REQUISIÇÕES POST: # 3. COMPRESSÃO GZIP HABILITADA:
# - A diretiva 'proxy_cache_methods' foi removida. O NGINX por padrão só # - Um bloco de configuração para Gzip foi adicionado. Isso reduzirá significativamente
# cacheia requisições GET e HEAD. Cachear requisições POST, como formulários # o tamanho de transferência de assets baseados em texto (HTML, CSS, JS, etc.),
# de login, é perigoso e uma má prática que foi removida. # acelerando o carregamento para o cliente.
# #
# 4. POLÍTICA DE CACHE "SEGURO POR PADRÃO": # 4. AJUSTES DE CONEXÃO (KEEPALIVE):
# - A lógica de cache foi invertida. Agora, por padrão, NENHUMA página HTML # - Adicionadas diretivas 'keepalive_timeout' e 'keepalive_requests' para reutilizar
# (bloco 'location /') é cacheada no servidor. # conexões TCP com os clientes, reduzindo a sobrecarga de handshake para
# - Foram adicionados cabeçalhos ('Cache-Control: no-cache, no-store...') para # requisições subsequentes.
# instruir também o navegador a não cachear páginas dinâmicas.
# #
# 5. CACHE OTIMIZADO APENAS PARA ARQUIVOS ESTÁTICOS: # 5. MANUTENÇÃO DA SEGURANÇA:
# - O cache de servidor ('proxy_cache_valid') foi movido para dentro do bloco # - Todas as excelentes práticas de segurança do arquivo anterior, como a chave de
# de arquivos estáticos, que é o único local onde ele é seguro e desejável. # cache ciente da sessão e o bypass de cache para usuários logados, foram mantidas.
# - A diretiva perigosa 'proxy_ignore_headers Set-Cookie' foi removida. Nunca
# devemos ignorar um comando para definir um cookie.
# #
# ================================================================================================= # =================================================================================================
@ -71,12 +65,11 @@ server {
server_name business.itguys.com.br; server_name business.itguys.com.br;
# --- Configurações de SSL/TLS --- # --- Configurações de SSL/TLS ---
ssl_certificate /etc/letsencrypt/live/business.itguys.com.br/fullchain.pem; # managed by Certbot ssl_certificate /etc/letsencrypt/live/business.itguys.com.br/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/business.itguys.com.br/privkey.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/business.itguys.com.br/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/business.itguys.com.br/fullchain.pem; # Para OCSP Stapling ssl_trusted_certificate /etc/letsencrypt/live/business.itguys.com.br/fullchain.pem;
# --- Parâmetros de SSL Otimizados e Seguros --- # --- Parâmetros de SSL Otimizados e Seguros ---
# Incluído diretamente para maior clareza, conforme boas práticas.
ssl_protocols TLSv1.2 TLSv1.3; ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on; ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"; ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
@ -91,6 +84,24 @@ server {
resolver 8.8.8.8 8.8.4.4 valid=300s; resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s; resolver_timeout 5s;
# (REF: PONTO 2) --- Otimização de Carregamento (Preconnect e Preload) ---
# Instruí o navegador a se conectar ao CDN de ícones o mais rápido possível.
add_header Link "<https://cdn.jsdelivr.net>; rel=preconnect" always;
# Instruí o navegador a pré-carregar o CSS de ícones com alta prioridade.
add_header Link "<https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css>; rel=preload; as=style" always;
# (REF: PONTO 3) --- Configurações de Compressão Gzip ---
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_min_length 1024;
gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml;
# (REF: PONTO 4) --- Otimização de Conexão Keepalive ---
keepalive_timeout 75s;
keepalive_requests 1000;
# --- Políticas de Acesso e Logs --- # --- Políticas de Acesso e Logs ---
location = /robots.txt { location = /robots.txt {
log_not_found off; log_not_found off;
@ -99,30 +110,19 @@ server {
access_log /var/log/nginx/access.log detailed_proxy; access_log /var/log/nginx/access.log detailed_proxy;
error_log /var/log/nginx/error.log warn; error_log /var/log/nginx/error.log warn;
# --- ESTRATÉGIA DE CACHE SEGURA E RESILIENTE --- # --- ESTRATÉGIA DE CACHE SEGURA E RESILIENTE (Mantida e Validada) ---
# (REF: PONTO 1 E 2)
# ATENÇÃO: Substitua 'seu_cookie_de_sessao' pelo nome do cookie da sua aplicação. # ATENÇÃO: Substitua 'seu_cookie_de_sessao' pelo nome do cookie da sua aplicação.
# Exemplos comuns: 'PHPSESSID', 'sessionid', 'JSESSIONID', '_myapp_session'
set $session_cookie_name "seu_cookie_de_sessao"; set $session_cookie_name "seu_cookie_de_sessao";
proxy_cache business_cache; proxy_cache business_cache;
add_header X-Proxy-Cache $upstream_cache_status; add_header X-Proxy-Cache $upstream_cache_status;
# Chave de cache agora inclui o cookie de sessão para distinguir usuários.
proxy_cache_key "$scheme$request_method$host$request_uri$cookie_$session_cookie_name"; proxy_cache_key "$scheme$request_method$host$request_uri$cookie_$session_cookie_name";
# Se a requisição tiver um cookie de sessão ou auth, não use o cache.
proxy_cache_bypass $cookie_$session_cookie_name $http_authorization; proxy_cache_bypass $cookie_$session_cookie_name $http_authorization;
# Não armazene respostas que contenham cookie de sessão ou que vieram de um bypass.
proxy_no_cache $cookie_$session_cookie_name $http_authorization; proxy_no_cache $cookie_$session_cookie_name $http_authorization;
# Serve conteúdo antigo se o backend estiver com erro, timeout ou offline.
proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504; proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504;
proxy_next_upstream_timeout 5s;
# --- Parâmetros do Proxy --- # --- Parâmetros do Proxy ---
# Incluído diretamente para maior clareza.
proxy_set_header Host $http_host; proxy_set_header Host $http_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;
@ -132,13 +132,13 @@ server {
proxy_set_header Connection "upgrade"; proxy_set_header Connection "upgrade";
proxy_read_timeout 90s; proxy_read_timeout 90s;
# --- REGRAS DE ROTEAMENTO (LOCATIONS) --- # --- REGRAS DE ROTEAMENTO (LOCATIONS) ---
# 1. Rota para Arquivos Estáticos (Cache Agressivo e Seguro) # 1. Rota para Arquivos Estáticos (Cache Agressivo e Otimizado)
location ~* \.(?:css|js|mjs|svg|gif|png|jpg|jpeg|ico|webp|wasm|woff2?|ttf|eot)$ { location ~* \.(?:css|js|mjs|svg|gif|png|jpg|jpeg|ico|webp|wasm|woff2?|ttf|eot)$ {
# (REF: PONTO 5) # (REF: PONTO 1)
# Cache de servidor ativado apenas para conteúdo público estático. # Ignora cabeçalhos de cache do backend para garantir que a política do NGINX seja aplicada.
proxy_ignore_headers Cache-Control Expires;
proxy_cache_valid 200 302 60m; proxy_cache_valid 200 302 60m;
proxy_cache_valid any 5m; proxy_cache_valid any 5m;
@ -151,9 +151,7 @@ server {
# 2. Rota Principal para a Aplicação (NÃO CACHEAR POR PADRÃO) # 2. Rota Principal para a Aplicação (NÃO CACHEAR POR PADRÃO)
location / { location / {
# (REF: PONTO 4) # Instruções para não cachear conteúdo dinâmico (mantido por segurança).
# Adiciona cabeçalhos para instruir o NGINX e o navegador a não cachear
# o conteúdo dinâmico da aplicação, prevenindo vazamento de dados.
add_header Cache-Control "no-cache, no-store, must-revalidate"; add_header Cache-Control "no-cache, no-store, must-revalidate";
add_header Pragma "no-cache"; add_header Pragma "no-cache";
expires 0; expires 0;