go_proxy必须以斜杠结尾,否则路径拼接错误导致404;需安装nexus-golang-plugin插件、选用golang (proxy)仓库类型、设置remote storage为https://proxy.golang.org/、关闭strict content validation,并配合go_private与no_proxy处理私有模块。

GO_PROXY 必须以斜杠结尾,否则路径拼接直接 404
Go 客户端对 GO_PROXY 的拼接是纯字符串连接,不做任何路径规范化。比如模块 github.com/go-yaml/yaml 请求 @v/v1.2.3.info 时,会拼成 $GO_PROXY/github.com/go-yaml/yaml/@v/v1.2.3.info。如果 GO_PROXY 是 http://localhost:8081/repository/golang-proxy(缺末尾 /),结果就是 http://localhost:8081/repository/golang-proxygithub.com/... —— 显然 404。
- 确认 Nexus 仓库的 “Public URL” 显示为完整地址且以
/结尾,例如http://localhost:8081/repository/golang-proxy/ - 设置环境变量时严格写成:
export GO_PROXY="http://localhost:8081/repository/golang-proxy/" - 用
curl -I "$GO_PROXY/github.com/gorilla/mux/@v/list"验证是否返回200 OK和Content-Type: text/plain
nexus-golang-plugin 是硬性依赖,不是可选项
Nexus OSS 3.x 默认不带 Go 支持,golang (proxy) 类型根本不会出现在仓库创建列表里。没装插件,后面所有配置都无效。
- 下载与 Nexus 版本兼容的
nexus-golang-plugin-*.jar(注意 Nexus 3.40+ 对应插件版本) - 放入
$NEXUS_HOME/deploy/目录,重启 Nexus - 重启后进入
Repository → Create repository,才会有go (proxy)类型可选 - 新建时必须选
go (proxy),不能选go-group或go-hosted—— 前者不响应@v/路径,后者不代理公网模块
Remote storage location 必须填 https://proxy.golang.org/
Nexus 的 go (proxy) 仓库本质是反向代理,它需要一个上游源。官方推荐且唯一稳定支持 Go 模块语义(如 @v/list、@v/vX.Y.Z.mod)的上游是 https://proxy.golang.org/。
- 在 UI 创建
go (proxy)仓库时,Remote storage location字段填https://proxy.golang.org/(末尾斜杠可省略,Nexus 会自动补) - 别填
https://goproxy.io(已停服)或https://mirrors.aliyun.com/goproxy/(阿里镜像不完全兼容 Go 官方协议) - 若企业网络无法直连外网,需在 Nexus 服务器上设系统级
http_proxy环境变量,仅 UI 填 remote 地址没用 - 勾选
Disable Strict Content Validation,否则某些模块因响应头校验失败被拒
私有模块必须配 GO_PRIVATE + NO_PROXY,否则仍走代理
只设 GO_PROXY,Go 仍会把 gitlab.corp/internal/pkg 这类地址发给代理,导致超时或 404。Go 不会自动识别“私有”,必须显式声明。
-
GO_PRIVATE告诉 Go 哪些域名跳过代理、直连 Git:例如export GO_PRIVATE="gitlab.corp/*,github.company.com/*" -
NO_PROXY是 HTTP 层绕过,配合GO_PROXY使用:例如export NO_PROXY="gitlab.corp,github.company.com" - 若 Nexus 启用了身份验证,Go 不支持 URL 内嵌凭据(如
http://u:p@nexus/),得靠~/.netrc提供认证 - 私有模块想进 Nexus 缓存,还需另建
go (hosted)仓库,并手动go mod upload或用curl -X PUT推送
go mod download 就永远走公网。golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!











