GOPROXY 是 Go 模块下载代理地址,用于加速和稳定依赖拉取;因国内访问官方 proxy.golang.org 常失败,需配置国内镜像(如 goproxy.cn)并配合 GOPRIVATE 跳过私有仓库代理。

什么是 GOPROXY,为什么需要它
GOPROXY 是 Go 模块下载的代理地址,Go 在 1.13+ 版本默认启用模块模式后,会优先通过该代理拉取依赖。国内直接访问 proxy.golang.org 常因网络问题超时或失败,导致 go mod download 卡住、构建失败。配置可靠的代理(如国内镜像或私有仓库)能显著提升依赖下载速度和稳定性。
常用公共代理配置方式
推荐使用国内可信镜像,例如清华、七牛、阿里云提供的 Go 代理服务:
- 清华源:
https://mirrors.tuna.tsinghua.edu.cn/goproxy/ - 七牛云:
https://goproxy.cn - 阿里云:
https://goproxy.aliyun.com
设置方法(任选其一):
- 临时生效(当前终端):
export GOPROXY=https://goproxy.cn,direct - 永久生效(写入 shell 配置):
echo "export GOPROXY=https://goproxy.cn,direct" >> ~/.zshrc && source ~/.zshrc - 全局配置(推荐):
go env -w GOPROXY=https://goproxy.cn,direct
注意:末尾的 direct 表示对私有域名(如公司内网模块)不走代理,直接拉取,避免认证或网络隔离问题。
立即学习“go语言免费学习笔记(深入)”;
对接私有仓库(如 GitLab、GitHub Enterprise、Nexus)
当项目依赖公司内部模块(如 git.company.com/internal/pkg),需让 Go 知道哪些域名跳过代理直连,并可能需要配置凭证:
- 用
GOPRIVATE告诉 Go 哪些模块不走代理:go env -w GOPRIVATE=git.company.com/internal/* - 若私有仓库需要认证,配合
git config或~/.netrc提供用户名/Token:git config --global url."https://token:x-oauth-basic@git.company.com/".insteadOf "https://git.company.com/" - 也可组合多个代理,例如:
export GOPROXY=https://goproxy.cn,https://proxy.golang.org,direct,Go 会按顺序尝试,首个成功即停止。
验证与调试技巧
配置完别急着跑项目,先快速验证是否生效:
- 查看当前设置:
go env GOPROXY GOPRIVATE - 触发一次模块下载:
go mod download github.com/go-sql-driver/mysql,观察是否秒完成 - 遇到 403/401 错误?检查
GOPRIVATE是否覆盖了私有路径,或 Token 是否过期 - 想看 Go 实际请求路径?加环境变量:
GODEBUG=goproxylookup=1 go list -m all 2>&1 | grep proxy
私有模块首次拉取较慢属正常——Go 会解析 go.mod、校验 checksum、缓存到本地 $GOPATH/pkg/mod/cache,后续复用极快。










