项目简介
基于Go的高性能,多功能,可扩展的Github代理
- ⚡ 基于 Go 语言实现,跨平台的同时提供高并发性能
- 🌐 使用字节旗下的 HertZ 作为 Web 框架
- 📡 使用 Touka-HTTPC 作为 HTTP 客户端
- 📥 支持 Git clone、raw、releases 等文件拉取
- 🎨 支持多个前端主题
- 🚫 支持自定义黑名单/白名单
- 🗄️ 支持 Git Clone 缓存(配合 Smart-Git)
- 🐳 支持 Docker 部署
- ⚡ 支持速率限制
- 🔒 支持用户鉴权
- 🐚 支持 shell 脚本嵌套加速
转到WJQserver的博客以获得更好的阅读体验,
CHANGLOG (更新日志)
3.0.0 - 2025-04-04
- RELEASE: Next Gen; 下一个起点;
- CHANGE: 使用HertZ框架重构, 提升性能
- CHANGE: 前端在构建时加入, 新增
Design,Metro,Classic主题 - CHANGE: 加入
Mino主题对接选项 - FIX: 修正部分日志输出问题
- CHANGE: 移除gin残留
- CHANGE: 移除无用传入参数, 调整代码结构
- CHANGE: 改进cli
- CHANGE: 改进
脚本嵌套加速处理器 - CHANGE&FIX: 使用
c.SetBodyStream方式, 修正此前chunked传输中存在的诸多问题, 参看HertZ Issues #1309 - PORT: 从v2移植
matcher相关改进 - CHANGE: 增加默认配置生成
- CHANGE: 优化前端资源加载
- CHANGE: 将
cfgflag改为c以符合POSIX规范 - CHANGE: 为
smart-git添加no-cache标头
主要更新
更换HTTP框架
由Gin框架迁移到HertZ框架以提升高并发和密集数据流下的性能和效率

上图为HertZ, Gin, Fiber, FastHttp性能的对比
- 由图一可以看到HertZ在大部分情况下的QPS(每秒请求数)均有所领先
- 由图二图三可以看到TP999和TP99, HertZ在大部分情况下低于对手, 领先于对手
QPS为每秒请求数, 越高越好 TP999和TP99和1%lowFPS概念类似, TP99代表 99% 的 HTTP 请求的响应时间都小于TP99的值
前端改进
加入更多前端主题的同时, 将前端分离到单独仓库, 参看GHProxy前端仓库
Cli改进
root@root:/data/ghproxy$ ghproxy -h
-c string
config file path (default "/data/ghproxy/config/config.toml")
-cfg value
exit
-h show help message and exit
-v show version and exit
-c
类型:string
默认值:/data/ghproxy/config/config.toml
示例:ghproxy -c /data/ghproxy/demo.toml-cfg
已弃用, 被-c替代-h
显示帮助信息-v
显示版本号
配置文件
config.toml 是 ghproxy 的主配置文件,采用 TOML 格式。您可以通过修改此文件来定制 ghproxy 的各项功能,例如服务器端口、连接设置、Git 克隆模式、日志级别、认证方式、黑白名单以及限速策略等。
以下是 config.toml 文件的详细配置项说明:
[server]
host = "0.0.0.0"
port = 8080
sizeLimit = 125 # MB
H2C = true
cors = "*" # "*"/"" -> "*" ; "nil" -> "" ;
debug = false
[httpc]
mode = "auto" # "auto" or "advanced"
maxIdleConns = 100 # only for advanced mode
maxIdleConnsPerHost = 60 # only for advanced mode
maxConnsPerHost = 0 # only for advanced mode
[gitclone]
mode = "bypass" # bypass / cache
smartGitAddr = "http://127.0.0.1:8080"
ForceH2C = false
[shell]
editor = false
rewriteAPI = false
[pages]
mode = "internal" # "internal" or "external"
theme = "bootstrap" # "bootstrap" or "nebula"
staticDir = "/data/www"
[log]
logFilePath = "/data/ghproxy/log/ghproxy.log"
maxLogSize = 5 # MB
level = "info" # dump, debug, info, warn, error, none
[auth]
method = "parameters" # "header" or "parameters"
token = "token"
key = ""
enabled = false
passThrough = false
ForceAllowApi = false
[blacklist]
blacklistFile = "/data/ghproxy/config/blacklist.json"
enabled = false
[whitelist]
enabled = false
whitelistFile = "/data/ghproxy/config/whitelist.json"
[rateLimit]
enabled = false
rateMethod = "total" # "ip" or "total"
ratePerMinute = 180
burst = 5
[outbound]
enabled = false
url = "socks5://127.0.0.1:1080" # "http://127.0.0.1:7890"
配置项详细说明
-
[server]- 服务器配置host: 监听地址。- 类型: 字符串 (
string) - 默认值:
"0.0.0.0"(监听所有) - 说明: 设置
ghproxy监听的网络地址。通常设置为"0.0.0.0"以监听所有可用的网络接口。
- 类型: 字符串 (
port: 监听端口。- 类型: 整数 (
int) - 默认值:
8080 - 说明: 设置
ghproxy监听的端口号。
- 类型: 整数 (
sizeLimit: 请求体大小限制。- 类型: 整数 (
int) - 默认值:
125(MB) - 说明: 限制允许接收的请求体最大大小,单位为 MB。用于防止过大的请求导致服务压力过大。
- 类型: 整数 (
H2C: 是否启用 H2C (HTTP/2 Cleartext) 传输。- 类型: 布尔值 (
bool) - 默认值:
true(启用) - 说明: 启用后,允许客户端使用 HTTP/2 协议进行无加密传输,提升性能。
- 类型: 布尔值 (
cors: CORS (跨域资源共享) 设置。- 类型: 字符串 (
string) - 默认值:
"*"(允许所有来源) - 可选值:
""或"*": 允许所有来源跨域访问。"nil": 禁用 CORS。- 具体的域名: 例如
"https://example.com",只允许来自指定域名的跨域请求。
- 说明: 配置 CORS 策略,用于控制哪些域名可以跨域访问
ghproxy服务。
- 类型: 字符串 (
debug: 是否启用调试模式。- 类型: 布尔值 (
bool) - 默认值:
false(禁用) - 说明: 启用后,
ghproxy会输出更详细的日志信息,用于开发和调试。
- 类型: 布尔值 (
-
[httpc]- HTTP 客户端配置mode: HTTP 客户端模式。- 类型: 字符串 (
string) - 默认值:
"auto"(自动模式) - 可选值:
"auto": 自动模式,使用默认的 HTTP 客户端配置,适用于大多数场景。"advanced": 高级模式,允许自定义连接池参数,可以更精细地控制 HTTP 客户端的行为。
- 说明: 选择 HTTP 客户端的运行模式。
- 类型: 字符串 (
maxIdleConns: 最大空闲连接数 (仅在高级模式下生效)。- 类型: 整数 (
int) - 默认值:
100 - 说明: 设置 HTTP 客户端连接池中保持的最大空闲连接数。
- 类型: 整数 (
maxIdleConnsPerHost: 每个主机最大空闲连接数 (仅在高级模式下生效)。- 类型: 整数 (
int) - 默认值:
60 - 说明: 设置 HTTP 客户端连接池中,每个主机允许保持的最大空闲连接数。
- 类型: 整数 (
maxConnsPerHost: 每个主机最大连接数 (仅在高级模式下生效)。- 类型: 整数 (
int) - 默认值:
0(不限制) - 说明: 设置 HTTP 客户端连接池中,每个主机允许建立的最大连接数。设置为
0表示不限制。
- 类型: 整数 (
-
[gitclone]- Git 克隆配置mode: Git 克隆模式。- 类型: 字符串 (
string) - 默认值:
"bypass"(绕过模式) - 可选值:
"bypass": 绕过模式,直接克隆 GitHub 仓库,不使用任何缓存加速。"cache": 缓存模式,使用智能 Git 服务加速克隆,需要配置smartGitAddr。
- 说明: 选择 Git 克隆的模式。
- 类型: 字符串 (
smartGitAddr: 智能 Git 服务地址 (仅在缓存模式下生效)。- 类型: 字符串 (
string) - 默认值:
"http://127.0.0.1:8080" - 说明: 当
mode设置为"cache"时,需要配置智能 Git 服务的地址,用于加速 Git 克隆。
- 类型: 字符串 (
ForceH2C: 是否强制使用 H2C 连接到智能 Git 服务。- 类型: 布尔值 (
bool) - 默认值:
false(不强制) - 说明: 如果智能 Git 服务支持 H2C,可以设置为
true以强制使用 H2C 连接,提升性能。
- 类型: 布尔值 (
-
[shell]- Shell 嵌套加速功能配置editor: 是否启用编辑(嵌套加速)功能。- 类型: 布尔值 (
bool) - 默认值:
false(禁用) - 说明: 启用后, 会修改
.sh文件内容以实现嵌套加速
- 类型: 布尔值 (
rewriteAPI: 是否重写 API 地址。- 类型: 布尔值 (
bool) - 默认值:
false(禁用) - 说明: 启用后,
ghproxy会重写脚本内的Github API地址。
- 类型: 布尔值 (
-
[pages]- Pages 服务配置mode: Pages 服务模式。- 类型: 字符串 (
string) - 默认值:
"internal"(内置 Pages 服务) - 可选值:
"internal": 使用ghproxy内置的 Pages 服务。"external": 使用外部 Pages 位置。
- 说明: 选择 Pages 服务的运行模式。
- 类型: 字符串 (
theme: Pages 主题。- 类型: 字符串 (
string) - 默认值:
"bootstrap" - 可选值: 参看GHProxy项目前端仓库
- 说明: 设置内置 Pages 服务使用的主题。
- 类型: 字符串 (
staticDir: 静态文件目录。- 类型: 字符串 (
string) - 默认值:
"/data/www" - 说明: 指定外置 Pages 服务使用的静态文件目录。
- 类型: 字符串 (
-
[log]- 日志配置logFilePath: 日志文件路径。- 类型: 字符串 (
string) - 默认值:
"/data/ghproxy/log/ghproxy.log" - 说明: 设置
ghproxy日志文件的存储路径。
- 类型: 字符串 (
maxLogSize: 最大日志文件大小。- 类型: 整数 (
int) - 默认值:
5(MB) - 说明: 设置单个日志文件的最大大小,单位为 MB。当日志文件大小超过此限制时,会进行日志轮转。
- 类型: 整数 (
level: 日志级别。- 类型: 字符串 (
string) - 默认值:
"info" - 可选值:
"dump","debug","info","warn","error","none" - 说明: 设置日志输出的级别。级别越高,输出的日志信息越少。
"dump": 输出所有日志,包括最详细的调试信息。"debug": 输出调试信息、信息、警告和错误日志。"info": 输出信息、警告和错误日志。"warn": 输出警告和错误日志。"error": 仅输出错误日志。"none": 禁用所有日志输出。
- 类型: 字符串 (
-
[auth]- 认证配置enabled: 是否启用认证。- 类型: 布尔值 (
bool) - 默认值:
false(禁用) - 说明: 启用后,需要提供正确的认证信息才能访问
ghproxy服务。
- 类型: 布尔值 (
method: 认证方法。- 类型: 字符串 (
string) - 默认值:
"parameters"(URL 参数) - 可选值:
"header"或"parameters""header": 通过请求头GH-Auth或自定义请求头 (通过key配置) 传递认证 Token。"parameters": 通过 URL 参数auth_token或自定义 URL 参数名 (通过Key配置) 传递认证 Token。
- 说明: 选择认证信息传递的方式。
- 类型: 字符串 (
key: 自定义认证 Key。- 类型: 字符串 (
string) - 默认值:
""(空字符串,使用默认的GH-Auth请求头或auth_tokenURL 参数名) - 说明: 可以自定义认证时使用的请求头名称或 URL 参数名。如果为空,则使用默认的
GH-Auth请求头或auth_tokenURL 参数名。
- 类型: 字符串 (
token: 认证 Token。- 类型: 字符串 (
string) - 默认值:
"token" - 说明: 设置认证时需要提供的 Token 值。
- 类型: 字符串 (
passThrough: 是否认证参数透穿到Github。- 类型: 布尔值 (
bool) - 默认值:
false(不允许) - 说明: 如果设置为
true,相关参数会被透穿到Github。
- 类型: 布尔值 (
ForceAllowApi: 是否强制允许 API 访问。- 类型: 布尔值 (
bool) - 默认值:
false(不强制允许) - 说明: 如果设置为
true,则强制允许对 GitHub API 的访问,即使未启用认证或认证失败。
- 类型: 布尔值 (
-
[blacklist]- 黑名单配置enabled: 是否启用黑名单。- 类型: 布尔值 (
bool) - 默认值:
false(禁用) - 说明: 启用后,
ghproxy将根据blacklist.json文件中的规则阻止对特定用户或仓库的访问。
- 类型: 布尔值 (
blacklistFile: 黑名单文件路径。- 类型: 字符串 (
string) - 默认值:
"/data/ghproxy/config/blacklist.json" - 说明: 指定黑名单配置文件的路径。
- 类型: 字符串 (
-
[whitelist]- 白名单配置enabled: 是否启用白名单。- 类型: 布尔值 (
bool) - 默认值:
false(禁用) - 说明: 启用后,
ghproxy将只允许访问whitelist.json文件中规则指定的用户或仓库。白名单的优先级高于黑名单。
- 类型: 布尔值 (
whitelistFile: 白名单文件路径。- 类型: 字符串 (
string) - 默认值:
"/data/ghproxy/config/whitelist.json" - 说明: 指定白名单配置文件的路径。
- 类型: 字符串 (
-
[rateLimit]- 限速配置enabled: 是否启用限速。- 类型: 布尔值 (
bool) - 默认值:
false(禁用) - 说明: 启用后,
ghproxy将根据配置的策略限制请求速率,防止服务被滥用。
- 类型: 布尔值 (
rateMethod: 限速方法。- 类型: 字符串 (
string) - 默认值:
"total"(全局限速) - 可选值:
"ip"或"total""ip": 基于客户端 IP 地址进行限速,每个 IP 地址都有独立的速率限制。"total": 全局限速,所有客户端共享同一个速率限制。
- 说明: 选择限速的策略。
- 类型: 字符串 (
ratePerMinute: 每分钟允许的请求数。- 类型: 整数 (
int) - 默认值:
180 - 说明: 设置每分钟允许通过的最大请求数。
- 类型: 整数 (
burst: 突发请求数。- 类型: 整数 (
int) - 默认值:
5 - 说明: 允许在短时间内超过
ratePerMinute的突发请求数。
- 类型: 整数 (
-
[outbound]- 出站代理配置enabled: 是否启用出站代理。- 类型: 布尔值 (
bool) - 默认值:
false(禁用) - 说明: 启用后,
ghproxy将通过配置的代理服务器转发所有出站请求。
- 类型: 布尔值 (
url: 出站代理 URL。- 类型: 字符串 (
string) - 默认值:
"socks5://127.0.0.1:1080" - 支持协议:
socks5://和http:// - 说明: 设置出站代理服务器的 URL。支持 SOCKS5 和 HTTP 代理协议。
- 类型: 字符串 (
前端主题一览
Bootstrap
使用Bootstrap框架制作的前端页面, v2默认主题


许可证: WJQserver Studio License v2.0
Nebula
在 https://github.com/WJQSERVER-STUDIO/ghproxy/pull/49 加入的主题, 作者为 @liangshengmoran


许可证: MIT License
mino
作者为 @admin8800

许可证: MIT License Copyright (c) admin8800
Design
在v3加入的新主题


许可证: WJQserver Studio License v2.0
Classic
来自GHProxy v1阶段的前端页面, 回味项目起点


许可证: WJQserver Studio License v2.0
Metro
磁贴风格


许可证: WJQserver Studio License v2.0
结语
我们感谢所有用户的支持与反馈,并期待 GhProxy v3 能为您带来更大的便利和效率!若此项目对您有所帮助,请不要忘记 star 本项目,您的支持是我们前进的动力!
沙发赞 手动收藏
手动收藏
https://github.hiv-info.com/ 支持佬友~
有一说一, 这 semver 刷得实在是, 这么快就 3.X 了()
@Hantong #4
没办法, break了就要换
更换http框架这种变动不更新大版本号也说不过去
3.0.1