为什么个人博客也需要对象存储?

预计阅读时间:9 分钟

这是「把自己部署到互联网上」系列的第 29 篇。

前面几篇把 HTTPS 这段基本走完了:

  1. 先讲为什么个人网站需要 HTTPS
  2. 再写 SSL 证书申请、下载和部署
  3. 最后用通配符证书和 acme.sh 解决多域名证书管理。

到这里,个人博客的访问入口已经比较完整:

服务器、域名、备案、安全边界、部署架构、全局 Nginx 和 HTTPS 都有了基本方案。

一个不起眼的问题

接下来要处理一个容易被忽略的问题:图片、附件和静态资源应该放在哪里?

最简单、粗暴的做法是放在服务器本地。

博客项目本身也有上传目录,图片传到上传目录里,文章直接引用本地资源。

这很简单直接,运行没问题。但项目要长期运行,我更倾向于对象存储。

估计很多人也会和我有一样的,个人博客能有多少图片?

几张文章配图、几张截图、几个附件,直接放服务器不就行了,上什么对象存储呀?

如果只是写几篇文章,这样确实没问题。

但我的规划,不是跑一个博客。

后面会持续写技术文章,里面会有截图、流程图、命令结果、部署界面、项目预览图。

个人官网和作品站也会有封面、项目截图和静态资源。

时间一长,资源数量会不断增长。

本地存储带来的问题

1. 磁盘空间越来越大

本地存储带来的第一个问题是磁盘会慢慢膨胀。

个人服务器磁盘通常不会买得很大,系统、Docker 镜像、数据库、日志、项目代码都需要磁盘空间。

如果再把所有图片和附件都放本地,上传目录会持续增长。

磁盘满了以后,会导致数据库写不进去,Docker启动失败,日志也就无法继续写。

2. 迁移复杂

第二个问题是迁移变复杂。博客是长期项目,服务器以后可能因为续费、配置、云厂商或系统重装而迁移。

如果图片和附件都在本地,迁移时不仅要迁数据库,还要迁文件。

数据库里的文章内容可能引用了这些存放路径,文件漏了就会断图,目录结构变了还要修路径。

所以,为避免上述问题的发生,使用对象存储把资源位置和应用服务器解耦,无论以后服务器换到哪里,只要文章仍然引用同一套资源地址,图片和附件就不必跟着服务器迁移。

3. 带宽

第三个问题是带宽压力。文章文字本身没多少流量,真正占流量的是图片、附件和静态文件。

个人服务器带宽一般不大(2M、3M)。等到火了的那一天,大量图片请求都会压到应用服务器上,加载其他资源就会变的特别慢。

对象存储更适合承载静态资源,后面也可以接 CDN。现在不一定需要 CDN,先把静态资源从应用服务器拆出来,架构会更清晰。

4. 备份统一管理

第四个问题是备份边界不清晰。如果所有内容都在服务器本地,备份时要同时考虑数据库、上传目录、配置文件、证书、Nginx 配置、项目代码、日志和临时文件。

对象存储可以让资源文件独立出来:

  • 图片和附件在对象存储,
  • 数据库单独备份
  • 代码走 Git
  • 服务器配置单独管理。

每类资产划分更明确。

小结:

对象存储可以简单理解为专门存文件的云服务。

可以把图片、附件、视频、静态文件上传到存储桶里,每个文件有对象路径,再通过权限、访问域名和签名规则控制访问方式。

对博客来说,最典型的用途是存文章图片和附件,例如:

https://assets.example.com/blog/2026/xxx.png

文章中直接引用这个地址,图片访问就可以不再依赖应用服务器本地目录。

对象存储适合放哪些文件:

  • 文章图片
  • 配置截图
  • 项目截图、头像、封面图、附件、PDF、小册下载文件

不适合放

  • 数据库数据文件
  • 不适合当应用运行目录
  • 不适合存敏感配置文件

公开资源和私有资源要分清楚。

文章图片通常可以公开访问,但 备份、私密材料和内部附件 应该设为私有。

对象存储与CDN的区别

对象存储和 CDN 也要区分。

对象存储负责存文件,CDN 负责加速访问

第一阶段可以只用对象存储,让图片从对象存储域名访问。后面访问量变大,或者图片加载速度不理想,再考虑接 CDN。

不要为了完整架构,把第一版做得过重。

很多对象存储会提供默认访问域名,但我更倾向使用自己的资源域名,比如:

assets.example.com
static.example.com

这样文章里的图片地址更统一,也更符合自己的域名体系。

但绑定自定义域名后,还要处理 DNS 解析、存储桶权限、HTTPS、防盗链、跨域配置和访问控制

成本投入

当然,对象存储也有成本。

  1. 存储量、请求次数、流量、CDN 回源都可能计费

  2. 还需要创建存储桶、配置权限、绑定域名、处理 HTTPS 和访问规则

  3. 权限配错可能导致文件暴露
  4. 如果以后换服务商,资源迁移也要处理
  5. 它也依赖外部云服务,对象存储出问题时,图片和附件访问会受影响

所以说对象存储不是一定要第一天就上。但对这个系列来说,它算属于基础设施。因为准备要长期更新,图片和附件一定会变多,提前设计资源承载方式,会减少后续维护成本。

为什么个人博客也需要对象存储?

  • 长期运行维护,图片、附件和静态资源迟早会变成独立问题

  • 全部放在服务器本地最简单,但会带来磁盘、迁移、带宽和备份边界问题

  • 对象存储可以把资源和应用服务器解耦,让应用服务器更专注于运行服务

下一篇进入对象存储实操:对象存储桶策略、JSON 配置和域名访问控制。对象存储真正容易出问题的地方,不是上传文件,而是权限到底该怎么开。


本文由 楸木 原创,转载请注明出处。

相关推荐

发现更多