From abce8340cc235df0519dc11fd3039126cf92559f Mon Sep 17 00:00:00 2001 From: "srvproxy001.itguys.com.br" Date: Tue, 30 Sep 2025 16:27:16 -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-30=2016:27:16?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business.itguys.com.br.conf | 39 +++++++++++++++---- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/nginx/sites-available/business.itguys.com.br.conf b/nginx/sites-available/business.itguys.com.br.conf index ff7b7f5..92d1ed2 100644 --- a/nginx/sites-available/business.itguys.com.br.conf +++ b/nginx/sites-available/business.itguys.com.br.conf @@ -2,16 +2,15 @@ # ARQUIVO: business.itguys.com.br # AUTOR: Gemini (Especialista NGINX) # DATA: 27/09/2025 - 17:22 -# VERSÃO: 2.0 (Hardening de Segurança e Padronização com Políticas Globais) +# VERSÃO: 2.1 (Ajuste de Upload) # # DESCRIÇÃO: -# Mantém as otimizações de performance (Preconnect, Cache) e implementa as -# políticas globais de segurança (Rate Limit, Bot Block). Corrige a vulnerabilidade -# de verificação de SSL do backend e padroniza logs e diretivas TLS. +# Adicionado bloco de location específico para tratar uploads, aplicando as regras +# de tipo de arquivo definidas no mapa global. # ================================================================================================= # ============================================================================== -# BLOCO 1: Redirecionamento de HTTP para HTTPS +# BLOCO 0: Mapeamento de Tipos de Arquivo para Upload # ============================================================================== map $http_content_type $allowed_upload { default 0; # Bloqueia tudo por padrão @@ -23,6 +22,9 @@ map $http_content_type $allowed_upload { "image/png" 1; } +# ============================================================================== +# BLOCO 1: Redirecionamento de HTTP para HTTPS +# ============================================================================== server { if ($host = autolab.itguys.com.br) { return 301 https://$host$request_uri; @@ -83,7 +85,6 @@ server { add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always; add_header X-Frame-Options "SAMEORIGIN" always; add_header X-Content-Type-Options "nosniff" always; - # ADICIONADO: CSP para segurança moderna, permitindo recursos externos necessários. add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://cdn.jsdelivr.net; style-src 'self' https://cdn.jsdelivr.net; font-src https://cdn.jsdelivr.net; object-src 'none';" always; # --- Otimização de Carregamento (Preconnect e Preload) --- @@ -106,9 +107,7 @@ server { keepalive_requests 1000; # --- Estratégia de Cache Segura --- - # IMPORTANTE: Substitua 'seu_cookie_de_sessao' pelo nome real do cookie de sessão da sua aplicação. set $session_cookie_name "seu_cookie_de_sessao"; - proxy_cache business_cache; add_header X-Proxy-Cache $upstream_cache_status; proxy_cache_key "$scheme$request_method$host$request_uri$cookie_$session_cookie_name"; @@ -128,6 +127,24 @@ server { proxy_read_timeout 90s; # --- REGRAS DE ROTEAMENTO (LOCATIONS) --- + + # ============================================================================== + # NOVO BLOCO: Tratamento específico para o endpoint de Upload + # IMPORTANTE: Adapte "/api/upload/" para o caminho real da sua aplicação. + # ============================================================================== + location /api/upload/ { + # Primeiro, verifica se o tipo de arquivo é permitido + if ($allowed_upload = 0) { + # Se não for, registra em um log específico e retorna erro 415 + access_log /var/log/nginx/business.itguys.com.br.upload-blocked.log; + return 415; # 415 Unsupported Media Type + } + + # Se o arquivo for permitido, a requisição segue para o backend + add_header Cache-Control "no-cache, no-store, must-revalidate"; + proxy_pass https://172.16.121.13; + } + location ~* \.(?:css|js|mjs|svg|gif|png|jpg|jpeg|ico|webp|wasm|woff2?|ttf|eot)$ { proxy_ignore_headers Cache-Control Expires; proxy_cache_valid 200 60m; @@ -137,6 +154,12 @@ server { proxy_pass https://172.16.121.13; } + # Uploads (arquivos estáticos do backend) + location /uploads/ { + alias /var/www/html/Ambiente_de_Testes/Oficina/Backend/business/ambiente_python/uploads; + autoindex off; + } + location / { add_header Cache-Control "no-cache, no-store, must-revalidate"; proxy_pass https://172.16.121.13;