go项目配置代理主要解决go get等命令因网络问题导致的超时失败,推荐设置GOproxy=https://goproxy.cn,direct,并配合GOprivate处理私有模块,GOSUMDB建议使用可信代理而非直接关闭。

在 Go 项目中配置代理,主要是为了解决 go get、go mod download 等命令因网络问题导致的超时或失败。Go 1.13+ 默认启用 Go Module,并优先从官方 proxy.golang.org 拉取依赖,但该域名在国内访问不稳定。因此,切换为国内镜像代理是常见且有效的加速方式。
设置 GOPROXY 环境变量(推荐)
这是最直接、最通用的方法,适用于所有 Go 命令(包括构建、下载、校验等)。
- 临时设置(当前终端生效):
export GOPROXY=https://goproxy.cn,direct
- 永久设置(写入 shell 配置文件,如
~/.bashrc或~/.zshrc):
echo "export GOPROXY=https://goproxy.cn,direct" >> ~/.zshrc && source ~/.zshrc
立即学习“go语言免费学习笔记(深入)”;
-
https://goproxy.cn是由七牛云维护的免费、稳定、合规的国内 Go 代理 -
direct表示当代理无法获取某个模块时,回退到直接从源仓库(如 gitHub)拉取(需确保网络可达) - 你也可以用其他可选镜像,例如:
https://proxy.golang.com.cn(Go 官方中国代理)或https://goproxy.io(已停止维护,不建议)
跳过校验(谨慎使用)
某些私有模块或不可信代理可能触发 checksum 错误(checksum mismatch),此时可临时跳过校验(仅调试用,不推荐长期开启):
export GOSUMDB=off
- 更安全的替代方案是使用可信的 sumdb 代理,例如:
export GOSUMDB=sum.golang.org+https://goproxy.cn/sumdb/sum.golang.org - 避免直接关掉校验,以防依赖被篡改
针对私有模块配置 GOPRIVATE
如果你的项目引用了公司内网 Git(如 git.company.com)的私有模块,需要告诉 Go 不要通过公共代理拉取:
export GOPRIVATE=git.company.com
- 支持通配符,例如:
GOPRIVATE=*.company.com,github.com/my-org/private-repo - 多个值用逗号分隔,无需空格
- 设置后,匹配的模块将绕过 GOPROXY,直接走 git 协议(需确保本地能访问对应仓库)
验证代理是否生效
执行以下命令检查当前配置和实际行为:
go env GOPROXY GOSUMDB GOPRIVATE
然后尝试下载一个模块(比如首次拉取):
go mod download github.com/gin-gonic/gin@v1.9.1
- 如果看到日志中出现
goproxy.cn或快速完成下载,说明代理已生效 - 若仍卡在
proxy.golang.org,请检查是否拼写错误、是否漏掉source配置、或终端未重新加载环境变量
基本上就这些。不复杂但容易忽略的是:GOPROXY 必须包含 direct 回退项,且 GOPRIVATE 要提前设好,否则私有模块会失败。配置完建议重启终端或运行 source 刷新一次。