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

关于 Cloudflare + Backblaze 最佳实践

  •  
  •   Jafee · 3 天前 via iPhone · 1337 次点击

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

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

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

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

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

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

    如果是博客网站( ghost )内直接上传,在开启 cloudflare CDN 的前提下,上传限制 100M ,请问这个怎么突破
    longsays
        21
    longsays  
       2 天前 via Android
    @Ghjvn 上传都是走 S3 api 吧(自己写了一个页面+alist 够用了),不限制大小,而且大于 100M 的图片也很少,手工处理一下不费事
    XiLingHost
        22
    XiLingHost  
       2 天前
    下载可以参考这里 https://github.com/backblaze-b2-samples/cloudflare-b2
    上传可以参考我写的一个上传工具 https://github.com/KagurazakaNyaa/cloudflare-s3-uploader
    部署到 worker 上,配置好 token 就能用了,所有的 bucket 都应当是 private ,这样只能通过 cloudflare worker 访问,只需要存储费用完全不需要流量和请求费用
    longsays
        23
    longsays  
       2 天前 via Android
    @XiLingHost 走 worker 也有 b2 请求数吧
    XiLingHost
        24
    XiLingHost  
       2 天前
    @longsays 不会计算费用,这个属于是来自 unlimited free egress 合作伙伴的流量
    longsays
        25
    longsays  
       2 天前
    @XiLingHost #24 我用 CF cdn 直接去拉,也是走的免费流量,但请求数是涨的,不过 CF 有缓存,涨的不多,理论上这两者应该都算同一路径吧
    longsays
        26
    longsays  
       2 天前
    @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   ·   实用小工具   ·   2718 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 07:31 · PVG 15:31 · LAX 23:31 · JFK 02:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.