diff --git a/nginx/sites-available/cloud.grupopralog.com.br.conf b/nginx/sites-available/cloud.grupopralog.com.br.conf index ee360b8..fae5e8f 100644 --- a/nginx/sites-available/cloud.grupopralog.com.br.conf +++ b/nginx/sites-available/cloud.grupopralog.com.br.conf @@ -462,27 +462,31 @@ server { more_set_headers 'Access-Control-Allow-Credentials: true'; } - # --- Rota de WebDAV (PROPFIND com Cache) --- - # Bloco específico para requisições PROPFIND (listagem de arquivos), que são cacheadas. - # O buffering precisa estar LIGADO para o cache funcionar. - location ~ ^/remote\.php/(webdav|dav)$ { - if ($request_method != PROPFIND) { - # Se não for PROPFIND, passa para o próximo bloco location que trata de uploads/downloads. - break; - } - + # --- Rota de WebDAV e Uploads de Formulários --- + # Trata as requisições WebDAV (sincronização de clientes desktop/mobile) e uploads de arquivos do app Forms. + location ~ ^/(remote\.php/(webdav|dav)|ocs/v[12]\.php/apps/forms/api/.*/submissions/files/.*) { proxy_pass http://nextcloud_backend; 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_http_version 1.1; proxy_set_header Connection ""; + # O buffering deve estar LIGADO para permitir o cache de PROPFIND. + # Para outros métodos (PUT/GET), o Nginx gerenciará os buffers de forma eficiente. proxy_buffering on; - proxy_request_buffering on; + proxy_request_buffering off; # Mantém 'off' para streaming de uploads. - # NOTA: O cache de PROPFIND foi desativado no plano de ação para diagnosticar problemas de lock. - # Manter comentado até a resolução. + # --- Lógica de Cache para PROPFIND --- + # A diretiva proxy_cache_methods não aceita PROPFIND. + # A solução é desativar o cache para todos os métodos, EXCETO PROPFIND. + set $no_cache 0; + if ($request_method != PROPFIND) { + set $no_cache 1; + } + proxy_cache_bypass $no_cache; + proxy_no_cache $no_cache; + + # NOTA: O cache de PROPFIND está desativado conforme o plano de ação. # proxy_cache nc_api_cache; - proxy_cache_methods PROPFIND; proxy_cache_key "$host$request_uri|$cookie_nc_session_id"; proxy_cache_valid 200 207 10s; # 207 é o status de sucesso para Multi-Status (PROPFIND) proxy_cache_lock on; @@ -490,18 +494,6 @@ server { more_set_headers 'X-DAV-Cache: $upstream_cache_status'; proxy_hide_header "Cache-Control"; proxy_hide_header "Expires"; proxy_hide_header "Pragma"; add_header Cache-Control "public, max-age=10"; - } - - # --- Rota de WebDAV (Upload/Download) e Forms --- - # Trata uploads/downloads (PUT/GET) e outras requisições WebDAV. - # O buffering é DESLIGADO para permitir streaming de arquivos grandes sem consumir memória. - location ~ ^/(remote\.php/(webdav|dav)|ocs/v[12]\.php/apps/forms/api/.*/submissions/files/.*) { - proxy_pass http://nextcloud_backend; - 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_http_version 1.1; - proxy_set_header Connection ""; - proxy_buffering off; - proxy_request_buffering off; proxy_connect_timeout 60s; proxy_read_timeout 1200s; proxy_send_timeout 1200s; }