go_proxy必须以斜杠结尾,nexus需安装匹配版本的nexus-golang-plugin并创建go(proxy)类型仓库,remote storage设为https://proxy.golang.org/且禁用严格内容校验,私有模块需配置go_private和no_proxy。

GO_PROXY 必须以斜杠结尾,否则所有模块请求都会 404 —— 这不是 Nexus 配置错,是 Go 客户端硬编码的路径拼接逻辑决定的。
确认 Nexus 已安装 nexus-golang-plugin 并启用 go (proxy) 类型仓库
Nexus OSS 3.x 默认不支持 Go 模块语义(如 @v/list、@v/v1.2.3.info),必须手动安装插件。没装插件,新建仓库时根本不会出现 go (proxy) 类型选项。
- 下载与 Nexus 版本严格匹配的
nexus-golang-plugin-*.jar(例如 Nexus 3.58.0 对应 plugin 3.58.0) - 放入
$NEXUS_HOME/deploy/目录,重启 Nexus - 重启后进入
Repository → Create repository,才能看到go (proxy)类型 - 务必选它,别选
go (group)或go (hosted):前者不响应@v/路径,后者不代理远程模块
配置 go (proxy) 仓库时 Remote storage 必须设为 https://proxy.golang.org/
Go 客户端只认标准 upstream 地址;用阿里镜像或 goproxy.io 作为 remote,会导致部分模块(尤其是带 golang.org/x/ 子路径的)返回 404 或校验失败。
- Remote storage location 填
https://proxy.golang.org/(协议必须是 https) - 勾选
Disable Strict Content Validation,否则某些模块因响应头缺失Content-Type: application/json被拒 - Public URL 显示为
http://localhost:8081/repository/golang-proxy/(注意末尾斜杠) - 不要加
/v2、/api等后缀——Go 会原样拼接,比如请求github.com/go-yaml/yaml/@v/v1.2.3.mod,缺斜杠就变成/golang-proxygithub.com/...
设置 GO_PROXY 环境变量时必须带末尾斜杠且协议完整
Go 客户端对 GO_PROXY 值做纯字符串拼接,不作任何路径规范化。漏掉斜杠或写成 HTTP,直接导致所有模块拉取失败。
- 正确写法:
export GO_PROXY="http://localhost:8081/repository/golang-proxy/"(末尾/不可省) - HTTPS 更安全,但若 Nexus 未配 TLS,则必须用
http://+,direct后缀,否则 Go 拒绝连接 - 验证方式:
curl -I "$GO_PROXY/github.com/gorilla/mux/@v/list"应返回 200 OK 和Content-Type: text/plain; charset=utf-8 - 避免被覆盖:运行
go env GOPROXY确认当前生效值,不是go env -w的写入记录
私有模块必须配合 GO_PRIVATE 和 NO_PROXY 才能绕过代理直连
只设 GO_PROXY,Go 仍会把 gitlab.company.com/mylib 这类地址发给代理,结果要么 404,要么卡住超时。
-
export GO_PRIVATE="gitlab.company.com"(支持通配符,如*.company.com) -
export NO_PROXY="gitlab.company.com"(告诉 Go 不走代理,直连 Git 服务器) - 若 Nexus 启用了身份验证,Go 不自动传凭据,需额外配置
~/.netrc文件,内容为:machine gitlab.company.com login user password token-xxx - 私有模块的
module名必须与 Git 地址完全一致,例如go mod init gitlab.company.com/team/utils
最容易被忽略的是:Nexus 插件版本与 Nexus 主版本不兼容,会导致 go (proxy) 类型根本不出现在创建列表里;而一旦选错类型,后续所有调试都在错误前提下进行。斜杠、协议、插件、类型,四个点缺一不可。
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!











