写技术博客的人,多半都碰到过图片失效。早期把图放在第三方平台,对方一调整策略,文章里的截图就整片裂开。图片托管到自己能控制的云存储上,是更稳的办法。阿里云 OSS 加上 CDN,就能搭出一个速度和稳定性都够用的图床。这篇文章以一次实际迁移为例,从开通到日常使用,把关键步骤讲清楚。

为什么选阿里云做图床
图床要解决的事情不复杂:上传方便,链接长期有效,国内打开够快。阿里云 OSS 在这几点上都比较成熟。按量计费,小流量站点的月成本一般不高;数据有多可用区存储,可靠性有保障;再配上 CDN 和自定义域名,国内访问的延迟基本能压在可接受的范围内。
OSS 还带图片处理功能,通过 URL 参数就能实时缩放、裁剪、转换格式,不用额外部署服务。写博客或者做电商详情页的人,用起来会比较顺手。
创建存储空间与权限配置
开通 OSS 后,先在控制台新建一个 Bucket。有三个选项要留意:
- 地域:选离主要读者近的,比如华东 1(杭州)或华南 1(深圳)。
- 读写权限:图床要选“公共读”,否则图片链接直接打不开。
- 存储类型:频繁访问的图片用标准存储。归档类型读取前要先解冻,不适合放正在用的图。
权限上,别直接用主账号的 AccessKey。更稳的做法是在 RAM 访问控制里建一个子账号,只给它这一个 Bucket 的读写权限,再单独生成 AccessKey。哪天密钥泄露了,影响范围只有这一个 Bucket,吊销也方便。
绑定自定义域名并设置防盗链
OSS 默认的域名又长又难记,还直接暴露了 Bucket 信息。建议绑定自己的二级域名,比如 img.example.com,在 DNS 里加一条 CNAME 指向 OSS 的访问域名。然后在控制台上传证书、开启 HTTPS,不然文章里的图片会触发混合内容警告。
防盗链也别跳过。在 Bucket 的防盗链设置里填上允许引用的域名白名单,并勾选允许空 Referer,可以挡掉大部分直接盗链的流量。不设的话,账单某个月突然涨上去,往往就是这个原因。
用 PicGo 对接,实现一键上传
有了存储空间,还需要一个顺手的上传工具。PicGo 是开源的图片上传工具,内置了阿里云 OSS 插件。装好插件后,在配置界面填入下面几项:
- AccessKey ID 和 AccessKey Secret:填 RAM 子账号的密钥,别填主账号的。
- 存储空间名称:就是 Bucket 名。
- 存储区域:比如 oss-cn-hangzhou,要和 Bucket 所在地域一致,填错了会上传失败。
- 自定义域名:填前面绑好的 img.example.com,这样生成的链接就是你自己的域名。
配置完成后,截图、按快捷键,链接会自动复制到剪贴板,粘贴进 Markdown 或编辑器就能用。
实际案例:一个技术博客的迁移过程
一位独立开发者维护着一个技术博客,文章两百篇上下,图片超过一千张。早期图片散在好几个免费图床上,有两次因为平台清理,大量文章的图一起失效,他花了不少时间手动修。
迁移时,他先用脚本把现有图片批量下载下来,按年份和文章编号重命名,统一传到一个 OSS Bucket。接着用正则脚本替换文章里的旧链接,原始文件名另存一份做索引,万一对不上还能回查。最后开启 CDN,并用图片处理参数生成缩略图:文章列表页用宽 800 像素的版本,详情页保留原图。
迁完之后,页面加载明显变快,月度的存储和流量费用也稳定在可接受的范围里。更实在的变化是,图片链接不再受第三方平台的政策影响,日常维护省心了不少。
使用中的几个注意点
图床看着简单,有几个地方容易忽略。
防盗链白名单要定期检查。新上线一个站点,就把它的域名加进去,否则它的图会直接挂掉。
大图和长期不看的图,可以设生命周期规则,比如一年没访问过的图转成低频存储,能省一部分费用。
图片格式可以通过参数转成 WebP,画质基本不变,体积会小很多,对加载速度敏感的页面值得这么做。
账单要定期看,最好在费用中心设一个预算告警。流量出现异常时,能第一时间发现,不至于等月底才知道。
阿里云图床的搭建并不难,最容易出问题的是权限、域名和防盗链这三步。这三步打稳了,后面的创作和维护基本不用再操心。