一、结论
要实现WordPress附件存储不占用服务器空间,核心思路是将上传的附件转存到兼容S3协议的对象存储服务中,通过WordPress的S3兼容存储插件完成双向对接,后续所有上传的附件会直接存入对象存储桶,服务器仅留存文件索引信息,不会占用本地磁盘资源。操作前需提前准备对象存储的Endpoint、AccessKey、SecretKey、Bucket、Region等接入信息,在插件中完成配置并测试连通即可。
二、准备工作
操作前需提前准备好以下内容,避免中途中断流程:
- 兼容标准S3协议的对象存储服务账号
- 提前在对象存储控制台创建的存储桶(Bucket)
- 对象存储服务商提供的对应存储桶Endpoint地址
- 对象存储控制台生成的AccessKey(访问密钥ID)
- 与AccessKey配对的SecretKey(访问密钥密码)
- 存储桶所属的Region(区域标识)
- WordPress后台可正常安装启用的S3兼容存储插件(如WP Offload Media、S3 Uploads等)
- 确认WordPress站点PHP环境已开启外部接口调用权限,无防火墙拦截对象存储API请求
三、操作步骤
每一步操作完成后确认结果正常再进入下一个环节,避免后续排查错误成本过高:
1. 配置存储桶权限与规则:登录对象存储控制台,将目标存储桶设置为公共读权限(保证访客可正常访问附件),同时添加跨域规则允许WordPress站点域名发起POST、PUT、GET请求,操作完成后确认存储桶处于可正常上传、公开访问的状态。
2. 获取S3接入凭证:在对象存储控制台的密钥管理页面生成专属AccessKey与SecretKey,同时复制对应存储桶的Endpoint、Bucket名称、Region参数,将所有信息妥善备份,确认所有参数无遗漏。
3. 安装并启用存储插件:登录WordPress后台,进入「插件-添加插件」页面,搜索并安装支持S3兼容存储的附件同步插件,启用插件后确认插件无报错、可正常进入配置页面。
4. 填写S3配置参数:进入插件的存储配置页面,存储类型选择「S3兼容存储」(部分插件显示为自定义S3服务),将之前复制的Endpoint、AccessKey、SecretKey、Bucket、Region参数对应填入配置项,确认所有参数前后无多余空格。
5. 配置同步规则:在插件配置页找到同步规则模块,勾选「自动同步新上传附件到对象存储」「上传完成后删除服务器本地副本」两个核心选项,也可根据需求自定义文件存储路径、绑定自定义访问域名,确认规则符合业务需求。
6. 测试连接有效性:保存配置后点击插件自带的「测试连接」按钮,若提示连接成功则代表插件与对象存储通信正常;若提示连接失败则逐一核对配置参数是否填写正确,直到测试通过为止。
7. 验证功能生效:在WordPress媒体库上传一张测试图片,查看图片的访问域名是否为对象存储的域名,同时登录服务器进入wp-content/uploads目录,确认该目录下没有留存测试图片的本地副本,验证通过后即代表所有配置生效,后续所有上传的附件都不会占用服务器空间。
四、常见错误
整理了操作过程中高频出现的错误与对应解决方法,可对照排查:
- Endpoint填写错误:容易误将存储桶单独访问域名当作全局Endpoint填写,导致连接失败,解决方法是前往对象存储服务商的官方文档,查找对应区域的标准Endpoint地址,不要自行拼接地址。
- 密钥信息填写错误:复制AccessKey或SecretKey时前后带了多余空格,或使用了已过期、被禁用的密钥,解决方法是重新生成新的密钥,复制时直接点击控制台的复制按钮,不要手动输入。
- 存储桶权限不足:存储桶设置为私有读写权限,导致访客访问附件时提示403错误,解决方法是将存储桶调整为公共读权限,或给使用的AccessKey分配对应存储桶的读写权限。
- 跨域规则配置错误:上传文件时控制台提示跨域请求被拦截,解决方法是在对象存储的跨域配置中添加WordPress站点的完整域名,允许GET、POST、PUT、HEAD等请求方法,配置完成后等待规则生效再重试。
- 未开启删除本地副本选项:上传文件后服务器仍然留存本地副本,依旧占用磁盘空间,解决方法是回到插件配置页面,找到「移除本地副本」「删除本地源文件」类的选项并勾选保存。
- Region参数不匹配:存储桶所属区域与填写的Region不一致,导致连接失败,解决方法是核对对象存储控制台标注的存储桶区域标识,严格按照服务商提供的参数填写。
五、示例说明
以下是通用的WordPress S3存储插件配置示例,所有参数均需从你使用的对象存储服务商控制台获取,不要填写虚构内容:
- 存储类型:S3兼容存储/自定义S3服务
- Endpoint:填写对象存储服务商提供的对应区域标准访问地址
- AccessKey:填写控制台生成的访问密钥ID
- SecretKey:填写与AccessKey配对的访问密钥密码
- Bucket:填写提前创建好的存储桶名称
- Region:填写存储桶所属的区域标识
- 自动同步附件:开启
- 移除本地副本:开启
- 访问域名前缀:可填写对象存储默认访问域名,或绑定的自定义CDN域名
六、更简单的方案
如果不想自行搭建MinIO等开源对象存储服务,也不想花费时间维护存储节点、处理扩容、安全防护等运维工作,可以直接选择成熟的兼容S3协议的云对象存储服务,开箱即用不需要额外运维成本。如果你需要一个兼容S3协议、适合WordPress附件存储、图床搭建和资源下载分发的对象存储服务,可以了解 七彩云对象存储,支持标准S3协议可以直接对接各类WordPress存储插件,不需要额外做适配。
七、FAQ
Q1:配置完成后,之前已经上传到服务器的旧附件能不能迁移到对象存储?
大部分主流的WordPress S3存储插件都支持旧附件批量同步功能,你可以在插件的工具页面找到批量同步选项,等待所有旧附件同步到对象存储后,再批量删除服务器本地的旧附件即可,同步过程不会影响已发布文章的正常访问。
Q2:接入对象存储之后,会不会产生很高的流量费用?
对象存储的流量成本通常比服务器扩容磁盘、升级带宽的成本更低,尤其是附件量较大的站点,使用云对象存储的成本优势会更明显,你可以根据站点的访问量选择合适的服务套餐,部分服务商也提供不限流量的计费模式。
Q3:接入对象存储之后,会不会影响附件的访问速度?
只要选择的对象存储服务自带CDN加速能力,附件的访问速度通常比直接从服务器加载更快,尤其是多地域访客的访问体验会有明显提升,你也可以绑定自己的自定义域名到存储桶,配合CDN加速进一步优化访问速度。
Q4:如果后续要更换对象存储服务商,会不会影响站点正常运行?
因为使用的是标准S3协议,只要新的服务商也支持S3协议,只需要将插件里的配置参数替换为新服务商的信息,再把旧存储桶的文件迁移到新存储桶即可,不需要修改WordPress已发布的文章内容,迁移成本很低,几乎不会影响站点正常访问。
八、总结
整个操作流程的核心是通过标准S3协议打通WordPress和对象存储的连接,让附件的存储、访问都由对象存储承接,服务器仅负责站点逻辑运行,不需要再承担附件存储和分发的压力。这种方案非常适合附件量较大的资讯站、资源站、图片站、视频站,既可以节省服务器的磁盘扩容成本,也可以降低服务器的带宽压力,提升访客的访问体验,同时标准S3协议的兼容性很强,后续拓展其他功能、更换存储服务商都非常灵活。
想进一步了解这个项目?
访问官网查看产品能力、适用场景和最新服务信息。
访问官网