利用 Cloudflare Worker 反代 Blogger 站台
利用 Cloudflare Worker 反代 Blogger 站台 Tony内容
Cloudflare Worker 可以无服务器跑一些 js 小程序,网上已经有不少脚本了,例如做导航站。
本文介绍一个适用于 Cloudflare Worker 的代理程序 cf-revpxy ,特点是 一个 worker 反代多个站点,支持文本替换,资源替换功能。
原料
Github:https://github.com/KusakabeSi/cf-revpxy
一个使用 Cloudflare 解析的域名。
步骤
- 在 Cloudflare 新建一个 worker(❗切记选免费的 tier)
- 把 https://github.com/KusakabeSi/cf-revpxy/blob/main/worker.js 的内容贴到 worker 的 Script 编辑框里
- 代码最上面的部分(第二行开始)的 reverse = {} ,要按照 这里的模板修改 https://github.com/KusakabeSi/cf-revpxy/blob/main/reverse_demo.js
- 保存并且发布该 worker
- 在 Cloudflare 域名管理部分里的 Worker ,点击右面的 add route,输入反代后的域名例如 blogger.tonyhead.com 后加 /* (❗切记切记,否则打不开子页面),worker 下拉选择第一步新建的 worker,保存
- 在 Cloudflare 域名管理部分里的 DNS,添加 blogger 的 CNAME 记录,指向步骤1里的 workder 二级域名(类似 abc-xyz-1234.cf用户名.workers.dev),切记要打开橙色云,然后保存
- 访问 https://blogger.tonyhead.com,就是你看到的这里 🙌💐
需要调整的地方
回到上面步骤3的 reverse 段落,对 "replace": {}, "reverse": {}, "redirect": {} 字段进行修改(类似 Nginx 的 sub_filter),来达到替换静态资源/路径的目的。具体什么意思,请参考步骤3里的例子。
例如 CF 刚好分配到欧盟的 IP 的话,会触发欧盟的 cookie 通知,导致页面会多一段 cookiechoices.js,利用 "replace": { '/js/cookienotice.js': '',} 就可以轻松去掉。
强大的替换功能甚至可以不用再通过注释解义去修改模板文件了( </head> -> </head><!---->, </body> -> <!--</body>--></body> 这种),对模板的“伤害 ”可以尽量减少,分享皮肤起来也更加方便。
缺点
- CF 橙色云有众所周知的网络问题
- 因为在 blogger 后台不用设置域名,所以反代后的域名对不上,有可能申请不了AdSense
- 需要搜索功能的话还是得找个空间储存 indie_compiled.js
- 需要小控件的话(例如分享按钮)还是得找个空间储存 widgets.js
优点
- 设置简单
- 不用服务器
- 不用找可用 GHS IP
- 移动版同样可用
- 强大的替换功能如上所述
- 一个 worker 可以反代 N 个网站
- https 证书由 Cloudflare 自动签发