外观
Go modules(GOPROXY)代理配置指南
go get / go mod download 慢或超时,是因为默认要访问 proxy.golang.org(境外)。Go 官方内置了 module proxy 机制,换成国内 GOPROXY 即可秒解。
一、配置 GOPROXY(核心)
bash
# 推荐:goproxy.cn(七牛,国内)
go env -w GOPROXY=https://goproxy.cn,direct
# 备选:阿里云
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct
# 官方(海外)
go env -w GOPROXY=https://proxy.golang.org,direct末尾的
direct表示:代理里找不到的模块,直接回源到版本库(如 GitHub)。别丢掉它。
查看当前设置:
bash
go env GOPROXY二、GOSUMDB 校验
Go 会通过 sum.golang.org 校验依赖完整性,这个域名国内也常被墙。goproxy.cn 自带校验代理,一般无需额外配置;若仍卡在校验,可:
bash
# 让 sumdb 走 goproxy.cn 的代理
go env -w GOSUMDB=sum.golang.google.cn
# 或对私有模块关闭校验(仅私有,见下一节)三、私有仓库:GOPRIVATE
如果你要拉公司私有 module 或 GitHub 上的私有仓库,不能走公共 proxy(会泄露路径且拉不到),用 GOPRIVATE 排除:
bash
# 这些前缀的模块不走 proxy、不做 sumdb 校验,直接回源
go env -w GOPRIVATE=github.com/你的组织/*,gitlab.mycompany.com/*配合 git 让私有仓库用 SSH 或带 token 的 HTTPS:
bash
# 用 SSH 代替 https 拉私有仓库
git config --global url."git@github.com:".insteadOf "https://github.com/"四、从 GitHub 拉公开 module 还是慢?
正常情况下配了 GOPROXY 就不该直连 GitHub。如果你用了 GOPRIVATE/GONOSUMCHECK 或 direct 回源,导致要直接访问 GitHub,那就回到通用方案:给 git 配代理(见 Git 设置代理),或让 shell 走代理:
bash
export https_proxy=http://127.0.0.1:7890
go mod download五、一次性推荐配置
大多数国内开发者,复制这三行即可:
bash
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GOSUMDB=sum.golang.google.cn
# 有私有仓库再加:
# go env -w GOPRIVATE=github.com/你的组织/*场景速查
| 场景 | 配置 |
|---|---|
| 公共依赖慢 | GOPROXY=https://goproxy.cn,direct |
| 卡在 sum 校验 | GOSUMDB=sum.golang.google.cn |
| 私有仓库 | GOPRIVATE + git insteadOf |
| direct 回源到 GitHub 慢 | 给 git / shell 配 代理 |
小结
- 一行
GOPROXY=https://goproxy.cn,direct解决 95% 的问题。 - 私有模块务必配
GOPRIVATE,否则会拉失败或泄露路径。 - 保留
direct,别把回源能力关掉。
本文仅供技术学习与研究,请遵守所在国家/地区法律法规。