推荐方式是执行 go env -w goproxy=https://goproxy.cn,direct,go 1.13+ 全版本支持,命令执行后立即生效,无需重启终端或修改源码、ide 配置;漏掉 ,direct 会导致私有模块无法回源访问而报错。

直接设置 GOPROXY 环境变量就能生效
不用改源码、不重装 Go、也不用动 IDE 配置,go env -w GOPROXY 是唯一推荐的配置方式。Go 1.13+ 全版本支持,命令执行完立刻生效,连终端都不用重启。
常见错误是漏掉 ,direct 后缀——比如只设成 https://goproxy.cn,结果团队拉公司内网私有模块时直接报 module not found。这是因为代理会拦截所有请求,不带 direct 就没有 fallback,私有仓库根本走不通。
- Linux/macOS 执行:
go env -w GOPROXY=https://goproxy.cn,direct - Windows PowerShell 执行:
$env:GOPROXY="https://goproxy.cn,direct" - 验证是否成功:
go env GOPROXY输出必须是完整字符串,不能为空或off
为什么选 goproxy.cn 而不是其他镜像
https://goproxy.cn 是七牛云维护的国内镜像,同步频率为分钟级,稳定性在多个生产环境长期验证过。相比 https://mirrors.aliyun.com/goproxy/(小时级同步)或 https://goproxy.io(已停止维护),它对新发布模块的响应更快,且支持 GOSUMDB 代理,能一并解决校验失败问题。
多个镜像串联(如 https://goproxy.cn,https://mirrors.aliyun.com/goproxy/,direct)理论上可行,但实际没必要:Go 按顺序尝试,第一个返回 200 或 404 就停,多加一个只会拖慢首次失败延迟,且这些镜像可用性差异不大。
私有模块必须配 GOPRIVATE
即使 GOPROXY 正确,私有仓库(如 git.internal.company.com/mylib)仍可能被代理拦截,导致认证失败或 404。必须显式告诉 Go 哪些域名不走代理:
- 执行:
go env -w GOPRIVATE=git.internal.company.com - 支持通配:
go env -w GOPRIVATE=*.internal.company.com - 多个域名用逗号分隔:
go env -w GOPRIVATE=git.internal.company.com,github.com/myorg/private
注意:这里填的是模块导入路径的域名部分,不是 Git URL 全地址;且 GOPRIVATE 和 GONOPROXY 功能等价,官方文档已倾向使用前者。
go.sum 校验失败?先看 GOSUMDB
下载快了但构建卡在 checksum mismatch,大概率是 sum.golang.org 访问失败。和 GOPROXY 类似,它也支持镜像:
- 推荐配置:
go env -w GOSUMDB=sum.goproxy.cn - 禁用校验(仅限内网开发):
go env -w GOSUMDB=off,但不建议提交到协作项目 - 如果用了
goproxy.cn作为 GOPROXY,它的sum.goproxy.cn服务天然兼容,无需额外处理
真正容易被忽略的是:go.sum 文件必须提交进 Git。它不是缓存,而是构建一致性的强制凭证;删了或 .gitignore 里误加了,CI 和同事本地就会出现依赖哈希不匹配。











