原因
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的代理缓存