必须配GOPROXY,否则Go 1.13+默认代理proxy.golang.org在国内不可用,导致go mod download等命令超时、403或失败;需设GOPROXY=https://goproxy.cn,direct并同步配置GOPRIVATE匹配私有仓库。

为什么必须配 GOPROXY?不配会怎样
Go 1.13+ 默认启用 Modules,但默认代理 https://proxy.golang.org 在国内基本不可用——不是超时就是 403 或连接重置。你不配 GOPROXY,go mod download、go get、go build 都可能卡住几十秒甚至失败,尤其首次拉依赖或 CI 构建时特别明显。
怎么设才真正生效:推荐命令与关键细节
执行这一条就够了(永久生效,所有终端、IDE、CI 都认):
go env -w GOPROXY=https://goproxy.cn,direct
注意三个细节:
-
https://goproxy.cn是目前最稳的国内镜像(七牛云维护),响应快、校验全、支持私有模块鉴权 -
,direct不是可选项——漏掉它,私有仓库(如git.company.com)会直接 404,因为代理根本不转发 - 别用
export GOPROXY=...写进 shell 配置再source,虽然也能用,但go env -w更可靠:它写入 Go 自己的配置文件,不受终端类型、IDE 启动方式影响
私有模块总拉不下来?GOPRIVATE 必须同步配
公司内网 Git、GitHub 私有库、GitLab 自建服务,一旦被 GOPROXY 拦截,要么认证失败,要么域名解析不到。解决方法是明确告诉 Go:“这些地址不走代理”:
立即学习“go语言免费学习笔记(深入)”;
go env -w GOPRIVATE=*.company.com,github.com/my-org/private-repo
常见场景:
-
*.company.com:匹配所有子域名,比如git.company.com、devops.company.com -
github.com/my-org/private-repo:精确匹配单个私有仓库 - 多个值用英文逗号分隔,不能有空格
验证是否真生效:别只看命令没报错
运行这两步确认实际行为:
go env GOPROXY GOPRIVATE
输出应类似:GOPROXY=https://goproxy.cn,direct 和 GOPRIVATE=*.company.com
再试一次真实下载:
go mod download github.com/gin-gonic/gin@v1.9.1
如果终端里出现类似 Fetching https://goproxy.cn/github.com/gin-gonic/gin/@v/v1.9.1.info 的日志,或者几秒内完成,说明已走代理;如果还卡在 proxy.golang.org 或反复重试,大概率是 direct 漏了,或 GOPRIVATE 没覆盖到实际域名。
最容易被忽略的是 ,direct 这个尾巴——它不是“锦上添花”,而是私有模块能正常工作的底线。










