必须设为GOPROXY=https://goproxy.cn,direct,漏掉,direct会导致私有模块(如公司内网Git)拉取失败;若go env -w后仍不走代理,需用go env -u GOPRIVATE清空高优先级拦截配置并验证。

必须设为 GOPROXY=https://goproxy.cn,direct,漏掉 ,direct 会导致私有模块(如公司内网 Git)彻底拉取失败,且无法绕过。
go env -w GOPROXY= 后还是不走代理?先查 GOPRIVATE
常见现象:执行 go env -w GOPROXY=https://goproxy.cn,direct 后,go get 仍卡在 proxy.golang.org 或报证书错误。这不是命令没生效,而是 GOPRIVATE 的优先级高于 GOPROXY ——只要模块路径匹配 GOPRIVATE 列表里的前缀(比如 gitlab.example.com 或 *.corp),Go 就会跳过代理直连源站。
- 查当前值:
go env GOPRIVATE,若输出非空,极可能是误配 - 清空它:
go env -u GOPRIVATE(注意是-u,不是-w "") - 再确认:
go env GOPROXY应输出https://goproxy.cn,direct - 临时验证:
go list -m github.com/go-sql-driver/mysql@latest,秒回即生效
为什么 ,direct 必须放在末尾?
direct 不是“备用代理”,而是“兜底直连机制”。Go 按逗号分隔的顺序依次尝试代理地址,遇到 404 或 50x 才 fallback 到下一个。但 direct 必须放在最后,否则前面代理失败后立刻直连,失去加速意义。
初始化并管理阿里云SDK Go 客户端,涵盖 sync.Once 单例、goroutine 安全、endpoint 与 region 配置、VPC 端点及调试。
- ✅ 正确写法:
GOPROXY=https://goproxy.cn,https://mirrors.aliyun.com/goproxy/,direct - ❌ 错误写法:
GOPROXY=direct,https://goproxy.cn(所有请求先直连,超时才走代理) - ❌ 错误写法:
GOPROXY=https://goproxy.cn;https://mirrors.aliyun.com/goproxy/(分号无效,会被当参数) - ❌ 错误写法:
GOPROXY=https://goproxy.cn https://mirrors.aliyun.com/goproxy/(空格分割导致解析失败)
go mod download 报 checksum mismatch 怎么办?
典型错误:verifying github.com/sirupsen/logrus@v1.9.3: checksum mismatch。这不是代理配置问题,而是本地 go.sum 记录的哈希与代理返回内容不一致,常见于之前用过不同代理、手动改过 go.sum、或模块作者重写了 tag。
立即学习“go语言免费学习笔记(深入)”;
- 临时绕过(仅调试):
go get -insecure github.com/xxx/yyy - 清理缓存重试:
go clean -modcache,再执行go mod download - 不要全局关校验:
GOINSECURE影响所有私有域名,慎用;若必须设,限定范围如export GOINSECURE="git.internal.company" - 检查
go.mod是否含错误replace且未删// indirect标记,这会导致校验逻辑异常
真正容易被忽略的是 ,direct 这个尾巴——它不是可选项,而是私有模块能正常工作的必要条件。一旦漏掉,go get git@gitlab.example.com/mylib 类请求会直接失败,且没有任何提示说明是代理配置问题。

















