真正“重置”goproxy不是清空而是切换到可用国内代理,推荐执行go env -w goproxy=https://goproxy.cn,direct和go env -w gosumdb=off,并验证配置、确保go111module=on、删除vendor目录、正确设置gonoproxy/gonosumdb。

直接执行 go env -w GOPROXY= 就能清空代理配置,但这样会退回到默认的 https://proxy.golang.org,direct,国内基本不可用。真正“重置”不是清空,而是**切换到已知可用、带 fallback 的国内代理**。
为什么不能只用 go env -w GOPROXY=
这个命令确实会把 GOPROXY 设为空,但 Go 工具链会 fallback 到内置默认值:https://proxy.golang.org,direct。该地址在大陆多数地区无法建立 TLS 连接,结果就是 go mod download 卡住或报 dial tcp: i/o timeout。这不是“重置成功”,是换了个更糟的状态。
推荐的一键重置命令(含验证)
运行以下两行命令,覆盖旧配置、启用模块、关闭校验干扰:
go env -w GOPROXY=https://goproxy.cn,direct go env -w GOSUMDB=off
说明:
-
GOPROXY=https://goproxy.cn,direct:七牛云代理稳定,,direct保证私有模块不中断 -
GOSUMDB=off:避免因 checksum server 不可达导致verifying: checksum mismatch报错(开发环境够用;生产环境可换为sum.golang.org+replace=gosum.io+ca=trusted) - 务必再执行
go env GOPROXY和go env GOSUMDB确认输出与上述一致
IDE(如 GoLand / VS Code)里代理不生效怎么办
终端里设好了,但 IDE 内 go mod tidy 仍慢或失败,大概率是 IDE 没读取 shell 环境变量:
- GoLand:Settings → Go → Go Modules → Environment,手动填入
GOPROXY=https://goproxy.cn,direct - VS Code:在
.vscode/settings.json中加"go.toolsEnvVars": { "GOPROXY": "https://goproxy.cn,direct" } - 别依赖“从终端启动 IDE”来继承变量——很多 GUI 启动方式会丢掉 shell 配置
重置后仍卡住?重点检查这三点
代理设对了,但下载还是慢或失败,常见原因不是代理本身,而是:
-
GO111MODULE没开:运行go env GO111MODULE,输出必须是on,不是auto或空 - 项目下存在
vendor/目录:Go 会跳过代理直连,删掉它或加-mod=mod参数强制走模块模式 - 私有域名没排除:如果
go.mod里引用了git.internal.company.com/my/lib,需同步设置GONOPROXY和GONOSUMDB,值必须完全一致
最常被忽略的是 GO111MODULE=on 和 vendor/ 目录共存——这两者会让 Go 完全绕过 GOPROXY,无论你怎么配代理都没用。











