diff --git a/nginx/sites-available/cloud.grupopralog.com.br.conf b/nginx/sites-available/cloud.grupopralog.com.br.conf index a9ae43f..b0990c9 100644 --- a/nginx/sites-available/cloud.grupopralog.com.br.conf +++ b/nginx/sites-available/cloud.grupopralog.com.br.conf @@ -1,7 +1,7 @@ # Ficheiro: /etc/nginx/sites-available/cloud.grupopralog.com.br.conf # # Configuração de Proxy Reverso de ALTA PERFORMANCE para Nextcloud, -# incluindo cache privado e de curta duração para a interface. +# incluindo cache agressivo para ficheiros estáticos e para as miniaturas (previews). # ============================================================================== # BLOCO HTTP: Redirecionar para HTTPS @@ -37,19 +37,44 @@ server { client_max_body_size 10G; # --- REGRAS DE ROTEAMENTO (LOCATIONS) --- + # A ordem destas regras é CRUCIAL. # 1. Redirecionamentos para 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) + # 2. Bloqueia o acesso a diretórios sensíveis. + location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ { deny all; } + location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { deny all; } + + # --- A NOVA REGRA DE CACHE PARA PREVIEWS --- + # 3. Rota para as Miniaturas de Ficheiros (Cache Agressivo) + location = /index.php/core/preview { + # Usa a nossa nova zona de cache dedicada para as miniaturas. + proxy_cache nextcloud_previews; + # A chave de cache inclui todos os argumentos da URL (fileId, x, y, etc.) + proxy_cache_key "$scheme$proxy_host$request_uri"; + # Define que as miniaturas válidas ficam no cache por 24 horas. + proxy_cache_valid 200 24h; + # Ativa o cache para esta localização. + proxy_no_cache 0; + proxy_cache_bypass 0; + + # Adiciona um cabeçalho para podermos depurar este cache. + add_header X-Preview-Cache $upstream_cache_status; + + include /etc/nginx/snippets/proxy_params.conf; + proxy_pass http://172.16.253.12; + } + + # 4. 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_static_assets.conf; proxy_pass http://172.16.253.12; } - # 3. Rota para Sincronização de Ficheiros (WebDAV, etc.) - SEM CACHE + # 5. Rota para Sincronização de Ficheiros (WebDAV, etc.) - SEM CACHE location ~ ^/(remote|dav|carddav|caldav) { proxy_no_cache 1; proxy_cache_bypass 1; @@ -60,33 +85,12 @@ server { proxy_pass http://172.16.253.12; } - # 4. Rota Principal para a Aplicação (CACHE PRIVADO DE CURTA DURAÇÃO) + # 6. Rota Principal para a Aplicação (SEM CACHE, com WebSockets) location / { - # Usa a nossa zona de cache dedicada 'nextcloud_private_cache'. - proxy_cache nextcloud_private_cache; - - # A "CHAVE" PESSOAL DE CADA UTILIZADOR, CONFIRMADA A PARTIR DO SEU SCREENSHOT. - # Usa a variável $cookie_NOME_DO_COOKIE para extrair o valor. - 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; - + proxy_no_cache 1; + proxy_cache_bypass 1; include /etc/nginx/snippets/proxy_params.conf; include /etc/nginx/snippets/websocket_params.conf; - proxy_pass http://172.16.253.12; } } - -