news 2026/9/10 18:44:16

DevDocs 如何新增一台代理 VM 接入文档下载基础设施?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DevDocs 如何新增一台代理 VM 接入文档下载基础设施?

DevDocs 如何新增一台代理 VM 接入文档下载基础设施?

【免费下载链接】devdocsAPI Documentation Browser项目地址: https://gitcode.com/GitHub_Trending/de/devdocs

DevDocs 的文档打包产物托管在downloads.devdocs.io,文档静态文件托管在documents.devdocs.io。这两个域名背后的请求都会被代理(proxy)到 S3 桶:下载请求指向devdocs-downloads.s3.amazonaws.com,文档请求指向devdocs-documents.s3.amazonaws.com。当需要为这套下载基础设施扩容时,任务就是新建一台代理 VM(proxy VM),在负载均衡器上接入它,并让两个 S3 桶放行它的 IP。以下内容整理自维护者指南 Infrastructure 一节,适用前提是你已具备 DevDocs 维护者的基础设施操作权限。

准备工作:明确两条接入路径

新建代理 VM 有两条路径,先确认你能用哪一条:

  1. 首选路径:从devdocs-proxy快照创建 VM。维护者文档明确说明 "New proxy VMs should be created from thedevdocs-proxysnapshot"。走这条路径不需要手工装 nginx 和配置,跳过下两节的初始化命令即可。
  2. 备选路径:快照不可用时手工初始化。文档给出的条件是 "When creating a new proxy VM and thedevdocs-proxysnapshot is not available",此时按下面的步骤在新 VM 上初始化环境。

无论走哪条路径,有一个共同的硬性前置条件:在把新 VM 加入负载均衡器之前,必须先把它(及其 IP)加入两个桶的aws:SourceIp列表,否则来自这台 VM 的 S3 请求会被拒绝("their requests will be rejected")。这一步的说明见后文「加入负载均衡器之前:放行两个 S3 桶的 IP 白名单」。

快照不可用时的 VM 初始化

devdocs-proxy快照不可用时,文档给出的初始化命令如下(基于 Ubuntu focal 环境,注意其中apt-keyrm -rf /etc/nginx/*等命令会修改系统配置和文件,只应在新 VM 上按文档执行):

# we need at least nginx 1.19.x wget https://nginx.org/keys/nginx_signing.key apt-key add nginx_signing.key echo 'deb https://nginx.org/packages/mainline/ubuntu/ focal nginx' >> /etc/apt/sources.list echo 'deb-src https://nginx.org/packages/mainline/ubuntu/ focal nginx' >> /etc/apt/sources.list apt-get -y remove nginx-common apt-get -y update apt-get -y install nginx # the config is on github rm -rf /etc/nginx/* rm -rf /etc/nginx/.* 2> /dev/null git clone https://github.com/freeCodeCamp/devdocs-nginx-config.git /etc/nginx # at this point we need to add the certs from Cloudflare and test the config nginx -t # if nginx is already running, just # ps aux | grep nginx # find the number and kill it nginx

命令分四段,执行时的判断依据如下:

  • 安装 nginx:文档要求 "we need at least nginx 1.19.x",因此通过 nginx 官方源安装 mainline 版本,而不是系统仓库里的旧版本;安装前会先apt-get -y remove nginx-common移除已有的 nginx 组件。
  • 拉取配置:nginx 配置文件不在本仓库里,注释 "the config is on github" 指出它维护在独立的devdocs-nginx-config仓库中,上一步git clone会清空/etc/nginx并整体替换为该仓库内容。
  • nginx -t:这是文档给出的验证方式。在此之前需要先添加 Cloudflare 证书(文档原文 "at this point we need to add the certs from Cloudflare and test the config")。nginx -t通过说明配置语法没问题,此时才可以启动或重载 nginx。
  • 启动 nginx:如果这台 VM 上 nginx 已在运行,文档建议先ps aux | grep nginx找到进程号并结束旧进程,再执行nginx启动。

加入负载均衡器之前:放行两个 S3 桶的 IP 白名单

VM 初始化完成(或由快照创建完成)后,不要直接把它挂到负载均衡器后面。文档给出的顺序是:先修改 S3 桶的访问策略,再动负载均衡器。

具体操作是:把新 VM 的 IP 地址加入两个桶各自的aws:SourceIp列表:

  • devdocs-downloads.s3.amazonaws.com对应的aws:SourceIp列表;
  • devdocs-documents.s3.amazonaws.com对应的aws:SourceIp列表。

文档对此的说明是:"Before adding them to the load-balancer, it's necessary to add their IP addresses to the aws:SourceIp lists for both buckets, or their requests will be rejected." 也就是说,如果 VM 先上负载均衡、IP 后放行,这台 VM 转发的 S3 请求会因为来源 IP 不在白名单内被拒绝。

接入完成后的现象与判断

  • 文档给出的可执行验证是初始化阶段的nginx -t:配置测试通过是启动 nginx 的前提。
  • 接入后的失败现象判断:如果 VM 已挂在负载均衡器后面但下载/文档请求被拒,对照检查点就是上述aws:SourceIp列表——确认这台 VM 的 IP 是否已加入两个桶的列表,漏掉任何一个桶都会让对应的请求(下载类或文档类)被 S3 拒绝。
  • 这条路径服务于thor docs:download等依赖downloads.devdocs.io的命令:thor 任务 中下载打包文档时请求的就是https://downloads.devdocs.io/...tar.gz,该域名经由这些代理 VM 转到 S3。

范围说明

本文只覆盖代理 VM 的创建与接入这一条任务路径:快照创建、无快照时的 nginx 初始化、S3aws:SourceIp放行、接入负载均衡器。负载均衡器本身的具体产品、添加后端的主机名映射等细节在仓库文档中没有展开,需要依据实际基础设施环境确认;DevDocs 应用本身(Heroku 侧)的部署流程在 maintainers 指南的 Deploying DevDocs 一节 中有单独说明,与本文的代理 VM 任务相互独立。

【免费下载链接】devdocsAPI Documentation Browser项目地址: https://gitcode.com/GitHub_Trending/de/devdocs

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 18:44:14

贝塞尔超快激光技术在精密加工中的应用与优化

1. 项目背景与核心价值精密器件加工领域近年来面临两大核心挑战:一是传统激光加工产生的热影响区(HAZ)导致材料性能下降,二是微米级加工精度难以突破。贝塞尔超快激光技术通过独特的无衍射光束特性,实现了亚微米级加工精度与近乎零热效应的完…

作者头像 李华
网站建设 2026/9/10 18:43:52

如何用 GPT-SoVITS 的 inference_cli.py 在无 WebUI 环境完成一次合成

如何用 GPT-SoVITS 的 inference_cli.py 在无 WebUI 环境完成一次合成 【免费下载链接】GPT-SoVITS 1 min voice data can also be used to train a good TTS model! (few shot voice cloning) 项目地址: https://gitcode.com/GitHub_Trending/gp/GPT-SoVITS 如果你的机…

作者头像 李华
网站建设 2026/9/10 18:42:31

8款热门AI论文软件横向实测,本硕博论文避坑全攻略

前言:AI 写论文乱象频发,实测 8 款工具理清适配边界 每到毕业季,本科生、硕博生都会集中寻找 AI 论文辅助工具,市面各类写作软件层出不穷,但普遍存在几类硬伤:虚假参考文献、无法匹配本校格式、不支持公式代…

作者头像 李华
网站建设 2026/9/10 18:42:18

Kong 如何在 IDE 中用 EmmyLua 打断点调试 Lua 代码

Kong 如何在 IDE 中用 EmmyLua 打断点调试 Lua 代码 【免费下载链接】kong 🦍 The API and AI Gateway 项目地址: https://gitcode.com/GitHub_Trending/ko/kong 在开发 Kong 插件或阅读 Kong 源码时,光靠日志很难看清请求上下文里的变量。DEVELO…

作者头像 李华
网站建设 2026/9/10 18:41:52

Rocky Linux 9仓库配置与优化指南

1. Rocky Linux 9 仓库配置的必要性作为RHEL的替代发行版,Rocky Linux 9继承了企业级Linux的稳定特性。但默认仓库往往无法满足实际需求,特别是在国内网络环境下。我最近在部署Rocky Linux 9时发现,官方仓库的访问速度时快时慢,而…

作者头像 李华