首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
OPPO Watch
djyde
V2EX  ›  程序员

国内自建图床指南

  •  1
     
  •   djyde · 84 天前 · 3740 次点击
    这是一个创建于 84 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我的博客( https://lutaonan.com )很长一段时间在使用新浪微博作为图床,自从新浪微博开始防外链,我博客文章很多配图丢失了。我意识到我需要一个稳定可靠的图床,所以开始用阿里云自建一个我自己的图床,目前已经稳定使用了大半年。

    我起初以为很难,而且费用不底。但是在这半年,我每个月的 CDN 费用不高(当然这也取决于访问量)。我自诩自己的博客不至于荒废或者没什么人访问,所以对于那些和我的博客规模差不多的独立博客博主,本篇应该算得上是一个十分贴切的参考。

    当然,虽然我用的是阿里云,但套用到其它云服务都是一样的,读者可以读完后价比三家再作选择。

    声明:本文和阿里云没有任何利益关系。

    本文的目标读者

    • 有自建图床的需求,且对国内访问速度有要求的。例如独立博客、独立摄影站,甚至独立播客主于用存放音频文件。

    云服务做图床的原理

    原理图

    云服务产品有很多,搭建图床只需要关注 OSS 和 CDN. OSS 是对象存储服务,通俗来说就是用来存文件的。OSS 都有对应的域名,文件保存在 OSS 后,可以通过 URL 下载它。

    但是直接通过 OSS 下载的成本很高,价格十分昂贵,所以我们需要 CDN 来分发,节约成本。在阿里云,可以把 CDN 绑定到 OSS, 通过 CDN 去访问这个文件时,如果是首次访问,CDN 会从 OSS 取得这个文件,这个过程叫「回源」。之后再访问会直接从 CDN 读取。

    步骤详解

    因为我自己用的是阿里云,所以以阿里云为例(假设你已经注册好帐号)。

    创建一个 OSS Bucket

    一个 Bucket 相当于 OSS 中的一个存储空间,在 OSS 控制台 点击创建 Bucket:

    ![创建 Bucket]( https://gbstatic.djyde.com/uPic/截屏 2020-03-07 下午 4.30.25.png?x-oss-process=style/80)

    填好 Bucket 名称和区域,其它选项按照默认即可。

    创建成功后,在 Bucket 的文件管理可以上传文件:

    上传文件

    查看上传文件的信息,你可以看到文件有 URL, 但由于在创建 Bucket 的时候,为了防止盗用,我们选的 Bucket 权限为私有,所以从 URL 其实无法访问这个文件:

    文件详情

    创建 CDN 配置

    CDN 控制台 进入域名管理,就可以开始配置 CDN 域名。

    所以,在创建 CDN 前,你需要买一个域名。这个域名可以随便买个便宜的不主流的,因为没人在意一个图床的域名。

    创建域名后,有一个要注意的地方,就是如果你需要国内加速,你的域名必须备案。备案其实是整个自建图床成本最高的一个环节。如果你的博客或者网站域名已经备案,那么可以直接用这个域名分配一个二级域名给 CDN 用。省去再备案的麻烦。

    添加域名

    比如你的域名是 blabla.com, 那么你的加速域名可以是 static.blabla.com.

    源站信息选「 OSS 域名」,选中之后会出现一个下拉选择,可以选中刚刚创建的 Bucket 源站:

    源站域名

    如果你的网站用 https, 端口选 443.

    如果你域名已经备案,就选全球或中国大陆。

    设置域名的 CNAME

    创建完后,你需要把你域名的 CNAME 指定为提供的值。如果你域名解析也是用阿里云,可以查看 这篇文档

    CNAME

    开启 HTTPS

    https

    开启私有 Bucket 回源

    因为前面在创建 Bucket 的时候权限设置为私有,所以需要给 CDN 开启私有 Bucket 回源的权限。

    私有 Bucket 回源

    配置 Refer 防盗链

    CDN 防盗是有必要的,如果你的图片被别处盗用,会增加不必要的流量。所以推荐设置 Refer 防盗白名单,只对允许指定的域名访问。例如我设置了除了我自己博客以外的一些 RSS Reader 以及 V2EX 可以访问:

    Refer 防盗链

    使用 uPic 方便上传图片

    以上的准备都做完后,你已经拥有了一个图床。现在就需要一个方便的工具把图片上传到图床。如果你用 macOS, 我推荐开源的 uPic

    upic

    配置 uPic

    添加阿里云 OSS 配置:

    这里需要填 AccessKey 和 SecretKey:

    你可以在 RAM 控制台 创建一个用户,然后创建 AccessKey.

    创建后给这个 AccessKey 授 AliyunOSSFullAccess 这个权限:

    我博客的 CDN 用量

    从 2019 年 10 月 1 号至 2020 年 3 月 7 号总计 11.28GB. 按流量计费,每 GB 0.24 元,也才几块钱。

    30 条回复    2020-03-12 11:40:51 +08:00
    windyland
        1
    windyland   84 天前 via Android
    这种用量的话七牛可以免费的
    opengps
        2
    opengps   84 天前 via Android
    阿里云好像是每月 5G 流量免费,记不太清了,仅供参考
    ufan0
        3
    ufan0   84 天前 via Android
    腾讯云老账号每个月能有几十 G 免费用量,cdn 就不清楚了。

    @opengps 我正在使用阿里云的 OSS,每个月不到 100M 的流量,就很疑惑没有收钱,多谢提醒。
    urzz
        4
    urzz   84 天前
    @windyland #1 七牛的免费流量没记错是只针对 http 的。。对于 https 的需求要花钱了
    abcwu
        5
    abcwu   84 天前
    大部分人直接用 OSS 就可以了。发文章的量太小以至于手动配置都行哈哈哈
    lscho
        6
    lscho   84 天前   ❤️ 1
    说了这么多,微博的图床换个域名就行了。。。。tva1.sinaimg.cn
    lscho
        7
    lscho   84 天前
    不过微博确实不稳定。。我一直用的七牛
    isukkaw
        8
    isukkaw   84 天前   ❤️ 1
    所以你就有恃无恐地在 V2EX 这种流量特别大的网站上还用自己的图床贴图?
    温馨提示,我上次在 V2EX 上用自己的图床发帖,流量跑了 150G。
    Oxygen2333
        9
    Oxygen2333   84 天前
    这个用不太起,我用 Vultr 的对象存储与 CloudFlare 也搭建了个:233image.land,Vultr 和 CF 都很便宜,CF 开个 Pro 还支持自动压缩成 WebP。
    pytth
        10
    pytth   84 天前
    我一般去抓别的网站的图片上传接口来做,大部分网站的头像是没雨防盗链的,去抓头像上传接口就行,抓了十几个接口,换着用,用了 3 年,稳!
    InFaNg
        11
    InFaNg   84 天前
    如果备案域名的话,找个类似百度云加速的这种 CDN,把单独用来存放静态资源的子域名全站缓存了吧,速度也不错。用 OSS 这种按量付费的有时候会被恶意跑流量😫
    huayumo
        12
    huayumo   84 天前
    @pytth 哈哈哈,你是大佬
    DAPTX4869
        13
    DAPTX4869   84 天前
    用了 gitee, 还行
    dsg001
        14
    dsg001   84 天前
    继续新浪图床+noreferer,啥时候空来路也不行了再说
    NCDWLQ
        15
    NCDWLQ   84 天前
    GitHub+jsDelivr 挺不错的
    wenlep
        16
    wenlep   84 天前
    用的景安免费虚拟主机专门做图床。20G/月流量,50G 的图片空间流量加速 哈哈 只有我这么菜的方法吗
    flyz
        17
    flyz   84 天前 via Android
    free.fr 免费空间搭建一个图床,然后用 cloudflare workers 反代,再绑定域名后,设置缓存,应该就比较稳定了,博客搬家也方便。
    int64ago
        18
    int64ago   84 天前 via Android
    好多图床。。。如果有跨平台需求,可以试试我的,支持 PC 和 Mobile

    https://v2ex.com/t/648993
    moxuanyuan
        19
    moxuanyuan   84 天前
    oneindex,好似可以做图床。。。
    DEVN
        20
    DEVN   84 天前 via iPad
    upy 香
    fengtalk
        21
    fengtalk   84 天前
    差不多也是这么操作的,只不过我用的是腾讯云的 COS 和 CDN。
    ghostsf
        22
    ghostsf   84 天前
    博客访问好慢 静态资源怎么没处理下
    zhxhwyzh14
        23
    zhxhwyzh14   84 天前 via Android
    @wenlep 需要在景安备案吧
    djyde
        24
    djyde   84 天前
    @ghostsf #22 cloudflare 的问题吧
    vfxx
        25
    vfxx   84 天前
    正在用 七牛云 每个月免费 10G,+ MPIC 图床工具,体验很好。
    ljy1398202806
        26
    ljy1398202806   83 天前
    Github+jsDelivr 很香啊,国内网宿节点
    sunwq
        27
    sunwq   83 天前
    用的又拍云做的图床,每月免费 10G 流量
    mostkia
        28
    mostkia   83 天前
    @pytth 还有百度的识图接口,也能这么玩,但是图片似乎一段时间后会过期,薅羊毛总归还是不太稳定的。
    pytth
        29
    pytth   83 天前
    @mostkia 百度的不太稳定,用搜狐、汽车之家、喜马拉雅、VIVO 论坛、中关村在线等比较稳定。
    wenlep
        30
    wenlep   80 天前
    @zhxhwyzh14 在论坛跟别人借的景安备案的二级域名
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2749 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 06:13 · PVG 14:13 · LAX 23:13 · JFK 02:13
    ♥ Do have faith in what you're doing.