Go模块代理可提升下载速度并解决网络不稳定问题,推荐配置GOPROXY=https://goproxy.cn,direct,配合GOPRIVATE处理私有模块,支持本地缓存与离线构建。

Go 模块代理(Go Module Proxy)能显著提升依赖下载速度、避免因网络问题导致构建失败,尤其在国内访问官方 proxy.golang.org 不稳定时更实用。
配置 Go 代理地址
Go 1.13+ 默认启用模块代理,只需设置 GOPROXY 环境变量即可切换源。推荐使用国内镜像,例如:
- https://goproxy.cn(由七牛云维护,稳定且支持私有模块)
- https://mirrors.aliyun.com/goproxy/(阿里云镜像)
- https://goproxy.io(已停止维护,不建议新项目使用)
执行命令永久生效(Linux/macOS):
go env -w GOPROXY=https://goproxy.cn,directWindows 用户可用 PowerShell:
立即学习“go语言免费学习笔记(深入)”;
go env -w GOPROXY="https://goproxy.cn,direct"注意:末尾的 direct 表示对私有仓库(如公司内网 Git)跳过代理,直接拉取。
验证代理是否生效
运行以下命令查看当前配置:
go env GOPROXY然后尝试下载一个模块(如 github.com/spf13/cobra),观察日志中是否出现 proxy.goproxy.cn 或对应域名的请求记录。也可加 -v 参数调试:
处理私有模块和认证
若项目依赖公司内部 GitLab/GitHub 私有仓库,需配合 GONOPROXY 和 GOPRIVATE 使用:
- 设置
GOPRIVATE=git.example.com/myorg/*告诉 Go 对该路径不走代理 - 设置
GONOPROXY=git.example.com/myorg/*效果相同,但GOPRIVATE更推荐(支持通配符且影响 checksum 验证) - 如有认证需求,还需配置 Git 凭据或在
~/.netrc中添加账号密码
批量设置示例:
go env -w GOPRIVATE="git.example.com/myorg/*,github.com/mycompany/*"本地缓存与离线构建(可选进阶)
Go 代理本身不提供本地存储,但可通过 go mod download 提前拉取所有依赖到本地缓存($GOPATH/pkg/mod),后续构建无需联网:
- 在 CI 或干净环境运行
go mod download,确保缓存完整 - 构建时加上
-mod=readonly可防止意外修改go.sum - 如需完全离线,还可搭配
goproxy工具搭建私有代理服务(如 goproxy/goproxy),支持缓存 + 鉴权 + 审计










