一、结论
个人博客图片不占服务器空间的核心操作思路是将图片资源存储到兼容S3协议的对象存储服务中,通过博客程序的对应插件完成对接,所有图片读写都直接走对象存储接口。对接过程通常需要提前准备Endpoint、AccessKey、SecretKey、Bucket、Region等S3配置信息,填入对应插件测试连通后即可正常使用。
二、准备工作
操作前需要提前准备以下内容:
- 兼容S3协议的对象存储服务账号
- 已创建完成并配置好访问权限的存储桶(Bucket)
- 对象存储服务提供的Endpoint地址
- 拥有存储桶读写权限的AccessKey、SecretKey密钥对
- 对象存储服务对应区域的Region标识
- 所使用博客程序对应的S3兼容存储插件(如WordPress S3存储插件、Halo对象存储插件等)
- 需要迁移的现有博客图片素材
- (可选)PicGo、uPic等本地图片上传工具,方便写作时直接上传图片到对象存储
三、操作步骤
1. 登录对象存储服务控制台创建存储桶,根据提示配置公共读权限、跨域访问规则,得到可用的存储桶资源。
2. 在控制台的密钥管理页面获取S3接入所需的Endpoint、AccessKey、SecretKey、Region等信息,妥善保存避免泄露。
3. 进入自己的博客程序后台,安装对应支持S3兼容存储的附件插件,安装完成后启用插件。
4. 打开插件的配置页面,选择S3兼容存储作为默认存储源,按提示将提前获取的Endpoint、AccessKey、SecretKey、Bucket、Region等参数逐一填入对应输入框。
5. 保存配置后点击插件自带的“测试连接”功能,提示连接成功即代表博客程序和对象存储的对接已经完成。
6. 在博客编辑页上传一张测试图片,查看图片的访问链接是否为对象存储的域名,确认图片可以正常加载、没有存储到服务器本地目录。
7. 若有历史存量图片,将本地服务器上的图片批量上传到对象存储的对应路径,通过数据库批量替换工具将旧的本地图片链接替换为对象存储的访问链接,确认无误后删除服务器本地的旧图片释放空间。
四、常见错误
1. Endpoint填写错误:常见问题是多复制了多余字符、选错了内网地址、遗漏了http/https协议头,会导致连接失败,解决方式是直接从对象存储控制台复制官方提供的公网Endpoint,不要手动输入。
2. AccessKey或SecretKey填写错误:复制时前后带了空格、复制了不完整的字符串、使用了已经失效的密钥,会提示鉴权失败,解决方式是重新生成有效的AccessKey对,完整复制后粘贴到对应位置,不要手动修改内容。
3. 存储桶权限配置错误:没有开启公共读权限、配置了错误的跨域规则,会导致图片上传成功但访问时返回403错误,解决方式是检查存储桶的访问策略,开放公共读权限,同时配置允许博客域名跨域访问的规则。
4. Region填写不匹配:部分插件要求必须填写对应区域的Region标识,填错会导致连接失败,解决方式是查询对象存储服务官方文档给出的Region标识,准确填写到对应位置,无强制要求的可以留空或填写默认值。
5. 上传路径设置不规范:路径中包含中文、特殊字符、空格等不规范内容,会导致上传失败或者访问异常,解决方式是设置存储路径时仅使用英文、数字、斜杠等标准字符,避免使用特殊符号。
五、示例说明
以下为通用的博客S3存储插件配置示例,所有参数均需替换为你自己的对象存储服务实际信息:
- Endpoint:填写对象存储服务提供的公网访问地址,请勿使用内网地址
- AccessKey:填写你在控制台创建的访问密钥ID,注意不要对外泄露
- SecretKey:填写与AccessKey配对的密钥字符串,需妥善保管避免泄露
- Bucket:填写提前创建好的存储桶名称,注意大小写、拼写与控制台完全一致
- Region:根据对象存储服务的要求填写对应区域标识,无强制要求可留空
- 访问域名:优先填写你绑定的自定义图片域名,未绑定可使用服务提供的默认访问域名
- 存储路径:可填写如
blog/images/这类规范路径,方便后续文件管理
六、更简单的方案
如果不想自行搭建MinIO等自建对象存储服务,也不想额外投入精力维护存储服务器、处理扩容和可靠性问题,可以直接选择成熟的商用兼容S3协议的云对象存储服务,开箱即用无需运维,存储容量可按需弹性扩容,成本比自己维护存储服务器更低。如果你需要一个兼容S3协议、适合博客图床、程序附件存储、不限流量下载分发的对象存储服务,可以了解七彩云对象存储,对接个人博客门槛低,无需复杂配置即可快速投入使用。
七、FAQ
1. 我用的是Hexo、Hugo这类静态博客,也能使用这种方案吗?
完全可以,你可以搭配PicGo、uPic等上传工具,写文章时直接将图片上传到对象存储,工具会自动生成对应的访问链接插入到文章中,无需将图片存到静态站点的资源文件夹里,部署后的静态页面也不会占用服务器的存储空间。如果有历史图片,只需要批量上传到对象存储后替换文章内的链接即可。
2. 把图片存在对象存储里,会不会比存在服务器本地访问更慢?
正规的云对象存储通常自带CDN加速节点,只要你配置好自定义域名和CDN加速,图片的访问速度一般会比单台服务器本地存储更快,同时图片的访问流量不会占用博客服务器的带宽资源,博客访问高峰时也不会因为图片加载拖慢整站的响应速度。
3. 已经存在服务器本地的历史图片怎么迁移到对象存储?
首先将服务器本地存放博客图片的文件夹完整批量上传到对象存储的对应路径,保证文件路径和原有路径一致;然后使用数据库批量替换工具,将博客数据库中所有本地图片的链接前缀(比如https://yourdomain.com/wp-content/uploads/)替换为对象存储的访问域名前缀;替换完成后清理博客缓存,确认所有图片都能正常访问后,就可以删除服务器本地的旧图片文件释放磁盘空间了。
4. 对接对象存储之后,还需要单独备份图片资源吗?
大部分商用云对象存储都默认提供多副本冗余存储,数据可靠性很高,不过还是建议你定期备份重要的图片资源,可以定期将存储桶内的文件同步一份到本地或者其他存储服务做冷备,避免误操作删除文件、账号异常等极端情况导致的资源损失。
八、总结
整个操作流程的核心是实现博客的计算资源和存储资源分离,将占用空间大的图片资源放到专门的对象存储服务中,博客服务器只需要运行程序逻辑,完全不用存储和分发图片,既能释放服务器的磁盘空间,也能降低服务器的带宽压力,提升整站的访问速度。这种方案适配几乎所有类型的个人博客、小型内容站点,不管你使用的是WordPress、Halo、Typecho等动态博客程序,还是Hexo、Hugo、Astro等静态站点生成工具,都能快速完成对接,操作门槛低,不需要复杂的运维知识就能落地使用。
想进一步了解这个项目?
访问官网查看产品能力、适用场景和最新服务信息。
访问官网