MySQL官网链接主要位于顶部导航栏、首页Get Started区块和页脚;nginx反代需精准匹配多变体路径并避免误伤资源;定制mysql-site需修改YAML配置、HTML模板及JS逻辑,同步处理搜索、埋点与剪贴板等隐性依赖。
MySQL 官网链接藏在哪几个地方
主页上所谓“官方链接与文档入口”,实际就三处:顶部导航栏的 documentation 和 download 按钮、首页中间大 banner 下方的 get started 区块、页脚里的 documentation 和 mysql resources 链接。这些不是静态 html 硬编码就是由 cms 模板变量注入,改之前得先确认你用的是哪种部署方式——是直接托管官网镜像(比如 nginx + 官方 tarball),还是基于 mysql 官网开源前端项目(mysql-site)二次构建,又或者你在自己搭的内部知识站里嵌了 mysql 文档聚合页。
nginx 反向代理时怎么屏蔽 /docs/ 和 /downloads/ 路由
如果你只是用 nginx 做一层反代(比如把 https://mysql.example.com 指向官网源站),最轻量的办法是在 location 块里直接 return 404 或跳转到内网文档页。注意别只 block /docs,官网实际文档路径是 /en/doc/、/en/documentation/ 多个变体,下载页还可能带 utm 参数。常见踩坑点:用 rewrite ^/docs.*$ /404.html break; 会导致 JS 加载失败,因为页面里很多相对路径资源(如 /js/main.js)会被同样重写。
- 推荐用
location ~ ^/(en/)?(doc|documentation|downloads|files|get-started) { return 404; } - 如果要跳转到内网地址,用
return 302 https://docs.internal/mysql/;,别用 301(开发调试期会缓存) - 检查响应头是否含
X-Proxy-Source: mysql.com这类标识,有的话顺手proxy_hide_header掉
定制化构建 mysql-site 前端时删哪些文件和配置
MySQL 官网前端开源在 GitHub 的 mysql-site 仓库,用 Jekyll 构建。真正控制导航栏和首页区块的是 _data/navigation.yml 和 _includes/homepage-cta.html。删之前先确认你用的是哪个分支——main 分支已弃用,当前主力是 site-redesign,结构完全不同。
- 删顶部导航:注释掉
_data/navigation.yml中documentation:和downloads:整个 key - 删首页 CTA:删
_includes/homepage-cta.html里含href="/en/doc"或href="/downloads"的<a></a>块 - 页脚链接在
_includes/footer.html,搜索Documentation字符串定位,删对应<li>行(注意保留内部文档链接) - 构建前运行
bundle exec jekyll build --config _config.yml,_config.internal.yml,确保内网配置覆盖了外部域名
为什么光删 HTML 不够,还得动 JS 和搜索逻辑
官网前端里有几处隐性依赖:搜索框默认提交到 https://dev.mysql.com/search/;页面底部的 Feedback 按钮调用的是官网埋点 SDK;某些交互按钮(如“Copy to clipboard”)的初始化脚本会检测 window.location.origin 是否匹配 mysql.com,不匹配就静默失败。这些不会报错,但会让内部用户觉得“复制不了”“搜不到东西”“反馈按钮点不动”。
- 覆盖搜索行为:在
assets/js/main.js里找到document.querySelector('form#search-form'),改action属性为内网搜索接口 - 禁用外部埋点:删或注释掉加载
//cdn.mysql.com/track.js的 script 标签,以及所有window.dataLayer.push调用 - 修复剪贴板:全局替换
navigator.clipboard.writeText前的 origin 判断逻辑,或直接 patchClipboard.prototype.writeText
内部化不是删链接那么简单,URL 路径、JS 上下文、第三方依赖三者都得对齐。最容易被忽略的是搜索补全 API 和字体 CDN——它们常被写死在 JS 里,不抓包看 network 面板根本发现不了。










