前言
项目地址dangjinghao/TheresaProxy: 响应体修改 多反代节点重定向实现 反向代理资源缓存 插件系统 开箱即用 (github.com)
搭建这个项目的主要是为了实现自己理解的插件系统,练习JavaScript语言。但是经过了很长时间后也依旧没有新增star(压根就没人看吧!)由于我本身实力有限,导致无法让自己写的项目更加完善。所以厚颜无耻跑过来写个介绍文章让更多人看见
项目特色
其实项目特色全都写到slogan上了。。。
响应体修改
反向代理资源缓存
多反代节点重定向
插件系统
这些功能全是我在使用nginx反代搭建站点时候发现的问题。正是为了解决这些问题才写出了这个项目。
响应体修改
我发现在反代站点的响应体内容中存在一些不能正常访问的url,即使我搭建了反代服务由于使用者并没有访问这个反代站点从而导致服务从未被使用,url也不能被普通用户正常访问。
反向代理资源缓存
为了减少反代服务器资源占用,减少所反代的服务器资源占用(同时也由于nginx的反代服务也可以进行资源缓存)我实现了这个功能。
多反代节点重定向
本来这个功能是本项目的核心和特色。由于反代站点使用人数过多可能会被被反代站点ban掉。所以实现了这个功能。通过设置主站点,接收各个镜像站节点的信息,然后当用户访问主站点对应url时通过简单的计算,使用302重定向将用户定向到对应的反代站点。
但可惜实现的非常地草率。。也不知道之后如何实现。
插件系统
在最初版本代码编写完成后,项目只有上边这三个功能,当我尝试实现新的功能时,发现一个重要的问题。由于项目设计之初并未考虑过多特性,导致整体结构十分混乱,在它的基础上进行二次开发变得十分受苦。因此,为了解决这个问题,我尝试重构了这个项目,引入了插件系统,并将项目的大部分特点重写为插件。
开始使用
前置要求
- 安装最新版nodejs
- linux发行版
快速开始
- 使用
git clone
克隆仓库git clone https://github.com/dangjinghao/TheresaProxy
- 安装
nodejs
- 进入本库根目录
- 或许需要更换npm源
- 运行
npm install
补全项目依赖 - 修改
config/production.json
文件,将其中的target
配置项填写需要代理的站点地址,例如https://example.com/
- 使用
npm run serve
运行程序 - 查看端口(默认为3011),开始正常使用反向代理。
高级功能
不重点描述多节点重定向功能,你可以在dangjinghao/TheresaProxy: 响应体修改 多反代节点重定向实现 反向代理资源缓存 插件系统 开箱即用 (github.com)中查看。
重点讲讲我简单实现的插件系统
这个插件系统使用了hooks的概念
所有位于plugins/
的js文件都会被导入,当文件被导入时候会被执行。
插件文件中通过var plugin_register = new register()
以下是hooks
1 |
|
1 |
|
如果你想查看示范性代码,你可以查看plugins文件夹中预编写插件。
没啥可写的了。。。