使用Openresty请求重写来代理Clash rules文件
背景
clash-rules 项目提供了很多clash代理规则集,包含了大多数的场景,省去了我们维护的必要性。
日常使用时,我们只需要在此基础上我们再添加自定义的rule即可。
由于rules是需要通过http请求github的原始文件主机https://raw.githubusercontent.com
进行下载的,因此如果下载时机器没有设置代理,就会导致网络问题无法链接,实际情况一直提示超时报错。虽然项目也提供了jsdelivr.net
的cdn代理,但经过测试网络连接依然不够理想。
考虑到我手上有一台海外的VPS,因此可以用来做一层代理,将rule-providers
的下载的url替换掉,这样即可解决问题。
实际上在此之前已经有了方案V1,python脚本+crontab来定时下载最新的release文件。
虽然一直以来都工作正常,但总觉不够优雅,于是有了现在的v2方案:基于openresty的rewrite_by_lua_block
指令重写请求的机制来实现。