Go模块下载慢主因是代理未配置或失效,应换用国内可信代理如https://goproxy.cn;需通过go env GOPROXY确认状态,配合GONOPROXY与GONOSUMDB处理私有模块及校验问题。

Go 模块下载慢,基本就是代理没配对或失效了,直接换国内可信代理就能明显改善。
确认当前 Go 代理是否生效
执行 go env GOPROXY 查看当前代理地址。如果返回空、direct 或 https://proxy.golang.org(默认但国内常被阻),就属于未配置或配置无效状态。也可以用 go list -m -u all 测试:若卡在某个模块、超时或报 Get "https://proxy.golang.org/...": dial tcp: i/o timeout,说明代理不通。
- 代理地址必须以
https://开头,不支持http:// - 多个代理用英文逗号分隔,Go 会按顺序尝试,如
https://goproxy.cn,direct -
direct是兜底项,表示直连;放在末尾可避免私有模块失败
推荐可用的国内 Go 代理列表
目前稳定、无需认证、支持校验和(checksum)的主流代理有:
-
https://goproxy.cn(七牛云维护,国内访问快,兼容性好) -
https://mirrors.aliyun.com/goproxy/(阿里云镜像,响应稳定) -
https://proxy.golang.com.cn(官方中国代理,需注意有时会短暂不可用)
不建议用已停更或需要 token 的代理(如旧版 athens 自建服务、部分 GitHub Proxy 中转站),容易出现 403 或 checksum mismatch 错误。
立即学习“go语言免费学习笔记(深入)”;
设置 GOPROXY 的三种方式
优先级从高到低:命令行参数 > 环境变量 > go env -w 持久化。日常开发推荐环境变量方式,避免每次敲命令。
- 临时生效(当前终端有效):
export GOPROXY=https://goproxy.cn,direct - 全局持久生效(写入 shell 配置):
go env -w GOPROXY=https://goproxy.cn,direct - 仅本次命令覆盖:
go get -u github.com/some/pkg@v1.2.3 -v前加GOPROXY=https://goproxy.cn go get ...
设完后务必运行 go env GOPROXY 确认输出一致,再试 go mod download 或 go build 观察速度变化。
私有模块和校验失败问题怎么处理
如果项目含公司内网 Git 模块(如 git.internal.company.com/my/lib),直接走代理会 404。此时需配合 GONOPROXY 排除:
go env -w GONOPROXY="git.internal.company.com,github.com/my-org"
同时注意:GONOSUMDB 也要同步设置(否则 checksum 校验失败):
go env -w GONOSUMDB="git.internal.company.com,github.com/my-org"
-
GONOPROXY和GONOSUMDB值必须完全一致,否则go get会拒绝拉取 - 通配符不支持,只能用逗号分隔的精确域名或路径前缀
- 若用了
direct作为代理兜底项,GONOPROXY就不是必须项,但校验仍需GONOSUMDB
代理配置本身很简单,真正容易出问题的是 GONOPROXY 和 GONOSUMDB 没同步、域名拼错、或用了已失效的代理地址——这些地方一错,就会表现为“明明配了代理却还是慢”或者“私有模块拉不下来”。









