Nextcloud wont accept files over 10-ish MB

I have a nextcloud instance, thats been running for some time, upgraded a few times, may have started around version 22? 23 maybe? I recently moved it to a new server, and updated to 27 while I was at it. It runs in containers, so this really wasn’t a big deal, no config changed its still behind the same nginx proxy config it always was. It does store to a digitalocean object store rather than disk though, if this matters. I did this using the following block in the config.php for nextcloud

  array (
    'class' => '\\OC\\Files\\ObjectStore\\S3',
    'arguments' =>
    array (
      'bucket' => 'name-of-bucket',
      'key' => 'access_key',
      'secret' => 'secret_key',
      'hostname' => 'nyc3.digitaloceanspaces.com',
      'port' => 443,
      'use_ssl' => true,
      'region' => 'nyc3',
      'use_path_style' => true,
    ),
  ),

I have two problems, which I expect are related, but perhaps are not. The nextcloud sync agent reports a not found error when attempting to sync files that are larger than about 10MB. I recently imported a number of photos and videos that I took at our kids soccer game. All of the photos were around 4-6mb. All if these uploaded using the sync agent (windows 11 btw) but the videos, of which the smallest was 77mb, all fail to upload. The error looks like:

Error transferring <the url to the file it's attempting to upload> - server replied: not found

If I try to upload any of these files via the web ui, the transfer starts, and a few seconds in will simply vanish. The progress bar simply goes away, no error in the UI. I have tried this test with several other files, of various types and sizes, it seems to work once you get below 10mb, and this issue occurs as soon as you cross 10mb.

as it may be relevant, i am including my nginx proxy config:

server {
  listen       *:80;
  server_name server-fqdn;

  index  index.html index.htm index.php;

  access_log            /var/log/nginx/server-fqdn.access.log combined;
  error_log             /var/log/nginx/server-fqdn.error.log;

  location /.well-known/ {
      root /var/lib/nginx/nextcloud-wellknown;
    }

  location / {
    rewrite ^(.*) https://server-fqdn$1 permanent;
  }
}


  server {
    listen       *:443 ssl;
    server_name  server-fqdn;

    #ssl on;
    ssl_dhparam         /etc/nginx/ssl.crt/dhparam.pem;
    ssl_certificate     /etc/letsencrypt/live/server-fqdn/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/server-fqdn/privkey.pem;
    ssl_session_cache         shared:SSL:10m;
    ssl_session_timeout       5m;
    ssl_protocols             TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers               ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA;
    ssl_prefer_server_ciphers on;

    index  index.html index.htm index.php;

    access_log            /var/log/nginx/ssl-server-fqdn.access.log combined;
    error_log             /var/log/nginx/ssl-server-fqdn.error.log;

    location / {

      proxy_pass            http://nextcloud;
      proxy_read_timeout    300;
      proxy_connect_timeout 300;
      proxy_redirect        off;
      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 https;
    }
  }

The default web configuration from the core nginx conf also sets the following possibly relevant settings:

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    # Upload size limit
    client_max_body_size 5g;

    # Caching
<<Here i define several caches that are not relevant to nextcloud, nextcloud is not cached>>
    proxy_temp_path /var/lib/nginx/cache/tmp;

    # Load config files from the /etc/nginx/conf.d directory
    # The default server is in conf.d/default.conf

    server_names_hash_max_size 1024;
    proxy_read_timeout 600;
    #proxy_ssl_server_name on;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/virt.d/*.conf;
}

The truly baffling thing is, the nextcloud log has nothing to say at all about these failures. Nothing gets logged at all. I have the log level set to 1 (it was 2)

i am running out of ideas.

I waited a bit for responses, then got busy with some other things, and just now got back to this. I realized that there was a debug log level, so I enabled that, and found the following error in my logs when I attempted a new upload:

[webdav] Debug: Sabre\DAV\Exception\PreconditionFailed: Missing metadata for chunked upload at <<closure>>

0. /var/www/html/apps/dav/lib/Upload/ChunkingV2Plugin.php line 148
   OCA\DAV\Upload\ChunkingV2Plugin->checkPrerequisites()
1. /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php line 89
   OCA\DAV\Upload\ChunkingV2Plugin->beforePut(["Sabre\\HTTP\\Request"], ["Sabre\\HTTP\\Response"])
2. /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php line 456
   Sabre\DAV\Server->emit("beforeMethod:PUT", [["Sabre\\HTTP\\ ... ]])
3. /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php line 253
   Sabre\DAV\Server->invokeMethod(["Sabre\\HTTP\\Request"], ["Sabre\\HTTP\\Response"])
4. /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php line 321
   Sabre\DAV\Server->start()
5. /var/www/html/apps/dav/lib/Server.php line 365
   Sabre\DAV\Server->exec()
6. /var/www/html/apps/dav/appinfo/v2/remote.php line 35
   OCA\DAV\Server->exec()
7. /var/www/html/remote.php line 172
   require_once("/var/www/html/a ... p")

PUT /remote.php/dav/uploads/gangrif/web-file-upload-4426207151df7cc552902d74746256b8-1697376765534/1
from IP OMITTED by gangrif at 2023-10-15T13:32:54+00:00

Did some searching for the error, and found this bug:

This seems to be the same issue. So perhaps ive found the culprit.