Skip to content

Go modules(GOPROXY)代理配置指南

go get / go mod download 慢或超时,是因为默认要访问 proxy.golang.org(境外)。Go 官方内置了 module proxy 机制,换成国内 GOPROXY 即可秒解。

一、配置 GOPROXY(核心)

bash
# 推荐:goproxy.cn(七牛,国内)
go env -w GOPROXY=https://goproxy.cn,direct

# 备选:阿里云
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct

# 官方(海外)
go env -w GOPROXY=https://proxy.golang.org,direct

末尾的 direct 表示:代理里找不到的模块,直接回源到版本库(如 GitHub)。别丢掉它

查看当前设置:

bash
go env GOPROXY

二、GOSUMDB 校验

Go 会通过 sum.golang.org 校验依赖完整性,这个域名国内也常被墙。goproxy.cn 自带校验代理,一般无需额外配置;若仍卡在校验,可:

bash
# 让 sumdb 走 goproxy.cn 的代理
go env -w GOSUMDB=sum.golang.google.cn

# 或对私有模块关闭校验(仅私有,见下一节)

三、私有仓库:GOPRIVATE

如果你要拉公司私有 module 或 GitHub 上的私有仓库,不能走公共 proxy(会泄露路径且拉不到),用 GOPRIVATE 排除:

bash
# 这些前缀的模块不走 proxy、不做 sumdb 校验,直接回源
go env -w GOPRIVATE=github.com/你的组织/*,gitlab.mycompany.com/*

配合 git 让私有仓库用 SSH 或带 token 的 HTTPS:

bash
# 用 SSH 代替 https 拉私有仓库
git config --global url."git@github.com:".insteadOf "https://github.com/"

四、从 GitHub 拉公开 module 还是慢?

正常情况下配了 GOPROXY 就不该直连 GitHub。如果你用了 GOPRIVATE/GONOSUMCHECKdirect 回源,导致要直接访问 GitHub,那就回到通用方案:给 git 配代理(见 Git 设置代理),或让 shell 走代理:

bash
export https_proxy=http://127.0.0.1:7890
go mod download

五、一次性推荐配置

大多数国内开发者,复制这三行即可:

bash
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GOSUMDB=sum.golang.google.cn
# 有私有仓库再加:
# go env -w GOPRIVATE=github.com/你的组织/*

场景速查

场景配置
公共依赖慢GOPROXY=https://goproxy.cn,direct
卡在 sum 校验GOSUMDB=sum.golang.google.cn
私有仓库GOPRIVATE + git insteadOf
direct 回源到 GitHub 慢给 git / shell 配 代理

小结

  • 一行 GOPROXY=https://goproxy.cn,direct 解决 95% 的问题。
  • 私有模块务必配 GOPRIVATE,否则会拉失败或泄露路径。
  • 保留 direct,别把回源能力关掉。

本文仅供技术学习与研究,请遵守所在国家/地区法律法规。

本站为技术学习交流站点,与 GitHub, Inc. 无任何隶属或官方关系。所有内容仅供技术研究与学习,请遵守所在国家/地区的法律法规。