Published on

Google Drive 无法上传文件

Authors

最近使用 Gooogle colab 训练一些模型,有一些素材准备上传到 Google Drive,然后挂载到 colab 上使用,但是今天下午一直没有上传成功,只有个别小文件可以上传成功,稍微大一点,比如 1MB 左右就无法成功,后来我又尝试 OneDrive,发现多数可以成功,但是非常慢,有些文件会反复重试。

我初步怀疑是我电脑配置的问题,回到家后用家里的电脑还是有这个问题。我用 F12 打开浏览器调试,发现报了一堆错,全部是 CONNECTION_RESET_ERR 这类错误,我怀疑问题可能出在服务端。猛然想起我的 nginx 用的是默认的配置,那么 client_max_body_size 应该也是默认的配置,所以应该是 Google Drive 在分割上传文件的时候 payload 超过了 nginx 的默认值,所以把 client_max_body_size 设置大一点就可以了。

client_max_body_size 设置成 64MB,完美解决这个问题。

http {
    include       /etc/nginx/mime.types;
    client_max_body_size 64M;
    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;

    #gzip  on;

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

自建的科学上网服务,架构大概是下面这个样子:

Proxy Architecture

所以 payload 过大会导致 nginx 直接 reset 连接。