Go模块代理通过设置GOPROXY环境变量切换,支持临时(export/set/$env)和永久(go env -w)配置,推荐使用goproxy.cn等国内镜像并保留direct以支持私有模块,需配合GOINSECURE跳过HTTPS校验。

Go 模块代理(GOPROXY)可以通过 go env 命令查看和修改,切换代理本质就是设置或覆盖环境变量 GOPROXY。不需要重启终端或重装 Go,改完立即生效(新开启的 go 命令会使用新配置)。
查看当前代理设置
运行以下命令,确认当前 GOPROXY 值:
go env GOPROXY
常见返回值有:
-
https://proxy.golang.org,direct(官方默认,国内可能慢或失败) -
https://goproxy.cn,direct(七牛云,国内推荐) -
https://mirrors.aliyun.com/goproxy/,direct(阿里云镜像) -
off(完全禁用代理,走 direct)
临时切换代理(当前终端有效)
仅对当前 shell 会话生效,关闭终端即失效:
- Linux/macOS:
export GOPROXY=https://goproxy.cn,direct - Windows(PowerShell):
$env:GOPROXY="https://goproxy.cn,direct" - Windows(CMD):
set GOPROXY=https://goproxy.cn,direct
执行后可立即运行 go env GOPROXY 验证,再试 go get 是否正常拉取模块。
永久切换代理(推荐)
写入 Go 的环境配置文件,一劳永逸:
- 运行
go env -w GOPROXY=https://goproxy.cn,direct - 该命令会自动将配置写入
~/.go/env(Linux/macOS)或%USERPROFILE%\AppData\Roaming\go\env(Windows) - 之后所有终端、IDE、CI 环境都会默认使用该代理
如需恢复默认,执行:go env -u GOPROXY(取消自定义值,回归 go 默认行为)。
进阶:多代理 fallback 与私有仓库支持
GOPROXY 支持用英文逗号分隔多个地址,按顺序尝试,遇到 404 或 410 自动降级到下一个:
go env -w GOPROXY="https://goproxy.cn,https://proxy.golang.org,direct"
若项目含私有模块(如公司内网 Git),建议末尾保留 direct,确保私有域名不走代理:
- 例如:
GOPROXY=https://goproxy.cn,direct→ 私有模块(如git.example.com/mylib)会直连 - 注意:私有域名需在
GOINSECURE中声明(如go env -w GOINSECURE=git.example.com),否则 HTTPS 校验失败
基本上就这些。切换代理不复杂但容易忽略 direct 和 GOINSECURE 的配合,尤其在混合使用公有/私有模块时。










