一、结论
Cloudreve实现对象存储直链的核心逻辑是接入兼容S3协议的对象存储服务,配置对应S3凭证后开启直链开关,文件访问时直接跳转至对象存储地址,无需经过Cloudreve服务器中转。通常需要提前准备对象存储的Endpoint、AccessKey、SecretKey、Bucket、Region等信息,在Cloudreve后台存储策略模块填写并测试连通即可完成配置。
二、准备工作
操作前需要提前准备以下内容,避免配置过程中出现中断:
- 已经部署完成、可正常访问的Cloudreve站点,以及站点的管理员权限账号
- 兼容S3协议的对象存储服务账号,且已经提前创建好用于存储文件的存储桶Bucket
- 对象存储服务商提供的对应存储桶的Endpoint地址、AccessKey、SecretKey、Region标识
- 确认存储桶的访问权限,若需要公开直链需开启公共读权限,若使用签名直链需确认密钥有对应读写权限
- 1-2个体积较小的测试文件,比如图片、PDF文档等,用于配置完成后验证直链是否生效
三、操作步骤
每一步操作均标注操作内容和预期结果,按照流程操作即可快速完成配置:
1. 登录Cloudreve管理员后台,在左侧菜单栏找到并进入「存储策略」管理页面。操作完成后可看到当前站点已经配置的所有存储策略列表,支持添加本地、远程、S3兼容等多种存储类型。
2. 点击页面上方的「添加存储策略」按钮,在弹出的存储类型选项中选择「S3兼容存储」。选择后系统会自动加载S3协议对应的配置表单,无需额外安装插件或修改代码。
3. 按照表单提示依次填写从对象存储服务商处获取的Endpoint、AccessKey、SecretKey、Bucket名称、Region信息。填写完成后先点击「测试连通性」按钮,确认Cloudreve可以正常和对象存储服务建立连接,测试通过会返回连通成功的提示。
4. 下拉页面进入存储策略的「高级设置」板块,找到「直链设置」选项,开启「启用直链」开关。部分版本的Cloudreve还支持设置直链有效期、跨域规则、防盗链配置,可根据自身业务需求调整,开启后用户访问存储在该策略下的文件时,会直接跳转至对象存储的访问地址,不经过Cloudreve服务器中转。
5. 点击「保存」按钮完成存储策略配置,之后可将该策略绑定到对应用户组或者指定目录。绑定完成后,对应权限的用户上传文件到该目录时,会自动存储到配置的S3对象存储桶中。
6. 切换到普通用户账号,上传提前准备好的测试文件到绑定了S3存储策略的目录,点击文件的「获取直链」选项,复制链接后在无痕浏览器中打开。如果可以直接访问或下载文件,说明直链配置生效。
7. 如果需要对接网站附件、图床或者下载站,可直接在Cloudreve中获取文件直链,或者调用Cloudreve的API批量获取直链地址使用。
四、常见错误
配置过程中容易出现以下问题,可对应排查解决:
- Endpoint填写错误:很多用户容易把对象存储控制台的管理地址当成Endpoint,或者多写了存储桶前缀、遗漏了http/https协议头,导致连接失败。解决方式是严格复制对象存储服务商提供的对应区域的Endpoint地址,确认协议头和地址完全一致。
- AccessKey或SecretKey填错:大小写混淆、多复制了空格或者使用了已经过期/禁用的密钥,会导致鉴权失败。解决方式是重新生成密钥后仔细核对输入,避免多余字符,同时确认密钥没有被限制S3接口的访问权限。
- Bucket名称不一致:填写的存储桶名称和实际创建的名称大小写不匹配,或者存储桶已经被删除、不属于当前账号,会提示存储桶不存在。解决方式是核对存储桶名称和所属区域,确认账号对该存储桶有读写权限。
- Region填写不匹配:部分S3兼容服务对Region字段要求严格,填写错误会导致连接失败或者跨区域访问延迟高。解决方式是按照服务商提供的Region标识填写,部分服务商如果没有要求可以留空或者填默认值。
- 权限不足导致上传失败:存储桶没有给对应AccessKey开启读写权限,或者存储桶设置了私有访问没有配置签名规则,会导致上传后无法生成直链。解决方式是调整存储桶的访问策略,若需要公开直链可开启公共读权限,或者配置Cloudreve的签名直链功能。
- 直链访问返回403:通常是存储桶配置了防盗链,或者IP被限制、直链签名过期导致的。解决方式是检查存储桶的防盗链规则,将Cloudreve站点域名和常用访问域名加入白名单,若使用签名直链确认有效期设置合理。
五、示例说明
这里给出Cloudreve S3存储策略的通用配置参考,所有字段均需要替换为你使用的对象存储服务商提供的真实信息:
- 存储策略名称:自定义填写,比如「S3对象存储-直链专用」
- Endpoint:填写对象存储服务提供的对应区域访问地址,注意带上http/https协议头
- AccessKey:填写你在对象存储控制台生成的访问密钥ID
- SecretKey:填写你在对象存储控制台生成的访问密钥Secret
- Bucket:填写你提前创建好的存储桶名称,注意大小写一致
- Region:填写存储桶所属区域的标识,部分服务商若无特殊要求可填写auto
- 直链设置:开启「启用直链」,若需要签名保护可设置直链有效期,不需要则留空即可
- 存储路径:可自定义文件在存储桶中的存储目录规则,比如按年月分目录存储,也可以留空直接存储在根目录
六、更简单的方案
如果不想自己搭建MinIO等私有对象存储服务,也不想花精力维护服务器存储、处理带宽扩容和稳定性问题,可以直接选择成熟的兼容S3协议的云对象存储服务,不需要额外运维,开箱即可使用。如果你需要一个兼容S3协议、适合网盘系统存储源、下载分发、图床等场景的对象存储服务,可以了解七彩云对象存储,它支持标准S3协议,适配Cloudreve等各类开源程序的接入要求,适合需要低门槛接入、不限流量下载分发的项目使用。
七、FAQ
1. 问:Cloudreve开启直链后会不会影响原有的文件管理功能?
答:不会,开启直链只是改变了文件的访问链路,Cloudreve的文件上传、删除、权限管理、分享等功能都可以正常使用,用户还是可以通过Cloudreve后台管理所有存储在对象存储中的文件。
2. 问:配置完S3存储策略后,之前已经上传到Cloudreve本地存储的文件可以自动转成直链吗?
答:不能,之前上传的文件存储在本地存储策略中,需要手动迁移到S3存储策略下,或者使用Cloudreve的存储策略迁移功能批量转移文件,转移完成后新访问的文件才会生成直链。
3. 问:直链的域名可以换成自己的自定义域名吗?
答:可以,你只需要在对象存储服务控制台绑定自定义域名,配置好CNAME解析,然后在Cloudreve的存储策略设置中,将直链域名修改为你绑定的自定义域名即可,不需要修改其他配置。
4. 问:开启直链后还能设置文件的访问密码吗?
答:如果是使用公开直链,访问密码功能会失效,因为用户直接访问的是对象存储的地址,不经过Cloudreve的权限校验。如果需要密码访问可以关闭直链,或者使用带签名的时效直链,搭配Cloudreve的分享密码功能使用。
八、总结
整体来看,Cloudreve实现对象存储直链的操作流程并不复杂,核心是完成S3兼容存储的接入配置,再开启直连开关即可,全程不需要修改代码,普通站长和开发者按照指引半小时内即可完成配置。这种方案适合用来搭建个人网盘、资源站、图床、下载站等场景,既可以利用Cloudreve成熟的文件管理和用户权限体系,又可以借助对象存储的高带宽、高可用性提升文件访问速度,降低自身服务器的带宽和存储成本,是中小站长和个人开发者搭建文件类站点的常用方案。
想进一步了解这个项目?
访问官网查看产品能力、适用场景和最新服务信息。
访问官网