goland 中配置自建代理需在 settings > go > go modules 的 proxy 输入框填写无尾斜杠的 url(如 http://172.31.33.33:8080),勾选 enable go modules integration 后右键项目根目录 reload project 生效;单一代理地址无自动 fallback,须通过系统环境变量 goproxy 设置多级 fallback(如 http://...,https://goproxy.cn,direct);replace 规则应删除,改用 goprivate/goinsecure 处理私有仓库。

GoLand 里怎么填自建代理地址
直接在 Settings > Go > Go Modules 的 Proxy 输入框里写入你的私有代理 URL,比如 http://172.31.33.33:8080,**不要加 trailing slash**(即不能写成 http://172.31.33.33:8080/),否则 GoLand 会静默忽略该配置。勾选 Enable Go Modules integration,点击 Apply 后无需重启 IDE,但需右键项目根目录 → Reload project 才能生效。
GOPROXY 设置为单地址时的 fallback 行为
GoLand 界面只允许填一个 Proxy 地址,但它底层仍走 Go 工具链逻辑:当设为单一地址(如 http://172.31.33.33:8080)且该地址返回 404 或 503 时,不会自动 fallback 到 direct,而是直接报错 go: github.com/some/pkg@v1.2.3: Get "http://172.31.33.33:8080/github.com/some/pkg/@v/v1.2.3.info": dial tcp 172.31.33.33:8080: connect: connection refused。解决办法是:
– 在系统级环境变量中设置完整的多级 fallback:export GOPROXY=http://172.31.33.33:8080,https://goproxy.cn,direct
– GoLand 会继承该环境变量,覆盖界面配置;
– direct 必须小写、无协议、无空格,且排在最后。
为什么 go mod tidy 不拉新版本,但命令行可以
常见原因是 GoLand 内置终端或构建流程没读取到你设的 GOPROXY 环境变量。验证方式:
– 在 GoLand 底部 Terminal 中执行 go env GOPROXY,确认输出是否与你预期一致
– 若为空或错误,说明 IDE 没继承 shell 环境(尤其 macOS/Linux 使用 zsh + direnv 时容易断链)
– 临时修复:在 Terminal 里手动 export GOPROXY=... 再跑 go mod tidy
– 长期方案:在 GoLand 的 Settings > Tools > Terminal > Shell path 中指定带完整环境的 shell(如 /bin/zsh --login),或改用 IDE 的 Run Configuration > Environment variables 显式注入
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
replace 规则在自建代理下要不要删
要删,除非你明确需要绕过代理强制走本地路径。自建代理已缓存所有公开模块,replace 会干扰版本解析逻辑,导致:
– go list -m all 显示版本与 go.mod 中不一致
– go mod graph 出现重复模块节点
– 升级时 go get github.com/foo/bar@v2.1.0 失败并提示 “require … does not match”
– 替代方案:若某些包必须走内网 GitLab,应配合 GOPRIVATE=gitlab.internal.company.com/* 和 GOINSECURE=gitlab.internal.company.com,让 Go 工具链对这些域名跳过代理、跳过校验,而不是靠 replace 硬编码路径
真正麻烦的不是配代理本身,而是自建服务未同步最新 tag 或缓存了损坏的 zip 包——此时 go mod download 成功但 go build 报 invalid version: zip: not a valid zip file,得清空代理服务端的缓存目录再重试。










