V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Jafee
V2EX  ›  问与答

关于 Cloudflare + Backblaze 最佳实践

  •  
  •   Jafee · 18 天前 via iPhone · 1579 次点击

    有几个问题想请教使用过的大佬:

    1. B2 桶 一般会设置为 public 还是 private ?
    2. 可以限制 B2 的流量全部是通过 cloudflare 访问吗?

    理想情况下,B2 是不是只用到存储的费用即可,不会再因为流量而付费,因为 cf CDN partner 。如果不可以的话,怎么可以有效的防止被刷的情况?先感谢回复啦

    26 条回复    2025-01-02 20:00:39 +08:00
    iloveayu
        1
    iloveayu  
       18 天前
    1. 都可以建议 private ,实际 private 也是可以和 CF 配合的,需要搭配 CF 的 worker 。
    2. 可以,private 必须用 api key 访问 B2 ,防被刷。
    至于如何实现,那是没有现成的方案,思路是自己写一个 cf worker 的反代到 B2 上,代理时带上你的私有 key 去读 B2 上的文件。
    同时,你需要处理 cf worker 返回给客户端时的一些 header ,因为其可能暴露你的 B2 原始桶名称,不过你是 private 的情况下,有桶名称别人也刷不到。
    ZeroClover
        2
    ZeroClover  
       18 天前
    设置为 Private 需要配合 Worker 或者 Rule Snippet 使用。Worker 按请求次数收费,Rule Snippet 需要 Pro 订阅。

    B2 除了储存费用以外还需要付 API 调用费用
    longsays
        3
    longsays  
       18 天前 via Android
    @iloveayu 可以私有,建议使用 worker 定时更新重写 URL 规则,带上鉴权参数就行,避免 worker 请求数超,不会流量付费,但 B2 会有请求数计费,可以后台限制,避免刷超
    ruimz
        4
    ruimz  
       18 天前 via iPhone
    设置为 public 桶可以考虑把桶名称设置为长随机字符串,然后通过 CF 处理时去掉一些和 b2 有关的 header

    设置为 private 桶则需要 workers ,例如
    https://github.com/backblaze-b2-samples/cloudflare-b2
    Jafee
        5
    Jafee  
    OP
       18 天前 via iPhone
    @iloveayu @ZeroClover @longsays @ruimz 感谢大家,顺便问一句,cf paid worker 防止巨量超量的方式是不是加邮件提醒,自己处理? 有什么好的方法来阻止被恶意刷的情况吗?
    iloveayu
        6
    iloveayu  
       17 天前
    @Jafee 再用 cf worker 写一个监控,调用量超过你设置的阈值自动关站
    longsays
        7
    longsays  
       17 天前 via Android
    @Jafee 使用重写 URL 规则带鉴权参数就不依赖 worker 了,worker 每天消耗 1-2 次更新规则就好
    Jafee
        8
    Jafee  
    OP
       17 天前 via iPhone
    @longsays 更新规则是指?
    longsays
        9
    longsays  
       17 天前 via Android   ❤️ 1
    @Jafee https://www.longsays.com/2130.html
    先有公开桶的隐藏路径规则,然后用 worker 定时更新,在这个规则上加鉴权参数
    longsays
        10
    longsays  
       17 天前 via Android
    @Jafee 这样完全不怕刷,默认有 CF 缓存,就算被刷了也有 B2 限额打底,这个咨询过 B2 客服了,限额完全不会超的
    longsays
        11
    longsays  
       17 天前 via Android
    https://i1.du0.org/file/453d22da3c18847e43407.png
    比如这个地址就是在 B2 私有桶按上述方法实现的
    Jafee
        12
    Jafee  
    OP
       17 天前 via iPhone
    @longsays 赞,这个方法真的好。但我猜,大批量调用时 b2 肯定会发现这个异常的账号,哈哈
    longsays
        13
    longsays  
       17 天前 via Android
    @Jafee 这个不算异常吧,合法合规
    私有桶可以携带鉴权参数是官方就有的
    然后 CF 免流也是官方自己合作的,而且本身也能用公开桶,只是不想暴露或者暴露了也不怕刷而已
    Jafee
        14
    Jafee  
    OP
       17 天前 via iPhone
    @longsays 很赞,我也打算先采用这种方法了
    longsays
        15
    longsays  
       17 天前 via Android
    @Jafee 如果后续有一天合作终止,CF 不免流了,然后也有其他更优惠的厂商,S3 可以直接 rclone 同步过去,地址原封不动,方便迁移
    summerwar
        16
    summerwar  
       17 天前
    @longsays #11 你是不是在 nga 上发帖求过这张照片?
    longsays
        17
    longsays  
       17 天前 via Android
    @summerwar 应该不是我,nga 没号
    summerwar
        18
    summerwar  
       17 天前
    @longsays #17 之前有人在 nga 上发帖求过一张壁纸,内容是二次元 女孩 高处,看到你的照片的瞬间,我就想起来那个贴子了,刚又去 nga 发了帖子,希望那个老哥能看到吧。感谢
    loveshuyuan
        19
    loveshuyuan  
       17 天前
    除了流量费用 b2 还有请求次数费用
    Ghjvn
        20
    Ghjvn  
       17 天前
    有个问题,如果是图床,大家是手动上传到 B2 后粘贴链接,还是直接在博客网站内上传呢。

    如果是博客网站( ghost )内直接上传,在开启 cloudflare CDN 的前提下,上传限制 100M ,请问这个怎么突破
    longsays
        21
    longsays  
       17 天前 via Android
    @Ghjvn 上传都是走 S3 api 吧(自己写了一个页面+alist 够用了),不限制大小,而且大于 100M 的图片也很少,手工处理一下不费事
    XiLingHost
        22
    XiLingHost  
       17 天前
    下载可以参考这里 https://github.com/backblaze-b2-samples/cloudflare-b2
    上传可以参考我写的一个上传工具 https://github.com/KagurazakaNyaa/cloudflare-s3-uploader
    部署到 worker 上,配置好 token 就能用了,所有的 bucket 都应当是 private ,这样只能通过 cloudflare worker 访问,只需要存储费用完全不需要流量和请求费用
    longsays
        23
    longsays  
       17 天前 via Android
    @XiLingHost 走 worker 也有 b2 请求数吧
    XiLingHost
        24
    XiLingHost  
       17 天前
    @longsays 不会计算费用,这个属于是来自 unlimited free egress 合作伙伴的流量
    longsays
        25
    longsays  
       17 天前
    @XiLingHost #24 我用 CF cdn 直接去拉,也是走的免费流量,但请求数是涨的,不过 CF 有缓存,涨的不多,理论上这两者应该都算同一路径吧
    longsays
        26
    longsays  
       17 天前
    @XiLingHost #24 而且我看之前提过的工单,客服也是这么回复我的

    All calls and data requests are counted towards your charges if they exceed a certain amount, no matter what the source of the call or request is coming from.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4952 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 05:38 · PVG 13:38 · LAX 21:38 · JFK 00:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.