From d11b7f055afa158e4a4afa6ec34950f6e6381add Mon Sep 17 00:00:00 2001 From: "srvproxy001.itguys.com.br" Date: Sun, 7 Dec 2025 07:00:53 -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-12-07=2007:00:53?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../integra.grupopralog.com.br.conf | 116 ++++++++++++++---- 1 file changed, 93 insertions(+), 23 deletions(-) diff --git a/nginx/sites-available/integra.grupopralog.com.br.conf b/nginx/sites-available/integra.grupopralog.com.br.conf index 31608c1..1d51819 100644 --- a/nginx/sites-available/integra.grupopralog.com.br.conf +++ b/nginx/sites-available/integra.grupopralog.com.br.conf @@ -1,70 +1,140 @@ # Configuração Nginx para o projeto Integra GPL -# Modificado para usar o domínio final e o formato de log customizado. +# Atualizado em: 07/12/2025 +# Contexto: Otimização de segurança (SSL/Headers), Cache estático e Logs +# Autor: Gemini (Thought Partner) upstream integra_gpl_backend { - # O backend da aplicação rodando em outra VM + # Backend da aplicação server 172.16.9.101:8000; + + # Manter conexões vivas com o backend para performance + keepalive 32; } -# Servidor HTTP que redireciona para HTTPS +# Servidor HTTP - Redirecionamento para HTTPS server { listen 80; + listen [::]:80; server_name integra.grupopralog.com.br; - - # Redirecionamento permanente para a versão segura (HTTPS) + + # Segurança: Não expor versão do Nginx + server_tokens off; + location / { return 301 https://$host$request_uri; } } -# Servidor HTTPS principal +# Servidor HTTPS Principal server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name integra.grupopralog.com.br; - # Logs com formato customizado e nome baseado no domínio - access_log /var/log/nginx/integra.grupopralog.com.br.access.log detailed_proxy; - error_log /var/log/nginx/integra.grupopralog.com.br.error.log; + # Segurança: Não expor versão do Nginx + server_tokens off; - # Configuração SSL (caminhos baseados no domínio) + # ---------------------------------------------------------------------- + # Logs + # ---------------------------------------------------------------------- + # Nota: Certifique-se de que o log_format 'detailed_proxy' está definido no nginx.conf principal. + # Caso contrário, altere para 'combined'. + access_log /var/log/nginx/integra.grupopralog.com.br.access.log detailed_proxy; + error_log /var/log/nginx/integra.grupopralog.com.br.error.log warn; + + # ---------------------------------------------------------------------- + # Configuração SSL/TLS Otimizada (Compatibilidade Apple + Segurança) + # ---------------------------------------------------------------------- ssl_certificate /etc/letsencrypt/live/integra.grupopralog.com.br/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/integra.grupopralog.com.br/privkey.pem; + ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; + + # Ciphers recomendados pela Mozilla (Intermediate compatibility) + 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; + + # Otimização de Handshake SSL + ssl_session_timeout 1d; + ssl_session_cache shared:MozSSL:10m; # cerca de 40000 sessões + ssl_session_tickets off; - # Configurações de compactação + # OCSP Stapling (Melhora performance SSL e privacidade) + ssl_stapling on; + ssl_stapling_verify on; + resolver 8.8.8.8 8.8.4.4 valid=300s; + resolver_timeout 5s; + + # ---------------------------------------------------------------------- + # Headers de Segurança (Hardening) + # ---------------------------------------------------------------------- + # HSTS (Habilita HTTPS estrito por 1 ano, inclui subdomínios) + add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; + + # Proteção contra Clickjacking + add_header X-Frame-Options "SAMEORIGIN" always; + + # Proteção contra MIME Sniffing + add_header X-Content-Type-Options "nosniff" always; + + # Proteção XSS básica (para navegadores legados) + add_header X-XSS-Protection "1; mode=block" always; + + # Referrer Policy + add_header Referrer-Policy "strict-origin-when-cross-origin" always; + + # ---------------------------------------------------------------------- + # Compressão (Brotli + Gzip Fallback) + # ---------------------------------------------------------------------- brotli on; brotli_comp_level 6; - brotli_min_length 1024; brotli_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml; 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 text/xml application/xml application/xml+rss text/javascript image/svg+xml; - # Location principal que encaminha tudo para a aplicação - # Sem diretivas de cache explícitas. + # ---------------------------------------------------------------------- + # Configuração de Cache para Arquivos Estáticos + # ---------------------------------------------------------------------- + # Alivia o backend servindo estáticos diretamente com cache no navegador + location ~* \.(jpg|jpeg|gif|png|ico|css|js|svg|woff|woff2|ttf|eot)$ { + proxy_pass http://integra_gpl_backend; + proxy_set_header Host $host; + + # Cache no navegador por 30 dias + expires 30d; + add_header Cache-Control "public, no-transform"; + + # Remove logs de acesso para estáticos (economiza disco/IO) + access_log off; + } + + # ---------------------------------------------------------------------- + # Aplicação Principal + # ---------------------------------------------------------------------- location / { proxy_pass http://integra_gpl_backend; + + # Headers de Proxy 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 WebSockets + + # WebSockets proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; - } - # Bloco para arquivos estáticos - # Sem diretivas de cache explícitas. - location /static/ { - # A compactação já está habilitada globalmente. - alias /app/static/; + # Timeouts e Buffers (Evita 502/504 em cargas maiores) + proxy_connect_timeout 60s; + proxy_send_timeout 60s; + proxy_read_timeout 60s; + proxy_buffer_size 4k; + proxy_buffers 4 32k; + proxy_busy_buffers_size 64k; } }