Go模块代理通过配置GOPROXY环境变量(如https://goproxy.cn,direct)可解决国内访问proxy.golang.org慢或失败问题,推荐使用goproxy.cn并配合GOSUMDB=off和GOPRIVATE处理校验错误与私有模块。
Go 模块代理(Go Proxy)是解决国内访问 proxy.golang.org 慢或超时、模块拉取失败的核心方案。只需正确配置环境变量或 Go 命令参数,就能显著提升依赖下载速度和稳定性。
这是最常用、最稳定的方式,适用于所有 Go 命令(go get、go mod download 等)。
export GOPROXY=https://goproxy.cn,direct
~/.bashrc 或 ~/.zshrc 中添加:export GOPROXY=https://goproxy.cn,directsource ~/.bashrc(或 source ~/.zshrc)direct 表示:当代理无法提供某模块时,回退到直接从模块源仓库(如 GitHub)拉取,避免因代理缺失导致失败多个镜像可互为备份,按需组合使用:
GOPROXY=https://goproxy.cn,https://goproxy.io,direct
某些场景下还需配合其他变量确保顺利拉取:
verifying ...: checksum mismatch 错误,可能是代理缓存与源不一致,可临时跳过校验(仅调试用):export GOSUMDB=off
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.1Fetching https://goproxy.cn/github.com/go-sql-driver/mysql/@v/v1.7.1.info
go env GOPRIVATE,再尝试拉取私有模块,应无代理 URL 日志输出不复杂但容易忽略的是:GOPROXY 必须包含 direct 回退项,且 GOPRIVATE 要精确匹配私有路径——配错会导致部分模块走代理失败或泄露代码。