Go模块代理通过配置GOPROXY环境变量(如https://goproxy.cn,direct)可解决国内访问proxy.golang.org慢或失败问题,推荐使用goproxy.cn并配合GOSUMDB=off和GOPRIVATE处理校验错误与私有模块。

Go 模块代理(Go Proxy)是解决国内访问 proxy.golang.org 慢或超时、模块拉取失败的核心方案。只需正确配置环境变量或 Go 命令参数,就能显著提升依赖下载速度和稳定性。
设置 GOPROXY 环境变量(推荐)
这是最常用、最稳定的方式,适用于所有 Go 命令(go get、go mod download 等)。
- 临时生效(当前终端):
export GOPROXY=https://goproxy.cn,direct - 永久生效(写入 shell 配置):
在~/.bashrc或~/.zshrc中添加:export GOPROXY=https://goproxy.cn,direct
然后执行source ~/.bashrc(或source ~/.zshrc) -
direct表示:当代理无法提供某模块时,回退到直接从模块源仓库(如 GitHub)拉取,避免因代理缺失导致失败
可选的国内可信代理地址
多个镜像可互为备份,按需组合使用:
- goproxy.cn(七牛云维护,稳定、更新快,推荐首选)
- goproxy.io(原官方支持,现由社区维护,可用但偶有延迟)
- https://mirrors.aliyun.com/goproxy/(阿里云镜像,适合内网或企业环境)
- 多代理串联写法:
GOPROXY=https://goproxy.cn,https://goproxy.io,direct
跳过校验与私有模块处理
某些场景下还需配合其他变量确保顺利拉取:
立即学习“go语言免费学习笔记(深入)”;
- 若遇到
verifying ...: checksum mismatch错误,可能是代理缓存与源不一致,可临时跳过校验(仅调试用):export GOSUMDB=off - 若项目含私有 Git 仓库模块(如公司内部 GitLab),需让 Go 绕过代理直连:
export GOPRIVATE=git.example.com/internal/*(替换为你的私有域名和路径前缀) - 多个私有域名用逗号分隔:
GOPRIVATE=git.example.com,github.company.com
验证配置是否生效
执行以下命令确认当前配置和实际行为:
- 查看当前代理设置:
go env GOPROXY - 触发一次模块下载并观察日志:
go mod download github.com/go-sql-driver/mysql@v1.7.1
成功时会显示类似Fetching https://goproxy.cn/github.com/go-sql-driver/mysql/@v/v1.7.1.info - 检查是否跳过私有模块:
go env GOPRIVATE,再尝试拉取私有模块,应无代理 URL 日志输出
不复杂但容易忽略的是:GOPROXY 必须包含 direct 回退项,且 GOPRIVATE 要精确匹配私有路径——配错会导致部分模块走代理失败或泄露代码。










