资讯动态

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

发布时间:2026/9/10 18:44:18 来源:尧图企业网站定制
DevDocs 如何新增一台代理 VM 接入文档下载基础设施【免费下载链接】devdocsAPI Documentation Browser项目地址: https://gitcode.com/GitHub_Trending/de/devdocsDevDocs 的文档打包产物托管在downloads.devdocs.io文档静态文件托管在documents.devdocs.io。这两个域名背后的请求都会被代理proxy到 S3 桶下载请求指向devdocs-downloads.s3.amazonaws.com文档请求指向devdocs-documents.s3.amazonaws.com。当需要为这套下载基础设施扩容时任务就是新建一台代理 VMproxy VM在负载均衡器上接入它并让两个 S3 桶放行它的 IP。以下内容整理自维护者指南 Infrastructure 一节适用前提是你已具备 DevDocs 维护者的基础设施操作权限。准备工作明确两条接入路径新建代理 VM 有两条路径先确认你能用哪一条首选路径从devdocs-proxy快照创建 VM。维护者文档明确说明 New proxy VMs should be created from thedevdocs-proxysnapshot。走这条路径不需要手工装 nginx 和配置跳过下两节的初始化命令即可。备选路径快照不可用时手工初始化。文档给出的条件是 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-key、rm -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, its 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),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价