diff --git a/nginx/sites-available/cloud.grupopralog.com.br.conf b/nginx/sites-available/cloud.grupopralog.com.br.conf index 9bd8472..1e50c21 100644 --- a/nginx/sites-available/cloud.grupopralog.com.br.conf +++ b/nginx/sites-available/cloud.grupopralog.com.br.conf @@ -244,27 +244,54 @@ server { more_set_headers 'X-APIMicroCache-Status: $upstream_cache_status'; } -# location ~ ^/remote\.php/(webdav|dav)/ { -# 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 ""; -# - # # Habilita o streaming de arquivos grandes para o backend - # # sem bufferizar o corpo inteiro da requisição no Nginx. - # proxy_buffering off; - # proxy_request_buffering off; - # - # # Timeouts longos para uploads/downloads grandes - # proxy_connect_timeout 60s; - # proxy_read_timeout 1200s; - # proxy_send_timeout 1200s; - #} + 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 ""; + + # --- Lógica de Cache vs. Streaming --- + + # 1. Por padrão, desabilitamos o buffering para streaming (uploads/downloads) + proxy_buffering off; + proxy_request_buffering off; + + # 2. SE for um PROPFIND (listagem de diretório), ligamos o buffering e o cache + if ($request_method = PROPFIND) { + proxy_buffering on; + proxy_request_buffering on; # Necessário para o cache + + proxy_cache nextcloud_cache; # Usar a zona de cache + # IMPORTANTE: Autorizar cache do método PROPFIND + proxy_cache_methods PROPFIND; + # Chave de cache por usuário/sessão + proxy_cache_key "$host$request_uri|$cookie_nc_session_id"; + + # Cache de 10 segundos para listagens de pasta (status 200 e 207) + proxy_cache_valid 200 207 10s; + proxy_cache_lock on; + proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504; + + # Header para depuração + more_set_headers 'X-DAV-Cache: $upstream_cache_status'; + + # Ignorar "no-cache" do backend para PROPFIND + proxy_ignore_headers "Cache-Control" "Expires" "Pragma"; + proxy_hide_header "Cache-Control"; + proxy_hide_header "Pragma"; + proxy_hide_header "Expires"; + add_header Cache-Control "public, max-age=10"; + } + + # Timeouts longos (mantém para uploads/downloads) + proxy_connect_timeout 60s; + proxy_read_timeout 1200s; + proxy_send_timeout 1200s; + } location ~ ^/(apps/tables/(api|row|share)|index\.php/apps/tables/api/1|ocs/v2\.php/apps/tables/api/2) { proxy_pass http://nextcloud_backend;