client_max_body_size, and the upload that 413s

Four separate limits govern an upload and the error message names only the one that fired, which is usually not the one you changed.

# nginx
client_max_body_size 64m;      # default 1m → 413

# php.ini
upload_max_filesize = 64M;     # → the file is silently dropped
post_max_size = 68M;           # must exceed upload_max_filesize
memory_limit = 128M;

# and php-fpm's own request terminate timeout, for a slow
# upload that is otherwise fine

The PHP limit failing silently is the worst of the four: the request completes, $_FILES is empty or carries an error code, and an application that does not check the error code reports a successful upload of nothing. Setting post_max_size above upload_max_filesize is required and is routinely forgotten, because the relationship is not obvious from either name.