GHProxy V2 更新说明

我们很高兴地宣布 GHProxy v2 正式发布!这个版本带来了性能侧与用户侧的优化,主要更新如下:

CHANGLOG (更新日志)

  • CHANGE: 重构proxy核心模块, 使用Chuncked Buffer传输数据, 减少内存占用
  • REMOVE: caddy
  • REMOVE: nocache
  • CHANGE: 优化前端页面, 增加更多功能(来自1.8.1版本, 原本也是为v2所设计的)

项目地址

Demo

TG讨论群组

前端界面: ghproxy-demo.png ghproxy-demo-dark.png

主要更新

性能优化

我们在v2版本中重构了proxy核心模块,将req库替换为net/http库,使用Chunked传输, 同时加入Buffer分块刷写, 大幅降低大文件传输时的内存占用。

由于reqnet/http标准库出色的兼容性,代码架构并没有巨变, 但我们借此机会对代码结构进行了整理,使其更加清晰易读。

关于此改进, 请参看 Golang 中的分块传输:核心概念与实现

前端优化

我们在v1.8.1版本中对前端页面进行了实验性改进,目前已确立为v2版本的前端界面。

v2的前端采用了更加现代化的设计语言, 并对多端适配进行了优化。

配置变动

v1 -> v2 配置格式并无巨大变动(仅增加bufferSize配置项), 从v1升级到v2需注意host与port配置

[server]
host = "0.0.0.0"  # 监听地址
port = 8080  # 监听端口
sizeLimit = 125 # 125MB
bufferSize = 4096 # Bytes 缓冲区大小
enableH2C = "on"  # 是否开启H2C传输(latest和dev版本请开启) on/off

[pages]
enabled = false  # 是否开启内置静态页面(Docker版本请关闭此项)
staticPath = "/data/www"  # 静态页面文件路径

[log]
logFilePath = "/data/ghproxy/log/ghproxy.log" # 日志文件路径
maxLogSize = 5 # MB 日志文件最大大小

[cors]
enabled = true  # 是否开启跨域

[auth]
authMethod = "parameters" # 鉴权方式,支持parameters,header
authToken = "token"  # 用户鉴权Token
enabled = false  # 是否开启用户鉴权

[blacklist]
blacklistFile = "/data/ghproxy/config/blacklist.json"  # 黑名单文件路径
enabled = false  # 是否开启黑名单

[whitelist]
enabled = false  # 是否开启白名单
whitelistFile = "/data/ghproxy/config/whitelist.json"  # 白名单文件路径

[rateLimit]
enabled = false  # 是否开启速率限制
rateMrthod = "total" # "ip" or "total" 速率限制方式
ratePerMinute = 180  # 每分钟限制请求数量
burst = 5  # 突发请求数量

结语

GHProxy v2 是一个新的起点, 我们对项目的性能与内存占用进行了优化, 并对前端界面进行了改进, 希望能给广大开发者带来更加优质的体验。

我们感谢所有用户的支持与反馈,并期待 GhProxy v2 能为您的开发工作带来更大的便利和效率!若此项目对您有所帮助,请不要忘记 star 本项目 ,您的支持是我们前进的动力!

本文最初发表于 WJQSERVER的博客 ;WJQserver-Studio旗下所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载需注明出处!