MENU

个人选择图床的几个方案

2022 年 05 月 17 日 • 阅读: 586 • 笔记

前几天圈子里有个人做图床站被人刷了5万余额,顿时圈子里都沸腾了,在同情那个站长的同时,也警醒了大家。并且我个人是非常谴责这种恶意刷别人流量的行为,免费供别人使用却得到这种结果。

1

2


为了避免上述这类事情的发生,不管是个人使用第三方图床还是给别人提供免费的图床,在保证数据安全的情况下,更重要的是保证自身的利益不受伤害,个人使用首先会想到第三方图床,如果是存放临时的图片是可以使用的,例如知名的:路过图床 sm图床 第三方图床存在不确定性,所以我考虑的是自建图床,最主要考虑的是在保证数据安全稳定的前提下,减少成本,尽可能白嫖

基于对象存储自建图床

  基于对象存储自建也就是使用各大平台提供的对象存储服务来进行自己搭建。但是需要注意的是大多数是收费的,还有一部分云储存会每个月赠送一些流量。例如七牛云和又拍云。
对象存储的收费一般都是各种费用的综合,例如:存储费用 + 请求费用 + 流量费用等。
简单来说就是当你存储一个 1m 的图片,首先你的存储费用就会成为固定的(一般 10G 内免费),如果这一天没有人访问,那么你只需要付费 1m 的存储费即可。当然一般存储费用不会太贵。但是如果有一万个人请求了你的图片,你需要付出的费用就会加上 1 万的请求费用在加上 10000*1m 大小的流量费用。
个别平台 HTTP 请求和 HTTPS 请求是分开计费的。

不同平台对象储存的费用对比

储存空间上传流量外行下载请求次数CDN回源数据拉回跨地域复制
只针对新用户赠送6个月:个人用户赠送50GB标准存储容量包,企业用户赠送1TB标准存储容量包内网不计费,外网计费cos流量费用消耗内网免费内网免费需要
储存空间上传流量外行下载请求次数CDN回源数据拉回跨地域复制
不赠送,需自费购买不计费不消耗消耗外网计费
储存空间上传流量外行下载请求次数CDN回源数据拉回跨地域复制
每月送10GB无上限计费免费读请求 GET100万次,免费写请求 PUT/DELETE10万次免费10GB免费免费

结合 Cloudflare

既然要购买资源包,那么就考虑如何尽量减少成本的情况下。虽然单纯的使用 OSS 很贵,但是可以选择已经加入带宽联盟的厂商,通过宽带联盟的好处,可以获得免回源流量,因此使用对象储存成本为请求数 + 存储费用。
腾讯云cos
因为本身就有腾讯云服务器,因此通过lsky pro上传则是通过内网进行的传输。而 CDN 回源时我并没有直接让其回源 COS 存储桶,而是回源服务器NGINX反代COS存储桶进行回源。这样就不会产生COS侧的回源流量和外网流出流量。
本着能白嫖就白嫖的思路,我同样对其开启了数据万象功能来将图片转为webp格式,来减少CDN流量的输出。
数据万象有免费的资源包

4

阿里云的主要的则是存储费用(相较于腾讯云老用户还是比较贵的)所以不考虑。

CloudFlare 回源 COS
  COS 这里的方案主要借助于数据万象来使 CF 进行内网传输,因为 CF 回源 COS 免回源流量需要达到 100TB 的存储。

注意

【必须】需要有腾讯云服务器(国内)
【非必须】最好有部分资源包,避免扣费
【非必须】由于同时兼顾国内国外,因此国内 CDN 也是必要的(不一定非要是腾讯家的)

5

操作方法

注意!

完成以下操作请反复测试,不要嫌麻烦!不然很可能一套首付就没了!

  1. 开通国内存储桶,与你在腾讯云服务器在同地区(为了实现内网传输)。

例如我的轻量是广州地区的,那么则开通广州地区的 COS。同样的设置权限为私有

  1. 设置存储桶访问权限为私有读写,并设置 Policy 权限设置添加自己服务器内网IP
  2. 创建国外存储桶,建议放在美国地区(不是迪拜和大陆就可)因为距离 CF 回源比较近。
  3. 设置国外存储桶的权限并添加自定义 CDN 域名
173.245.48.0/20,103.21.244.0/22,103.22.200.0/22,103.31.4.0/22,141.101.64.0/18,108.162.192.0/18,190.93.240.0/20,188.114.96.0/20,197.234.240.0/22,198.41.128.0/17,162.158.0.0/15,172.64.0.0/13,131.0.72.0/22,104.16.0.0/13,104.24.0.0/14

设置存储桶访问权限为私有读写,并设置 Policy 权限设置添加 CloudFlare 的 IP
6
添加在 CF 侧的域名
7
开启国内存储桶容灾备份,备份到国外存储桶中
8
在数据万象中对国内存储桶添加如下样式名。
这里我设置的分隔符为/,样式名称为webp
9
设置内网服务器反向代理(nginx)
这部分需要根据你服务器的实际情况进行跳转,这里给出我的示例。
配置中使用了数据万象处理,例如如下:

  • 免费图片额度 10T,理论上不会用完的(CDN 需永久缓存)
  • 减小图片大小,在一定程度上可以减小 CDN 流量开销
server{
    listen 80;
    server_name file2.antmoe.com;
    location /ap-cos-blog {
        allow 127.0.0.1;
        deny all;
        # 腾讯云的DNS解析 请根据实际情况获取
        resolver 183.60.82.98 183.60.83.19;
        proxy_http_version 1.1;
        proxy_pass https://xxxx.cos.ap-beijing.myqcloud.com/;
    }
    location ~ /cos-blog/(.*) {
        proxy_set_header X-Real-IP      $remote_addr;
        proxy_set_header X-Forwarded-FOR $proxy_add_x_forwarded_for;
        # 不传递请求头,避免使用腾讯CDN产生回源流量
        proxy_pass_request_headers off;
        proxy_http_version 1.1;
        # 末尾的 /webp 需要根据你上边设置的填写
        proxy_pass http://localhost:8080/ap-cos-blog/$1/webp;
    }
}

关于resolver的值,如果填写错误,那么会将你的地址解析到公网,从而产生外网流出费用。因此你需要在你服务器中查看该 DNS。

vi /etc/resolv.conf

解析来正常设置 CDN 回源服务器即可(国内地区)
  需要注意的是:国内 CDN 即使关闭 CDN 后,返回 404 状态码也是收费流量费用的。因此当你受到攻击时,请务必删除 CDN。
建议 CDN 处开启永久缓存,因为作为图床,理论上是不会发生更改的。

设置 Cloudflare
添加 DNS 记录,并设置 url 规则重写
?imageMogr2/format/webp/rquality/75
10

设置 DNS
  由于我的主域名并不在 CF,因此进行分地域解析时借助了 vercel 的 301 重定向。
vercel 只需要部署一个vercel.json即可。内容参考:https://github.com/kkfive/cf-redirect/blob/master/vercel.json
12

本文到此结束
  • 文章标题:个人选择图床的几个方案
  • 文章链接:https://hq233.cn/archives/486.html
  • 作品采用:CC BY-NC-SA 4.0 许可协议授权
  • 版权所有:本文版权归 隔壁小胡的博客所有
    转载请先获得本人同意!
    (如有侵权,请 点此联系我删除 )
  • 返回文章列表 文章二维码
    本页链接的二维码
    打赏二维码
    添加新评论

    已有 10 条评论
    1. 又拍云有一个联盟计划,每月有免费额度,我正在用,不过看到这个确实惊到了....\#(汗)

    2. 5W余额,可以设置上限吗,这消耗太大了

      1. @阿锋腾讯云可以设置阈值,但是该站长显然没有这个意识

    3. 5w块钱,这算诈骗了

      1. @井犯这个和诈骗不沾边,应该是按破坏计算机信息系统罪

    4. 哎,五万多,这个要报警吧,恶意刷流量,图床这种我一直都是自用.

      1. @团团确实是要第一时间报警,找腾讯云客服说明情况,应该是可以减免部分费用或者全免,之前阿里云有过相关案例,几千块是全免了,不然后续腾讯云可能会起诉他,也算是吃一堑长一智了。

      2. @隔壁小胡有得免好过全赔

    5. 利用Github无线存储+jsdelivr就可以搞一个无限网盘,近期jsdelivr被取消备案后,可以搞一个反代,也挺好的。

      1. @萧瑟这个方法也不错