goland中goproxy必须与系统环境变量一致,否则内置终端和ide构建行为不一致;需在settings → go → go modules的environment中设为goproxy=https://goproxy.cn,direct,且direct小写、逗号分隔、置于末尾。

Goland 里 GOPROXY 配置必须和系统环境变量一致,否则内置终端和构建行为会不一致,导致依赖时而能下、时而超时。
GoLand Settings 里的 GOPROXY 设置位置
File → Settings → Go → Go Modules(macOS 是 GoLand → Preferences → Go → Go Modules)
勾选 Enable Go Modules integration,然后在 Environment 输入框里填入:GOPROXY=https://goproxy.cn,direct
注意:direct 必须小写、必须放在最后、不能省略逗号分隔
- 这个设置只影响 GoLand 的构建、代码补全、依赖解析等 IDE 内部行为,不影响你在外部终端运行的
go build - 如果项目启用了
go.work,GoLand 会优先读取工作区配置,此时 Settings 里的 Environment 可能被覆盖 - 不要在这里写
GOPRIVATE—— 它属于全局策略,应设在系统环境变量里,否则私有模块仍可能被代理转发
为什么必须同步设置系统环境变量
GoLand 的内置终端(Terminal tab)默认继承系统 shell 环境变量;但某些后台任务(如 vendor 同步、test runner)可能绕过 shell,直接读取 IDE 自己的 Environment 字段。两者不一致时会出现:go list -m all 在终端里走代理,在 IDE 里却报 404 或 fallback 到 direct 失败
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
- Linux/macOS:在
~/.zshrc或~/.bash_profile中加export GOPROXY="https://goproxy.cn,direct"和export GOPRIVATE="git.internal.company" - Windows PowerShell:执行
$env:GOPROXY="https://goproxy.cn,direct"并用setx持久化 - 改完后重启 GoLand,或执行 Help → Find Action → “Reload project” 强制刷新模块状态
常见错误现象与对应检查点
依赖下载卡在 github.com/some/pkg v1.2.3 不动、go mod tidy 报 Get "http://...": http: server gave HTTP response to HTTPS client、私有模块提示 401 unauthorized
- 看到
http:开头的错误:说明代理地址是 HTTP,但没配GOINSECURE—— 这个变量只在系统级生效,GoLand Settings 里填不了 - 私有模块 401:确认
GOPRIVATE值和 Git URL 的 host 部分完全一致(比如git.mycompany.com不能写成mycompany.com) - 代理生效但速度慢:检查是否误配了多个镜像(如
https://goproxy.cn,https://mirrors.aliyun.com/goproxy/,direct),Go 会串行尝试,首个响应慢就拖累整体
最易被忽略的是 GOINSECURE 和 GOPRIVATE 的作用域 —— 它们只认系统环境变量,IDE 设置里填了也无效。一旦代理用 HTTP、或私有域名没声明,问题一定出在这两个变量上,而不是 GOPROXY 本身。










