DIY 方案
Go 的 go-import meta 标签机制本身很简单。你在网页上放这么一行:
<meta name="go-import" content="go.yourcompany.com/user-svc git https://github.com/org/user-svc">
go get 就知道去哪里拉代码。听起来很简单——那为什么不直接手写几个 HTML 文件,用 Nginx 来提供服务呢?
很多团队一开始就是这么干的。接下来会发生什么,往下看。
问题出在哪里
痛点一:一个模块 = 一个 HTML 页面 + 一条 Nginx 规则
每个 vanity import path 都需要自己的 HTML 页面(包含正确的 meta 标签),加上 Nginx 的 location 块来处理 ?go-get=1 检测。5 个模块还管得过来,50 个模块就是 50 个 HTML 文件和 50 条 Nginx 规则。
痛点二:HTTPS 证书管理
你的 vanity 域名需要 HTTPS。这意味着要申请并自动续签 TLS 证书(Let’s Encrypt 之类),在 Nginx 中配置,还要监控过期时间。一张证书过期,所有模块的 go get 全部挂掉。
痛点三:没有管理界面
添加或删除路由意味着:SSH 登录服务器,编辑 HTML 文件,修改 Nginx 配置,跑 nginx -t,然后 reload。没有 CLI,没有 API,没有操作记录。
痛点四:go-source meta 标签写起来很烦
go-source meta 标签让源码浏览链接生效(pkg.go.dev 上的 “Source” 按钮)。每个标签都需要针对 GitHub、GitLab 或 Bitbucket 写正确的 URL 模板。50 个模块手写很容易出错。
逐项对比
| 维度 | 手写 Meta 标签 | gvu |
|---|---|---|
| 搭建时间 | 数小时(Nginx + HTML + TLS) | 几分钟 |
| 单模块成本 | 新建 HTML + Nginx 规则 + reload | gvu add 一条命令 |
| HTTPS | 手动管理证书 | 自动(on-demand TLS) |
| 通配路由 | 需要 rewrite 规则或模板 | 一个 * 模式 |
| go-source 标签 | 每个模块手写 | 自动识别 GitHub/GitLab/Bitbucket |
| 主版本支持 | 手动处理 /v2、/v3 | 自动 |
| 路由管理 | SSH + 文本编辑器 | CLI(gvu list、gvu remove) |
| 运维负担 | 服务器 + Nginx + 证书续签 | 零(托管服务) |
| 可用性 | 取决于你的基础设施 | 托管 SLA |
| 成本 | 服务器费用 + 你的时间 | 免费套餐可用 |
什么时候适合 DIY
手写 meta 标签在以下场景是合理的选择:
- 你只有 1–3 个模块,且不预期增长
- 你的团队已经在跑带自动续签证书的 Nginx
- 你喜欢折腾基础设施,追求完全掌控
- 你在企业内网环境,不需要外部访问
除此之外,DIY 的维护成本会快速累积。
gvu 带来了什么
一条命令,零基础设施
gvu add go.yourcompany.com/auth https://github.com/org/auth-service
HTTPS 证书自动签发。go-source meta 标签自动生成。主版本(/v2、/v3)自动处理。支持通配模式。不需要维护任何服务器。
通配路由:一条规则覆盖整个组织
gvu add 'go.yourcompany.com/dept/*' 'https://github.com/org/*.git'
新增仓库自动可导入——不用写 HTML,不用 reload Nginx。
开始使用
curl -fsSL gomodvanityurls.com/install.sh | bash
gvu add gomod.io/yourname/your-module https://github.com/your-org/your-module.git
永久免费,最多 5 条路由。无需注册。