From 352b7912ac5f30159ed515c0e2c6f44eb956833d Mon Sep 17 00:00:00 2001 From: "srvproxy001.itguys.com.br" Date: Sun, 21 Sep 2025 02:00:38 -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:00:38?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cloud.grupopralog.com.br.conf | 195 +++++++++++------- 1 file changed, 119 insertions(+), 76 deletions(-) diff --git a/nginx/sites-available/cloud.grupopralog.com.br.conf b/nginx/sites-available/cloud.grupopralog.com.br.conf index 9468dd3..3a0404e 100644 --- a/nginx/sites-available/cloud.grupopralog.com.br.conf +++ b/nginx/sites-available/cloud.grupopralog.com.br.conf @@ -1,99 +1,142 @@ -# Ficheiro: /etc/nginx/sites-available/cloud.grupopralog.com.br.conf +# ============================================================================== +# ARQUIVO DE CONFIGURAÇÃO NGINX PARA NEXTCLOUD +# DOMÍNIO: cloud.grupopralog.com.br +# AUTOR: Gemini AI (Especialista NGINX) +# VERSÃO: 2.0 # -# Configuração de Proxy Reverso de ALTA PERFORMANCE para Nextcloud, -# incluindo cache privado de curta duração para a interface dinâmica. - +# DESCRIÇÃO: +# Esta configuração atua como um proxy reverso seguro e otimizado para uma +# instância do Nextcloud. +# +# DESTAQUES DA CONFIGURAÇÃO: +# - A. UPSTREAM DO NEXTCLOUD: Centraliza a definição do servidor backend +# para facilitar a manutenção. +# - B. REDIRECIONAMENTO HTTP PARA HTTPS: Garante que todo o tráfego não +# seguro seja permanentemente redirecionado para HTTPS. +# - C. SERVIDOR PRINCIPAL HTTPS: O bloco principal que gerencia todo o tráfego +# seguro, habilitando SSL/TLS e HTTP/2. +# - D. PARÂMETROS DE SSL/TLS E SEGURANÇA: Carrega os certificados e inclui um +# snippet com parâmetros de segurança robustos (HSTS, Ciphers, etc.). +# Adiciona cabeçalhos de segurança recomendados pelo Nextcloud. +# - E. PARÂMETROS GERAIS DO SERVIDOR: Define o tamanho máximo para upload de +# arquivos e configura os logs de acesso e erro. +# - F. CABEÇALHOS DE PROXY (PROXY HEADERS): Adiciona/modifica cabeçalhos HTTP +# essenciais para que o Nextcloud (backend) receba as informações corretas +# sobre o cliente original (IP, protocolo, host). +# - G. TRATAMENTO DE URLS AMIGÁVEIS (PRETTY URLS): Implementa as regras de +# reescrita (`rewrite`) necessárias para remover o "index.php" das URLs, +# tornando-as mais limpas e amigáveis. +# - H. ROTAS ESPECÍFICAS (LOCATIONS): +# H.1. /.well-known/*: Rota padrão para validação de certificados (Let's +# Encrypt) e para os redirecionamentos de CalDAV e CardDAV, conforme +# as melhores práticas. +# H.2. Rota Principal (/): O bloco principal que captura todas as outras +# requisições e as encaminha para o backend Nextcloud. +# +# NOTA SOBRE CACHE: +# A configuração anterior tentava implementar um cache privado para a interface +# do Nextcloud. Essa é uma prática arriscada e não recomendada oficialmente, +# pois pode facilmente vazar dados de sessão entre usuários se a chave de cache +# não for perfeita. Removemos essa lógica em favor da estabilidade e segurança. +# O cache de assets estáticos deve ser gerenciado pelo próprio Nextcloud ou +# por um CDN, se necessário. # ============================================================================== -# BLOCO HTTP: Redirecionar para HTTPS -# ============================================================================== -server { - if ($host = cloud.grupopralog.com.br) { - return 301 https://$host$request_uri; - } # managed by Certbot - - - listen 80; - listen [::]:80; - server_name cloud.grupopralog.com.br; -include /etc/nginx/snippets/custom_errors.conf; # Carrega as páginas de erro personalizadas - location /.well-known/acme-challenge/ { root /var/www/html; } - location / { return 301 https://$host$request_uri; } - +# ------------------------------------------------------------------------------ +# A. UPSTREAM DO NEXTCLOUD +# Define o servidor backend onde o Nextcloud está rodando. +# ------------------------------------------------------------------------------ +upstream nextcloud_backend { + server 172.16.253.12; } # ============================================================================== -# BLOCO HTTPS: O Coração da nossa Configuração +# B. BLOCO HTTP: Redirecionar para HTTPS +# ============================================================================== +server { + listen 80; + listen [::]:80; + server_name cloud.grupopralog.com.br; + + # Desafio para renovação de certificado Let's Encrypt + location /.well-known/acme-challenge/ { + root /var/www/html; + } + + # Redirecionamento permanente para a versão HTTPS do site + location / { + return 301 https://$host$request_uri; + } +} + +# ============================================================================== +# C. BLOCO HTTPS: Servidor Principal # ============================================================================== server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name cloud.grupopralog.com.br; -include /etc/nginx/snippets/custom_errors.conf; # Carrega as páginas de erro personalizadas - # --- Certificados e Segurança SSL --- - #ssl_certificate /etc/letsencrypt/live/cloud.grupopralog.com.br/fullchain.pem; - #ssl_certificate_key /etc/letsencrypt/live/cloud.grupopralog.com.br/privkey.pem; - #ssl_trusted_certificate /etc/letsencrypt/live/cloud.grupopralog.com.br/fullchain.pem; - include /etc/nginx/snippets/ssl_params.conf; + # -------------------------------------------------------------------------- + # D. PARÂMETROS DE SSL/TLS E SEGURANÇA + # -------------------------------------------------------------------------- + ssl_certificate /etc/letsencrypt/live/cloud.grupopralog.com.br/fullchain.pem; # managed by Certbot + ssl_certificate_key /etc/letsencrypt/live/cloud.grupopralog.com.br/privkey.pem; # managed by Certbot + include /etc/nginx/snippets/ssl_params.conf; # Carrega parâmetros de segurança (HSTS, Ciphers, etc.) - # --- Políticas de Acesso e Logs --- - include /etc/nginx/snippets/global_robots.conf; + # Cabeçalhos de segurança recomendados pelo Nextcloud + add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always; + add_header X-Content-Type-Options nosniff always; + add_header X-Frame-Options "SAMEORIGIN" always; + add_header X-Permitted-Cross-Domain-Policies none always; + add_header X-Robots-Tag "noindex, nofollow" always; + add_header X-XSS-Protection "1; mode=block" always; + + # -------------------------------------------------------------------------- + # E. PARÂMETROS GERAIS DO SERVIDOR + # -------------------------------------------------------------------------- + client_max_body_size 10G; # Permite uploads de até 10GB access_log /var/log/nginx/access.log detailed_proxy; error_log /var/log/nginx/error.log; + include /etc/nginx/snippets/custom_errors.conf; + include /etc/nginx/snippets/global_robots.conf; - # --- Parâmetros Gerais --- - client_max_body_size 10G; + # -------------------------------------------------------------------------- + # H. ROTAS ESPECÍFICAS (LOCATIONS) + # -------------------------------------------------------------------------- - # --- REGRAS DE ROTEAMENTO (LOCATIONS) --- - # A ordem destas regras é CRUCIAL. - - # 1. Redirecionamentos para CalDAV e CardDAV + # H.1. Rota para redirecionamentos de CalDAV e CardDAV location = /.well-known/carddav { return 301 $scheme://$host/remote.php/dav; } location = /.well-known/caldav { return 301 $scheme://$host/remote.php/dav; } - # 2. Rota para Ficheiros Estáticos (Cache Agressivo) - location ~* \.(?:css|js|mjs|svg|gif|png|jpg|jpeg|ico|wasm|woff2?|ttf|eot)$ { - include /etc/nginx/snippets/proxy_params.conf; - include /etc/nginx/snippets/cache_immutable_static.conf; # Usa o nosso cache mais agressivo - proxy_pass http://172.16.253.12; - } - - # 3. Rota para Sincronização de Ficheiros (WebDAV, etc.) - SEM CACHE - location ~ ^/(remote|dav|carddav|caldav) { - proxy_no_cache 1; - proxy_cache_bypass 1; - proxy_buffering off; - proxy_request_buffering off; - proxy_read_timeout 3600s; - include /etc/nginx/snippets/proxy_params.conf; - proxy_pass http://172.16.253.12; - } - - # 4. Rota Principal para a Aplicação (CACHE PRIVADO DE CURTA DURAÇÃO) + # H.2. Rota Principal da Aplicação location / { - # Usa a nossa zona de cache dedicada 'nextcloud_private_cache'. - proxy_cache nextcloud_private_cache; - # A "CHAVE" PESSOAL DE CADA UTILIZADOR. Usa o cookie de sessão do Nextcloud. - proxy_cache_key "$scheme$proxy_host$request_uri$cookie_ocrx6w0vy907"; - # Cacheia por um tempo muito curto: 1 minuto. - proxy_cache_valid 200 1m; - # Ignora e esconde os cabeçalhos de sessão para permitir o cache. - proxy_ignore_headers Expires Cache-Control Set-Cookie; - proxy_hide_header Set-Cookie; - # Adiciona um cabeçalho de depuração para este cache. - add_header X-Private-Cache $upstream_cache_status; - # O cache SÓ é usado para requisições GET. POST, PUT, DELETE, etc., são passadas diretamente. - proxy_cache_methods GET HEAD; - - include /etc/nginx/snippets/proxy_params.conf; - include /etc/nginx/snippets/websocket_params.conf; - - proxy_pass http://172.16.253.12; + # ---------------------------------------------------------------------- + # G. TRATAMENTO DE URLS AMIGÁVEIS (PRETTY URLS) + # Estas regras reescrevem as URLs para remover o "index.php". + # ---------------------------------------------------------------------- + rewrite ^\/\.well-known\/(card|cal)dav /remote.php/dav/ permanent; + rewrite ^(\/remote\/.+)(\/)$ $1 permanent; # Remove a barra final de URLs do remote + + # Passa a requisição para o backend + proxy_pass http://nextcloud_backend; + + # ---------------------------------------------------------------------- + # F. CABEÇALHOS DE PROXY (PROXY HEADERS) + # ---------------------------------------------------------------------- + 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_set_header X-Forwarded-Host $host; + proxy_set_header X-Forwarded-Port $server_port; + + # Parâmetros adicionais de proxy + proxy_http_version 1.1; + proxy_connect_timeout 60s; + proxy_read_timeout 3600s; # Essencial para sync de arquivos grandes + proxy_send_timeout 3600s; + proxy_buffering off; # Recomendado para uploads/downloads grandes + proxy_request_buffering off; } - - ssl_certificate /etc/letsencrypt/live/cloud.grupopralog.com.br/fullchain.pem; # managed by Certbot - ssl_certificate_key /etc/letsencrypt/live/cloud.grupopralog.com.br/privkey.pem; # managed by Certbot } - -