原因

HTTP协议大致有这些请求类型:GET POST PUT PATCH DELETE HEAD。

cloudreve在校验文件是否上传完整时,调用的是s3协议的获取文件信息接口,发起的是HEAD类型的请求,在使用nginx反向代理minio后,由于nginx默认会缓存优化,导致head类型的接口并没有返回正确的数据,让cloudreve认为文件上传失败了,会提示文件信息不一致的错误。

解决办法

修改nginx的proxy配置文件

location ^~ / {
    proxy_pass http://127.0.0.1:9000; 
    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 REMOTE-HOST $remote_addr; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection $http_connection; 
    proxy_set_header X-Forwarded-Proto $scheme; 
    proxy_http_version 1.1; 
    # 关闭缓冲
    proxy_cache off; 
}

重点在proxy_cache off;,此配置会关闭nginx的代理缓存