新作品,一个通用的 Cloudflare Workers HTTP 反向代理

本文介绍我最近写的新作品:使用 Cloudflare Workers/Pages 搭建 HTTP 反向代理,代码已经全部开源在 GitHub,按照 README 里面的脚本搭建就可以了,非常简单。

GitHub:https://github.com/jonssonyan/cf-workers-proxy

支持任何 HTTP 请求代理,可用与镜像仓库国内加速。支持对请求进行 URL 过滤,User-Agent 过滤,IP 黑白名单,地区黑白名单,Nginx 伪装/302 重定向。

需要注意的是,建议自用,如果反代请求量太大,账号可能被官方风控,建议大家设置 IP 白名单,配合其他过滤条件。

Cloudflare 在全球都有节点,国内访问还是比较快的,以下是原理图

实测可以给 Docker 镜像仓库加速,其他镜像仓库同样如此操作即可,大家可以发挥自己的想象,应用于更多的场景。

起因是 Docker 镜像仓库被墙,找不到合适的替代,于是使用大善人的 Workers 实现 HTTP 反向代理,理论上支持代理任何被屏蔽的域名,只需要设置环境变量 PROXY_HOSTNAME 为被屏蔽的域名,最后通过你的 worker 自定义域名访问即可。

Cloudflare Workers/Pages 可以实现无服务器发布个人项目,Free 用户每日可以 10 万次请求,付费用户每月有 10 亿次请求,对于普通人来说,10 万次/天已经足够用了。

举个例子,GitHub 访问比较慢,我想代理 GitHub releases 文件的 URL,比如 https://github.com/jonssonyan/h-ui/releases/download/v0.0.5/h-ui-linux-amd64https://github.com/jonssonyan/h-ui/archive/refs/tags/v0.0.5.zip

环境变量可以设置为:

最终效果是只代理域名为 github.com,用户是 jonssonyan,该用户下所有仓库的 archive 和 releases 的 url(也可以通过正则来代理指定仓库的 url),只允许来自 curl 的请求,如果不满足条件则重定向到 https://github.com/jonssonyan/cf-workers-proxy

需要注意以下两点:

  1. 如果请求代理失败,可能是 CF 分配了一个被墙的 IP,这时候要做 IP 优选
  2. Free 账户,每日 10 万次请求,需要注意一下使用量
相关推荐
REDcker1 分钟前
Socket 带宽上限详解
网络
遇见火星32 分钟前
在Linux中使用parted对大容量磁盘进行分区详细过程
linux·运维·网络·分区·parted
Ar呐35 分钟前
软考网规篇之局域网——VLAN技术、城域以太网和以太环网
网络·计算机网络
qhqh3101 小时前
OPENSTACK基础的网络实验
网络·php·openstack
EmbedLinX2 小时前
一文理解后端核心概念:同步/异步、阻塞/非阻塞、进程/线程/协程
linux·服务器·c语言·网络
云服务器租用费用2 小时前
京东云主机企业用户能参与的优惠活动汇总
服务器·网络·京东云
abcy0712133 小时前
请简述OSI七层网络模型,并分别列举每一层的主要功能及对应的主要协议。
网络
郝学胜-神的一滴3 小时前
深入理解TCP协议:数据格式与核心机制解析
linux·服务器·网络·c++·网络协议·tcp/ip
梁辰兴3 小时前
计算机网络基础:传输层的两个主要协议
网络·计算机网络·计算机·协议·传输层·计算机网络基础·梁辰兴
Serendipity-Solitude3 小时前
TCP/IP协议栈深度解析技术文章大纲
网络·网络协议·tcp/ip