惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

小众软件
小众软件
IT之家
IT之家
博客园 - 聂微东
www.infosecurity-magazine.com
www.infosecurity-magazine.com
P
Privacy International News Feed
人人都是产品经理
人人都是产品经理
PCI Perspectives
PCI Perspectives
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 叶小钗
V
Vulnerabilities – Threatpost
美团技术团队
S
Secure Thoughts
N
News | PayPal Newsroom
L
LINUX DO - 最新话题
腾讯CDC
Application and Cybersecurity Blog
Application and Cybersecurity Blog
雷峰网
雷峰网
B
Blog
MyScale Blog
MyScale Blog
T
The Blog of Author Tim Ferriss
TaoSecurity Blog
TaoSecurity Blog
N
News and Events Feed by Topic
Blog — PlanetScale
Blog — PlanetScale
C
Check Point Blog
T
Tailwind CSS Blog
月光博客
月光博客
Simon Willison's Weblog
Simon Willison's Weblog
Hacker News: Ask HN
Hacker News: Ask HN
The Last Watchdog
The Last Watchdog
Google DeepMind News
Google DeepMind News
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
MongoDB | Blog
MongoDB | Blog
S
Security @ Cisco Blogs
Jina AI
Jina AI
Engineering at Meta
Engineering at Meta
S
Security Affairs
Forbes - Security
Forbes - Security
P
Palo Alto Networks Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
博客园 - 司徒正美
博客园 - 三生石上(FineUI控件)
T
Tor Project blog
O
OpenAI News
L
Lohrmann on Cybersecurity
Security Archives - TechRepublic
Security Archives - TechRepublic
P
Proofpoint News Feed
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
L
LangChain Blog
B
Blog RSS Feed
H
Hackread – Cybersecurity News, Data Breaches, AI and More

澄沨的漫游茶记

岁暮杂记 在 KOReader 上显示直排文本 虎落平阳:TNO 美国罗伯特·F·肯尼迪线·前篇 烟火·乙巳 蜀都行纪 实习日 事故小记 烟火·甲辰 藏地行纪 元旦杂记 浴火重生:TNO 东方红西北国防阵线党权线·后篇 太阳旗之下:TNO 东方红西北国防阵线党权线·前篇 尚在人间:TNO 乌克兰-苏维埃社会主义共和国线 上海电信 SDN 网关全局域网皆可收看 IPTV 的实现 论 AList 的滥用:多平台串联搭建个人影音-番剧流媒体服务 俄罗斯已逝:TNO 俄罗斯科米-神俄线·后篇 紫日高悬:TNO 俄罗斯科米-神俄线·前篇 The Pure WINDOWS Project: 使用 Windows Sandbox 隔离腾讯系软件的笔记 廣東手艺人:TNO 广东国索尼-长江实业线 使用 PaaS 服务部署 umami 统计工具的笔记 柏林春晓:TNO 德国施佩尔左线 闲话 COMICUP 与敝站 解决小米手机在 fastboot 模式下不被 Windows 识别的问题 贺正·癸卯 MIUI 下观看 Netflix 等流媒体时 Widevine DRM L1 认证失效之解决 崇明骑行纪事·合 磊哥小传 崇明骑行纪事·转 让 Hyper-V 虚拟机支持调用 USB 摄像头 崇明骑行纪事·起承 炎夏小憩 飞哥小传 さよなら、WordPress 博客流浪纪事 moe-counter-cf:将萌萌计数器部署到 Cloudflare Workers 烟火·迪士尼 红十字救护员培训小记 迁移到了狗云 探索优雅纯粹的追番体验:蜜柑计划 + Resilio Sync Moe-counter: 给网站装上多种风格可选的萌萌计数器 疫情,在下的朋友圈拾遗 Postcrossing 初探小记 解决 Github 同步复刻上游仓库时冲突的问题 使用甲骨文免费云服务器搭建 frp 内网穿透工具的笔记 「在下」的两周年 The Pure WINDOWS Project: Hyper-V 虚拟机使用笔记 The Pure MIUI Project: 小米 10 刷机笔记 烟火·壬寅 贝恩小传「大盛り」 非法侵入住宅罪之浅究 碧蓝航线舰娘原型考据「铁血驱逐篇」 贰拾 火警纪事 观 EDG 夺冠有感 华硕路由器实现远程唤醒局域网设备的笔记 军训随笔 夏日蓝调 在 Wordpress 博客里创建彩色标签云页面的笔记 贝恩小传 迁移到了 Bandwagon Host 杂诗二首 来给 WordPress 添加一个书单页面吧 乡影随摄 从刑法的报复主义论中国刑法的发展 漫谈二次元的「破圈」 浅谈「FBI WARNING」 とある魔都の ACGN 巡礼目録 桜色 在 WordPress 上添加 moc3 Live2d 看板娘的超简单方法 COVID-19 疫苗接种全纪录 Steam 转区小记 元旦 更新主题为 Sakurairo 华为 HarmonyOS / EMUI 安装 GMS 谷歌框架的笔记 下载没有下载权限的钉钉直播回放的笔记 Re:从零开始的 Windows 简明优化指南 Re:从零开始的计算机使用指南 使用 ADB 工具箱卸载手机预装应用 基于宝塔面板的 Google Drive 百宝箱搭建笔记 The Story of the Snake | 蛇纪事 参议院纪事 箱轮纪事
使用 Cloudflare Workers 加速甲骨文存储桶
澄沨 · 2022-10-02 · via 澄沨的漫游茶记

在经历了博客流浪纪事中四迁博客的奇妙历险之后,老东家狗云的表现却出乎故事结局走向和所有人意料的,掉了链子。国庆前夕,也不知是否因为不可知的力量作祟,在下的博客又喜提 200+ms 的延迟,长达三四天也没有恢复,于是,在下就又动了迁站的念头。

给在下开狗云机子的兄弟听说了在下的情况,竟直接全款赞助了在下一台 TOTYUN HKG-CN2-2C2G 的小鸡。说实话,在下实在有些受宠若惊,这台机子的完美程度远超预期,若是硬要挑毛病出来,只能是它那 10M 的带宽拖了后腿。经过迁站后的体感测试,发现敝站在加载多图页面时确实有些力不从心。这也难怪,自从 jsDelivr 在大陆访问不畅,敝站的静态资源就几乎全搬到了源站。之前在下使用的服务器,带宽最少也有 30M,同时加载多图的压力自然不大,而如今在服务器只有 10M 带宽的情况下,就显得捉襟见肘了。好在对于这个问题,在下也早已有了心理准备。在下在最初存放静态资源时,就特意为其分配了专用的三级域名,并将其与主站内容分开,为日后可能需要的迁移尽可能做好了准备。

对于静态资源的存放点,在下选择了甲骨文,每个甲骨文账户都拥有免费的 10G 对象存储和 10G 归档存储,并且它们产生的流量都是算在每月 10T 的免费流量里的,也就是说,以敝站的体量,将静态资源放在甲骨文存储桶与白嫖并无相异。唯一的问题在于甲骨文存储桶在大陆的访问体验不行,经过一番搜索,在下发现能够使用 Cloudflare Workers 为甲骨文存储桶提供加速,折腾之旅就此再度开始。

创建甲骨文存储桶

这一步比较简单,登录 Oracle Cloud 之后找到入门选项卡,点选启动资源中的存储数据,自拟存储桶名称,点击创建即可。

创建完成之后转到存储桶详细信息,找到常规下的名称空间,将其记下;在看到浏览器地址栏末尾,记下 Oracle 的地域标识,比如在下的是 ap-chuncheon-1

点击编辑可见性,将可见性设为公共

至此,存储桶建立完成,Oracle 存储桶支持通过 Amazon S3 的协议进行管理,迁移资源非常方便,但鉴于相关教程泛滥,具体步骤在这里就不加赘述了。

配置 reflare

Xiaoyang Liu 大佬开发的 reflare 项目是实现使用 Cloudflare Workers 加速甲骨文存储桶的理想方案,根据其官方文档的描述可对该项目初知一二:

Reflare is a lightweight and scalable reverse proxy and load balancing library built for Cloudflare Workers. It sits in front of web servers (e.g. web application, storage platform, or RESTful API), forwards HTTP requests or WebSocket traffics from clients to upstream servers, and transforms responses with several optimizations to improve page loading time.

配置 reflare 需要用到 Wrangler-CLI,它是 Cloudflare Workers 的命令行工具,提供了一个简略的接口,能够让你在本地开发环境中使用 Cloudflare Workers。Wrangler-CLI 需要 Node.js 环境才能运行。

使用环境准备就绪后,打开系统命令行工具。

安装 Wrangler-CLI:

1
npm install -g wrangler

上面安装的过程中如果出现权限问题,需要使用管理员权限执行。

可以执行 wrangler --version 来确认 Wrangler-CLI 是否被成功安装,若安装成功,则会返回版本号。

接着,输入如下命令对 Wrangler 进行授权:

1
wrangler login

浏览器会弹出 Cloudflare 的授权界面,根据提示点击授权即可,若没有弹出界面,可以手动复制出现的链接到浏览器访问。

键入如下命令创建一个 reflare 项目:

1
2
3
wrangler generate reflare-app https://github.com/xiaoyang-sde/reflare-template
cd reflare-app
npm install

注意:在 Windows 系统中,上述命令可能执行失败,无法拉取对应仓库的文件,这时只能手动放入,输入不带仓库地址的创建项目命令:

1
wrangler generate reflare-app

创建成功后会提示项目文件夹路径,删除这个文件夹中的所有内容,然后将 reflare-template 里的所有文件下载下来,全部复制到这个文件夹当中,之后再执行 cd reflare-appnpm install 命令。

项目创建完成后,在项目文件夹路径下找到 index.ts,打开它并做如下编辑,结合实际情况替换 名称空间地域标识cors 下的 https://example.com

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import useReflare from 'reflare';

const handleRequest = async (
request: Request,
): Promise<Response> => {
const reflare = await useReflare();

reflare.push({
path: '/*',
upstream: {
domain: '名称空间.compat.objectstorage.地域标识.oraclecloud.com',
protocol: 'https',
},

cors: {
origin: ['https://example.com'],
methods: ['GET', 'POST'],
credentials: true,
},
});

return reflare.handle(request);
};

addEventListener('fetch', (event) => {
event.respondWith(handleRequest(event.request));
});

创建 Cloudflare Workers

这一步需要拥有一个 Cloudflare 账号,若不曾拥有,须注册之。另外,还需准备一个域名,由于 Cloudflare Workers 自动分配的域名处于被墙的状态,因此若不绑定自有域名,存储桶里的资源将无法在中国大陆地区成功加载。

找到侧边栏的 Workers,点击创建服务。服务名称填自拟,启动器就选择默认的 HTTP 处理程序

接下来要将准备好的域名转移到 Cloudflare 解析,选择侧边栏中的网站,点击添加站点,添加上准备好的域名,按照页面出现的提示前往域名的注册商处更改 NS 记录,NS 记录的更改需要一定时间,在 NS 记录同步完成之前,可以先进行下面不涉及域名操作的步骤。

当 Cloudflare 提醒站点添加成功,进入网站,选择准备好的域名,看到页面右侧下方,找到 API,记录下账户 ID

选择侧边栏中的 DNS,添加一个 A 记录,自拟一个三级域名给 reflare,IPv4 地址可以随便填,例如 8.8.8.8,记得开启代理的橙色云朵。

回到刚刚创建的 Workers,点击触发器,找到路由,选择添加路由,填写刚刚添加的三级域名 YOUR_DOMAIN/* ,如 api.champhoon.xyz/* ,下面的区域就选择对应的二级域名,设置完成别忘记保存。

部署并使用

来到之前在本地创建的 reflare 项目文件夹路径,对 wrangler.toml 做如下编辑:

1
2
3
name = "" 
main = "src/index.ts"
compatibility_date = "2023-04-09"

编辑完成后保存,所有配置就此宣告终结。

在项目路径打开命令行工具,输入 npm run dev 以测试 reflare 是否成功运作。假如配置没有出问题,程序会返回几个本地地址以供测试,使用浏览器访问其中一个地址,命令行会输出绿色的访问成功提示;进一步访问存储桶里具体的文件,如 127.0.0.1:8787/存储桶名称/path/to/文件.xxx ,如能加载出对应的文件且命令行无其他报错则表示一切正常,大功告成。

最后,按 Ctrl + C 退出测试环境,运行 npm run publish 将项目部署到 Cloudflare Workers。

部署完成后,只需使用 https://YOUR_DOMAIN/存储桶名称/path/to/文件.xxx 访问存储桶里的文件,即可实现 Cloudflare Workers 对甲骨文存储桶的加速。