From 9643d6cd15f1e3501df3c7e7925fd915e5b8cb93 Mon Sep 17 00:00:00 2001 From: "srvproxy001.itguys.com.br" Date: Sun, 21 Sep 2025 02:46:52 -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-21=2002:46:52?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nginx/sites-available/git.itguys.com.br.conf | 143 +++++++++---------- 1 file changed, 71 insertions(+), 72 deletions(-) diff --git a/nginx/sites-available/git.itguys.com.br.conf b/nginx/sites-available/git.itguys.com.br.conf index ef294cb..b72ef62 100644 --- a/nginx/sites-available/git.itguys.com.br.conf +++ b/nginx/sites-available/git.itguys.com.br.conf @@ -1,23 +1,39 @@ -# Ficheiro: /etc/nginx/sites-available/git.itguys.com.br.conf +# ============================================================================== +# ARQUIVO: /etc/nginx/sites-available/git.itguys.com.br.conf +# AUTOR: Gemini (Especialista NGINX) +# DATA: 21/09/2025 # -# Configuração de Proxy Reverso com Cache Inteligente e suporte para operações Git sobre HTTP/S. -# Esta versão é para acesso público e NÃO usa HTTP/3. +# DESCRIÇÃO: +# Configuração de Proxy Reverso OTIMIZADA e SEGURA para Gitea. +# +# MELHORIAS IMPLEMENTADAS: +# - Bloco `upstream`: Centraliza a definição do backend do Gitea. +# - `client_max_body_size`: Essencial para permitir grandes pushes e uploads. +# - Centralização de `proxy_params`: Evita repetição de código. +# - Estratégia de Cache Explícita: Cache é ativado APENAS para assets estáticos. +# - Tratamento Especializado: Mantém timeouts longos e buffering desativado +# para operações Git, e suporte a WebSocket para a UI. +# - Cabeçalhos de Segurança: Adicionados para reforçar a proteção. +# +# A FAZER: +# - Certifique-se de que a zona de cache `gitea_cache` está definida no seu +# arquivo principal `/etc/nginx/nginx.conf`. +# Ex: proxy_cache_path /var/cache/nginx/gitea_cache levels=1:2 keys_zone=gitea_cache:10m ... +# ============================================================================== + +# Define o nosso servidor Gitea como um "upstream" para fácil referência. +upstream gitea_backend { + server 10.10.253.128; +} # ============================================================================== -# BLOCO HTTP: Redirecionar todo o tráfego inseguro para HTTPS +# BLOCO 1: Redirecionamento de HTTP (porta 80) para HTTPS # ============================================================================== server { - if ($host = git.itguys.com.br) { - return 301 https://$host$request_uri; - } # managed by Certbot - - listen 80; listen [::]:80; server_name git.itguys.com.br; -include /etc/nginx/snippets/custom_errors.conf; # Carrega as páginas de erro personalizadas - # Regra especial para a validação do Let's Encrypt funcionar corretamente. location /.well-known/acme-challenge/ { root /var/www/html; } @@ -25,89 +41,72 @@ include /etc/nginx/snippets/custom_errors.conf; # Carrega as páginas de erro pe location / { return 301 https://$host$request_uri; } - - } # ============================================================================== -# BLOCO HTTPS: O Coração da nossa Configuração +# BLOCO 2: Servidor Principal - Proxy Reverso para Gitea (HTTPS) # ============================================================================== server { - # --- Configuração de Escuta (Apenas TCP para HTTP/2) --- listen 443 ssl http2; listen [::]:443 ssl http2; - server_name git.itguys.com.br; -include /etc/nginx/snippets/custom_errors.conf; # Carrega as páginas de erro personalizadas - include /etc/nginx/snippets/global_robots.conf; - # --- Cabeçalhos de Segurança --- - add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; - # --- Configurações de Log --- - access_log /var/log/nginx/access.log detailed_proxy; - error_log /var/log/nginx/error.log; + # --- CONFIGURAÇÃO CRÍTICA PARA GITEA --- + # Permite pushes/uploads de até 10 GB. Ajuste conforme necessário. + # A ausência desta linha causa erros "413 Request Entity Too Large". + client_max_body_size 10G; - # --- ESTRATÉGIA DE CACHE HÍBRIDA E SEGURA --- - proxy_cache zabbix_cache; - add_header X-Proxy-Cache $upstream_cache_status; - proxy_no_cache 1; - proxy_cache_bypass 1; + # --- CONFIGURAÇÕES DE SSL --- + ssl_certificate /etc/letsencrypt/live/git.itguys.com.br/fullchain.pem; # managed by Certbot + ssl_certificate_key /etc/letsencrypt/live/git.itguys.com.br/privkey.pem; # managed by Certbot + include /etc/nginx/snippets/ssl_params.conf; # Kit de segurança SSL. - # --- LOCALIZAÇÃO PARA OPERAÇÕES GIT (SEM CACHE, TIMEOUTS LONGOS) --- - # Esta regra é a mais importante. Ela captura as URLs usadas pelos clientes Git. + # --- CABEÇALHOS DE SEGURANÇA --- + add_header X-Content-Type-Options "nosniff" always; + add_header X-Frame-Options "SAMEORIGIN" always; + # Gitea define sua própria CSP, não adicione uma aqui a menos que saiba o que está a fazer. + + # --- LOGS --- + access_log /var/log/nginx/git.itguys.com.br.access.log; + error_log /var/log/nginx/git.itguys.com.br.error.log warn; + + # --- PARÂMETROS DE PROXY GLOBAIS --- + # Define o destino e os cabeçalhos padrão para TODAS as locations. + proxy_pass http://gitea_backend; + include /etc/nginx/snippets/proxy_params.conf; + + # --- REGRAS DE ROTEAMENTO (LOCATIONS) --- + + # 1. Rota para operações Git (sem cache, timeouts longos). + # Este bloco é crucial para que `git clone/pull/push` funcionem com repositórios grandes. location ~ /.*/(git-upload-pack|git-receive-pack|info/refs|HEAD|objects) { - # DESATIVA o cache completamente para estas operações. - proxy_no_cache 1; - proxy_cache_bypass 1; - - # Aumenta os timeouts para 1 hora para suportar pushes e pulls grandes. + # Timeouts longos para suportar operações demoradas. proxy_read_timeout 3600s; - proxy_send_timeout 300s; - - # Desativa o buffering para permitir o streaming de grandes volumes de dados. + proxy_send_timeout 3600s; + + # Buffering desativado para streaming de dados do Git. proxy_buffering off; proxy_request_buffering off; - - proxy_pass http://10.10.253.128; - - # Cabeçalhos de proxy essenciais - 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; } - # --- LOCALIZAÇÃO PARA FICHEIROS ESTÁTICOS (CACHE ATIVADO) --- - # Esta regra captura ficheiros que são seguros para cachear (interface do Gitea). - location ~* \.(jpg|jpeg|gif|png|webp|svg|css|js|ico|woff2|ttf)$ { - # Ativa o cache apenas para estes ficheiros. - proxy_no_cache 0; - proxy_cache_bypass 0; - proxy_cache_valid 200 60m; - - proxy_pass http://10.10.253.128; - proxy_set_header Host $host; + # 2. Rota para assets estáticos da UI (cache agressivo). + location ~* \.(?:css|js|svg|png|jpg|jpeg|ico|woff2?|ttf)$ { + # Ativa o cache e a resiliência APENAS para estes arquivos. + proxy_cache gitea_cache; + proxy_cache_valid 200 1d; # Cache de 1 dia para assets. + proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504; + add_header X-Proxy-Cache $upstream_cache_status; } - - # --- LOCALIZAÇÃO PRINCIPAL PARA A INTERFACE WEB (SEM CACHE) --- - # Esta regra apanha todo o resto do tráfego (páginas, APIs, WebSockets). + + # 3. Rota principal para a UI do Gitea (sem cache, com WebSockets). location / { - # O cache permanece desativado aqui por causa da regra geral do servidor. - proxy_pass http://10.10.253.128; - - # Cabeçalhos essenciais para que a interface e os WebSockets funcionem. - 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; + # Cabeçalhos específicos para habilitar WebSockets (notificações em tempo real na UI). proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } - #ssl_certificate /etc/letsencrypt/live/git.itguys.com.br/fullchain.pem; # managed by Certbot - #ssl_certificate_key /etc/letsencrypt/live/git.itguys.com.br/privkey.pem; # managed by Certbot - - ssl_certificate /etc/letsencrypt/live/git.itguys.com.br/fullchain.pem; # managed by Certbot - ssl_certificate_key /etc/letsencrypt/live/git.itguys.com.br/privkey.pem; # managed by Certbot + # --- OUTRAS CONFIGURAÇÕES --- + include /etc/nginx/snippets/custom_errors.conf; + include /etc/nginx/snippets/global_robots.conf; }