配置说明 #
config.toml - 主配置文件
#
config.toml 是 ghproxy 的主配置文件. 您可以通过修改此文件来定制 ghproxy 的各项功能.
[server] - 服务器配置
#
此部分用于配置 ghproxy 监听的网络地址, 端口以及基础的请求限制.
[server]
host = "0.0.0.0"
port = 8080
sizeLimit = 125
memLimit = 0
cors = "*"
debug = false
host:ghproxy监听的网络地址. 默认"0.0.0.0"表示监听所有可用的网络接口.port:ghproxy监听的端口号. 默认8080.sizeLimit: 允许接收的请求体最大大小, 单位为 MB. 默认125.memLimit: 为 Goruntime提供的内存限制指标 (MB), 用于优化垃圾回收 (GC) 行为. 默认0表示不设置.cors: 配置跨域资源共享 (CORS) 策略."*"或""(默认): 允许所有来源."nil": 禁用 CORS."https://example.com": 只允许特定来源.
debug: 启用调试模式, 会输出更详细的日志. 默认false.
[httpc] - HTTP 客户端配置
#
此部分用于配置 ghproxy 向外部 (如 GitHub) 发送请求时所使用的 HTTP 客户端的行为.
[httpc]
mode = "auto"
maxIdleConns = 100
maxIdleConnsPerHost = 60
maxConnsPerHost = 0
useCustomRawHeaders = false
mode: HTTP 客户端模式."auto"(默认): 使用默认配置, 适用于大多数场景."advanced": 允许自定义下方的连接池参数.
maxIdleConns: (高级模式) 连接池中保持的最大空闲连接数. 默认100.maxIdleConnsPerHost: (高级模式) 每个主机保持的最大空闲连接数. 默认60.maxConnsPerHost: (高级模式) 每个主机的最大连接数.0(默认) 表示不限制.useCustomRawHeaders: 是否使用预定义的 Headers 访问 GitHub Raw 内容, 以避免潜在的封锁. 默认false.
[gitclone] - Git 克隆配置
#
配置 git clone 命令通过代理时的加速行为.
[gitclone]
mode = "bypass"
smartGitAddr = "http://127.0.0.1:8080"
ForceH2C = false
mode: Git 克隆模式."bypass"(默认): 直接转发git clone请求, 不进行加速."cache": 启用智能 Git 缓存加速, 需要配置smartGitAddr.
smartGitAddr: (缓存模式) 智能 Git 缓存服务的地址. 默认"http://127.0.0.1:8080".ForceH2C: 是否强制使用 H2C (明文 HTTP/2) 连接到智能 Git 服务. 默认false.
[shell] - Shell 脚本加速配置
#
用于在代理 .sh 脚本时, 动态修改其内容以实现嵌套加速.
[shell]
editor = false
rewriteAPI = false
editor: 是否启用脚本编辑功能, 修改脚本内容以实现嵌套加速. 默认false.rewriteAPI: 是否重写脚本内的 GitHub API 地址. 默认false.
[pages] - Pages 服务配置
#
配置 ghproxy 内置的前端页面服务.
[pages]
mode = "internal"
theme = "bootstrap"
staticDir = "/data/www"
mode: Pages 服务模式."internal"(默认): 使用ghproxy内置的 Pages 服务."external": 使用staticDir指定的外部静态文件目录.
theme: (内置模式) 内置页面的主题. 参看 GHProxy-Frontend 获取可用主题.staticDir: (外部模式) 静态文件目录的路径.
[log] - 日志配置
#
配置日志的输出行为.
[log]
logFilePath = "/data/ghproxy/log/ghproxy.log"
maxLogSize = 5
level = "info"
logFilePath: 日志文件的存储路径.maxLogSize: 单个日志文件的最大大小 (MB), 超出后会进行轮转. 默认5.level: 日志输出级别. 可选值:"debug","info"(默认),"warn","error","none".
[auth] - 认证配置
#
为 ghproxy 服务启用访问认证.
[auth]
enabled = false
method = "parameters"
token = "token"
key = ""
passThrough = false
ForceAllowApi = false
ForceAllowApiPassList = false
enabled: 是否启用认证. 默认false.method: 认证信息传递的方式."parameters"(默认): 通过 URL 参数 (auth_token或key指定的参数)."header": 通过请求头 (GH-Auth或key指定的头).
token: 认证所需的令牌 (Token) 值.key: 自定义认证参数名或请求头名. 为空则使用默认值.passThrough: 是否将认证参数透传到 GitHub. 默认false.ForceAllowApi: 是否在未认证或认证失败时, 依然强制允许对 GitHub API 的访问. 默认false.ForceAllowApiPassList: 在ForceAllowApi启用时, 是否跳过白名单检查. 默认false.
[ipFilter] - IP 地址过滤
#
通过 IP 黑白名单限制对服务的访问.
[ipFilter]
enabled = false
enableAllowList = false
enableBlockList = false
ipFilterFile = "/data/ghproxy/config/ipfilter.json"
enabled: 是否启用 IP 过滤功能. 默认false.enableAllowList: 是否启用白名单.enableBlockList: 是否启用黑名单.ipFilterFile: 包含 IP/CIDR 列表的 JSON 文件路径.
[blacklist] & [whitelist] - 用户/仓库过滤
#
注意: 这两项是基于用户和仓库名的过滤, 与
[ipFilter]的 IP 过滤不同.
[blacklist]
blacklistFile = "/data/ghproxy/config/blacklist.json"
enabled = false
[whitelist]
enabled = false
whitelistFile = "/data/ghproxy/config/whitelist.json"
enabled: 是否启用黑/白名单.blacklistFile/whitelistFile: 指向包含规则的 JSON 文件路径. 详见下文.
[rateLimit] - 请求速率与带宽限制
#
防止服务被滥用.
[rateLimit]
enabled = false
rateMethod = "total"
ratePerMinute = 180
burst = 5
enabled: 是否启用请求速率限制. 默认false.rateMethod: 限制方法."total"(默认): 对整个服务进行全局速率限制."ip": 对单个 IP 地址进行速率限制.
ratePerMinute: 每分钟允许的请求数. 默认180.burst: 允许的突发请求数. 默认5.
[rateLimit.bandwidthLimit]
enabled = false
totalLimit = "100mbps"
totalBurst = "100mbps"
singleLimit = "10mbps"
singleBurst = "10mbps"
enabled: 是否启用带宽限制. 默认false.totalLimit: 程序总带宽限制.totalBurst: 程序总突发带宽 (令牌桶大小).singleLimit: 单个连接的带宽限制.singleBurst: 单个连接的突发带宽 (令牌桶大小).- 单位支持 “kbps”, “mbps”, “gbps”.
[outbound] - 出站代理配置
#
让 ghproxy 通过另一个代理服务器访问外部网络.
[outbound]
enabled = false
url = "socks5://127.0.0.1:1080"
enabled: 是否启用出站代理. 默认false.url: 代理服务器的 URL. 支持http://...和socks5://....
[docker] - Docker 镜像代理
#
Version: 3.2.0+
配置对 Docker Hub, GHCR 等镜像仓库的代理.
[docker]
enabled = false
target = "ghcr"
auth = false
[docker.credentials]
user1 = "testpass"
test = "test123"
enabled: 是否启用 Docker 镜像代理. 默认false.target: 代理的目标镜像仓库."ghcr"(默认),"dockerhub", 或自定义地址如"docker.example.com".
auth: 是否对 Docker 代理启用 Basic Auth 鉴权.[docker.credentials]: 存储用于 Docker Basic Auth 的用户名和密码.
黑/白名单 JSON 文件说明 #
blacklist.json
#
阻止对特定用户或仓库的访问.
{
"blacklist": [
"eviluser",
"spamuser/bad-repo",
"malwareuser/*"
]
}
- 规则:
- 用户名 (
"eviluser"): 阻止该用户的所有仓库. - 具体仓库 (
"spamuser/bad-repo"): 阻止该特定仓库. - 通配符 (
"malwareuser/*"): 阻止该用户下的所有仓库. (与只写用户名等效).
- 用户名 (
whitelist.json
#
仅允许对特定用户或仓库的访问. 白名单优先级高于黑名单.
{
"whitelist": [
"my-org/project-a",
"trusted-user/*",
"another-trusted-user"
]
}
- 规则: 与黑名单类似, 支持具体仓库和通配符.
ipfilter.json - IP 地址过滤
#
当 [ipFilter].enabled = true 时, 此文件用于定义允许或拒绝访问的 IP 地址/范围.
{
"allow": [
"127.0.0.1",
"192.168.1.0/24",
"::1"
],
"block": [
"10.0.0.0/8"
]
}
allow: 一个 JSON 数组, 定义了 IP 白名单.- 只有来源 IP 在此列表中的请求才会被考虑允许.
- 此列表是否生效, 取决于
config.toml中的enableAllowList = true.
block: 一个 JSON 数组, 定义了 IP 黑名单.- 来源 IP 在此列表中的请求将被直接拒绝.
- 此列表是否生效, 取决于
config.toml中的enableBlockList = true.
规则说明:
- 列表中的每个字符串可以是一个单一的 IP 地址 (IPv4 或 IPv6) 或一个 CIDR 网段.
- 过滤优先级: 如果同时启用了白名单和黑名单, 请求的 IP 必须先通过白名单检查, 然后再通过黑名单检查, 才能被最终放行.
程序启动参数 (Flags) #
ghproxy 接受以下启动参数:
$ ghproxy -h
-c string config file path (default "/data/ghproxy/config/config.toml")
-h show help message and exit
-v show version and exit
-c: 指定config.toml文件的路径.-h: 显示帮助信息.-v: 显示程序版本号.