cloudflare对象存储R2配置
2023-11-23 13:13:34

本文链接:https://blog.tanglu.me/cloudflare-R2-configure

本文首发于loc,写的不是很好 但是似乎也没有什么需要改动

前言:

教程试用R2以及支持套CF实现免流的对象存储服务(如b2 scaleway等 具体见带宽联盟),总结了一下如何配置R2

CF带宽联盟:https://www.cloudflare.com/zh-cn/bandwidth-alliance

我想用不支持带宽联盟的怎么办?你可以选择卖房支付高额流量费用!

教程开始之前简单介绍一下我理解的对象存储和云盘(可能很片面 欢迎指正):

网盘和对象存储都是存储文件的 各有优缺点 适合的场景也不同

网盘/云盘 如阿里云盘 坚果云 GD OD等,优点:用户在软件的可视化界面可以进行上传下载同步等操作 缺点:可能会有广告(没有别的意思为爱发电不不可取),文件分享给他人往往需要对方也下载相应软件,下载文件可能会限速

对象存储 R2 b2 scaleway等 优点:文件以直链形式传播 无需下载第三方软件 基于AWS_S3规范 简洁易于传播,比较适合个人网站的图床或视频床,支持高并发和高带宽( 缺点:无可视化界面 需要用户自己开发

视频直链演示:

可以测试R2文件下载速度或者播放是否可以随意滑动进度条

Your browser doesn’t support HTML5 video. Here is a link to the video instead.

各地区文件测速:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
###建议用同区域的vps测速
欧洲东部:
wget https://eueast.r2.1323123.xyz/3GB-debian11.qcow2

欧洲西部:
wget https://euwest.r2.1323123.xyz/3GB-debian11.qcow2

美国东部:
wget https://useast.r2.1323123.xyz/3GB-debian11.qcow2

美国西部:
wget https://uswest.r2.1323123.xyz/3GB-debian11.qcow2

亚洲:
wget https://asia.r2.1323123.xyz/3GB-debian11.qcow2

Specify jurisdiction EU:
wget https://eueu.r2.1323123.xyz/3GB-debian11.qcow2

PS:最近用R2明显感觉到晚高峰速度慢等问题,而且非晚高峰用欧洲和美国vps下载速度也才10-25MB/s
今天又开了其他地区的存储桶试了下 发现可能是存储桶地区问题
我的cloudflare注册的是国区账号,他可能默认存在亚洲了,亚洲网络费用大家也都知道,测试速度是其他地区的三分之一

我用wget单线程测试的 欧洲速度在65MB/s左右 美国速度在50MB/s,亚洲存储桶只有10-25MB/s。(可能还有其他我不知道的因素 如vps位置 欧洲美洲非晚高峰 等等)
这里贴一些测试文件供大家测试,如果测试慢的 可以评论区反馈(国内测试就不用了)
建议用R2的朋友都指定下存储桶

正文:

1 开通R2(0元虚拟卡即可),创建存储桶,我这边取名 “tanglu

2 添加域名 以下操作基于域名(域名无法自选IP),我以 r2.smalljp.com 为例

3 文件上传 网页端支持300MB以下的文件上传,大于300MB强烈使用rclone上传

rclone简单教程:

rclone1.59版本以上才支持R2

Linux官方脚本:curl https://rclone.org/install.sh | sudo bash

新建rclone配置 我这里取名myr2,选择5(AWS S3那个 然后就有R2了)网上很多教程 不继续了

rclone tree myr2: #有输出桶的文件名表示配置成功

rclone copy -P /root/download myr2:/tanglu #linux命令 将该文件夹下的所有文件上传 -P参数是显示速度状态

rclone copy -P D:\qbittorrent\Download\HongKongDoll_她的秘密1 myr2:/tanglu #windows上传命令可能需要代理加速

###以上只是基本的部分上传命令 rclone支持上传/下载/挂载等命令,详情可参考:https://sunpma.com/864.html

4 必须配置

配置只针对r2.smalljp.com,不影响smalljp的其他子域名

a)强制https:规则>页面规则

R2不支持http 未配置强制跳转https时访问未加https可能会打不开
image


b)缓存所有内容:规则>页面规则
缓存可以存储到CF边缘节点 加快打开速度 大大减少B类操作
image


不过超过512MB的R2文件 CF 不会缓存(详见 https://developers.cloudflare.com/cache/about/default-cache-behavior)

c)不缓存大于500MB的视频 这个自己配置吧,需要知道的是大于512MB的视频需要增加一条不缓存规则 否则会出现进度条无法拖动或者视频无法播放(感谢@Oracle. 大佬的指导),但是不影响 视频或大于512MB文件的下载,下载速度还是不限速

d)关闭自动程序攻击模式:安全性>自动程序>关闭

不关闭可能会被误判导致无法wget下载(详见 v2ex.com/t/893933 #10楼)

5建议配置

e)显示所有请求IP:安全性>WAF
image


这样设置后就可以在”安全性>概述”看到所有访问者IP
image

另外推荐一下 可以将r2.smalljp.com换为”contain(包含)”主域名smalljp.com 查看所有访问者IP 并且看到哪些IP被阻挡 为什么被阻挡

f)屏蔽境外访问:安全性>WAF
image

这个和配置(b)一样 都是防刷B操作。如需开启规则(f) 请将(f)放在(e)前 因为匹配规则为优先匹配,我的配置
image

g)请求速度限制:安全性>WAF>速率限制规则 这个自己配置吧 也是为了防刷,可以参考:https://hostloc.com/thread-1094822-1-1.html

删除中途停止导致未完成上传的文件

S3协议未上传完成的文件会消耗存储桶空间(比如上传时ssh突然断开导致上传中止),但是不会在存储桶文件目录显示,这时需要删去

参考:https://rclone.org/oracleobjectstorage/#cleanup

1
2
3
4
5
6
7
8
9
10
#列出未完成的上传

rclone backend list-multipart-uploads myr2:tanglu




#清除该文件夹一分钟之前还未完成的上传
#-o 是指定时间 1h 2d 3w 4m 等等
rclone backend cleanup -o max-age=1m myr2:tanglu/test

6杂谈

R2免费套餐:每月10G A类操作前一百万次免费 B类操作前一千万次免费(详见 https://developers.cloudflare.com/r2/platform/pricing)

R2国内速度:R2国外可以跑满 国内似乎也可以跑满?(之前做过一次统计似乎反馈还不错 https://hostloc.com/thread-1093052-1-1.html)

速度似乎不错:CF R2国内流媒体速度测试

支持对象存储的程序:alist rclone nextcloud ,还有什么我也不知道 欢迎大佬补充

R2只支持https访问,使用CDN反代文件记得设置https回源

image

上一页
2023-11-23 13:13:34
下一页