Dokku DNS 配置指南:使用 A 记录与通配符域名将应用路由到你的 PaaS 服务器

发布时间:2026/10/29 0:32:23

Dokku DNS 配置指南:使用 A 记录与通配符域名将应用路由到你的 PaaS 服务器 Dokku DNS 配置指南使用 A 记录与通配符域名将应用路由到你的 PaaS 服务器【免费下载链接】dokkuA docker-powered PaaS that helps you build and manage the lifecycle of applications项目地址: https://gitcode.com/GitHub_Trending/do/dokku导读DNS域名系统是 Dokku 实现一服务器多应用路由的核心基础设施Dokku 依赖 DNS 把形如node-js-app.example.tld的域名解析到服务器 IP再结合内置的 nginx 等代理vhost机制将不同子域名的流量分发到对应应用。本篇指南以 Dokku 仓库中的 docs/networking/dns.md 为主体讲解子域名app.myserver.example.tld与根域app.example.tld两种接入方案并配合 BIND 格式的 zone 文件示例与host/dig/nslookup验证命令帮助你在完成 安装文档 之前先打好域名解析的地基。读完本文你将能独立完成 Dokku 服务器的域名接入配置并理解 vhost 域名在 Dokku 内部是如何被存储与生成路由 URL 的。DNS 在 Dokku 路由中的角色Dokku 是一个运行在单台服务器上的开源 PaaSPlatform as a Service应用通过git push推送后即可自动构建并运行。当一台 Dokku 服务器上同时运行多个应用时Dokku 使用**域名vhost**来区分它们如果你持有域名example.tld并部署了node-js-app1和node-js-app2两个应用Dokku 会分别让它们通过node-js-app1.example.tld和node-js-app2.example.tld对外提供服务。因此DNS 配置的正确与否直接决定了应用能否被外部访问。安装文档对此有明确说明官方建议为服务器至少绑定一个域名。这不是必须的但使用域名会让应用访问更加容易见 docs/getting-started/installation/index.md。绑定的方式有两种通配符域名*.domain.tld的 A 记录应用可通过$APP.domain.tld访问即每个应用自动获得形如应用名.域名的子域名。单一域名domain.tld的 A 或 CNAME 记录应用将通过domain.tld:$RANDOM_PORT域名加随机端口的形式访问。DNS 服务器的多样性为何以 BIND 格式为示例DNS 生态中存在大量实现野生环境里常见的 DNS 服务器包括 BIND、dnsmasq 和 PowerDNSpdns等Windows 自带的 DNS 服务器之外还有 Unbound、Posadis 等选择此外还有数以万计的托管 DNS 服务商Managed DNS Providers各自提供不同的配置界面。维基百科上维护着 DNS 服务器软件对比和托管 DNS 提供商清单可以按需查阅。正因为可选项如此之多本文档聚焦于 DNS 本身的通用概念并统一采用BIND 格式编写示例以便读者将这些概念适配到自己使用的 DNS 服务器软件或托管 DNS 服务商。前置假设在开始之前本文档假定你已经具备以下条件对 DNS 有基本的了解——知道 DNS 的作用是把名称如example.tld转换为地址如127.0.0.1即可。若完全陌生建议先阅读一篇面向开发者的 DNS 入门文章。已注册一个域名并将其指向你偏好的托管 DNS 服务商或运行着自建的 BIND DNS 服务器。已拥有一台互联网上的服务器正打算按照 README 中的指引安装 Dokku——但先不要执行安装因为 DNS 应该先配置好。谨记DNS 依赖缓存DNS 高度依赖缓存。你对 DNS 所做的修改可能需要几秒到几天的时间才能在全球传播生效。如果曾经访问过example.tld之后又修改了它的 IP 记录你的电脑可能在一段时间内仍使用旧的解析结果。因此在配置过程中验证结果看起来不对时先考虑缓存因素。开始前的准备获取服务器 IP为便于说明全文示例统一使用域名example.tld和 IP 地址127.0.0.1实际使用时请替换为你的真实域名与服务器公网 IP。首先登录你的服务器运行ifconfig或ip addr命令查看服务器的 IP 地址ip addr # 或 ifconfig记下这个 IP接下来所有 DNS 记录都要指向它。做出决策子域名还是根域名拿到 IP 之后你需要对域名策略做一个决定希望example.tld下所有名称都指向 Dokku 服务器还是只用一个子域来承载 Dokku换句话说你的应用最终通过node-js-app.example.tld访问还是通过node-js-app.myserver.example.tld访问子域名方案的优点是干净隔离不会影响example.tld根域上可能存在的其他服务根域名方案则能让应用拥有最短、最直观的访问地址。方案一使用子域名node-js-app.myserver.example.tld子域名方案最简单配置步骤分为三步。1. 创建子域名的 A 记录在配置服务器时你多半已经给它起了一个名字例如myserver.example.tld。进入你的托管 DNS 服务商控制台创建一个名为myserver的A 记录值填入刚才从服务器上查到的 IP 地址。2. 创建通配符 A 记录仅有一个 A 记录还不够Dokku 会为每个应用生成独立的子域名node-js-app.myserver.example.tld、python-app.myserver.example.tld等。为所有应用自动生效你还需要一条通配符记录创建一个名为*.myserver的 A 记录值同样填入服务器 IP。通配符记录会匹配myserver.example.tld下的任意三级子域名。如果你的托管 DNS 服务商不支持通配符记录则需要为每个应用手动添加一条 A 记录应用名对应主机名这会增加后续部署新应用的维护成本。3. BIND zone 文件示例如果你使用 BIND对应的 zone 文件大致如下$ORIGIN example.tld $TTL 5m myserver IN A 127.0.0.1 *.myserver IN A 127.0.0.1其中$ORIGIN example.tld声明该 zone 的根域名$TTL 5m将记录的默认 TTL生存时间设为 5 分钟控制解析结果被缓存的时间长度两条 A 记录分别将myserver.example.tld及其下的任意子域指向127.0.0.1示例 IP请替换为真实地址。4. 验证 DNS 解析在 Linux 上可以通过以下任一命令验证配置是否生效host myserver.example.tld dig -t A myserver.example.tld nslookup myserver.example.tld再次提醒返回的结果可能是被缓存的若与预期不符请耐心等待或使用不同的公共 DNS 递归服务器复查。如果一切正常你还应该能查询myserver.example.tld下的任意其他名称并得到同样的服务器 IPhost test.myserver.example.tld host xyzzy.myserver.example.tld5. 验证 SSH 访问DNS 生效后你应该能够直接通过主机名访问服务器ssh rootmyserver.example.tld如果 SSH 连接成功说明 DNS 已为 Dokku 正确配置。之后即可继续执行 安装文档 中的安装步骤。方案二使用根域名node-js-app.example.tld根域名方案与子域名方案几乎相同区别在于主机名位于example.tld之下仍然需要一条A 记录如example.tld本身或按需添加通配符*应用访问地址不再是app.myserver.example.tld而是app.example.tld。原文档指出这一节仍在完善中。结合仓库中的 docs/configuration/domains.md根域名方案的关键在于后续的全局域名配置安装完成后通过domains:set-global将根域名设置为所有应用的默认 TLD。Dokku 会按scheme://subdomain.domain.tld的结构为应用生成主机名其中subdomain来自推送的应用名domain.tld则来自全局配置。安装后配置全局域名安装并配置好 SSH 密钥后用dokku domains:set-global设置你的全局域名# 使用你拥有的任意域名该域名应有一条 A 记录或 CNAME 指向服务器 IP dokku domains:set-global dokku.me # 也可以直接使用服务器 IP dokku domains:set-global 10.0.0.2 # 还可以借助 sslip.io 获得子域名支持将 .sslip.io 追加到 IP 后面 dokku domains:set-global 10.0.0.2.sslip.io这来自 docs/getting-started/installation/index.mdsslip.io这类通配 DNS 服务可以把10.0.0.2.sslip.io解析为10.0.0.2从而在没有自有域名时也获得子域名能力与真实域名效果一致。设置全局域名后部署应用即可自动获得app.你的域名的访问地址。域名管理的完整命令如domains:add、domains:remove、domains:report等可参阅 docs/configuration/domains.md。源码级原理Dokku 如何利用 DNS 区分应用理解了操作步骤之后从源码层面看看 Dokku 是如何把域名体系落地的能帮助你更好地排查问题。vhost 的存储位置Dokku 的 domains 插件把域名vhost以纯文本文件形式存储全局 vhost$DOKKU_ROOT/VHOST默认即/home/dokku/VHOST由domains:set-global写入见 plugins/domains/functions 中的domains_set_global应用级 vhost$DOKKU_ROOT/$APP/VHOST如/home/dokku/node-js-app/VHOST由domains:add等命令维护见 plugins/domains/functions 中的get_app_domains。应用主机名的生成逻辑当应用没有配置自己的 vhost 时Dokku 会基于全局 vhost 推导主机名核心逻辑在get_default_vhostsplugins/domains/functions若全局 vhost 是 IP 地址IPv4/IPv6则直接跳过、不生成域名否则把应用名与 vhost 拼接应用名不含点号时得到应用名.全局域名如node-js-app.example.tld应用名本身就是 FQDN含点号如dokku.org时直接以应用名作为主机名忽略全局 vhost——这与 docs/configuration/domains.md 的描述一致拼接前还会调用nginx-hostname插件触发器允许插件覆盖默认主机名算法。也就是说只要你的通配符 DNS 能把*.example.tld解析到服务器 IPDokku 就能把每个应用自动映射到对应子域名这正是方案一中通配符 A 记录起作用的原理。路由 URL 的生成部署完成后domains-urls等命令会生成应用的访问 URL逻辑见 plugins/domains/internal-functions 的fn-domains-generate-url监听端口为 80 时输出http://域名443 且存在证书时输出https://域名其他情况输出scheme://域名:端口。vhost 开关NO_VHOST每个应用都可以通过NO_VHOST环境变量控制是否启用 vhostis_app_vhost_enabled读取该变量值为1时 vhost 功能关闭见 plugins/domains/functions。对应地dokku domains:disable app与dokku domains:enable app会设置/清除该变量。关闭 vhost 后nginx 不再为应用生成虚拟主机但应用仍会绑定在某个随机高位端口上供内部访问——这类内部服务不需要 DNS 记录。代理层对未知域名的兜底即便 DNS 配置无误也可能有流量访问到未匹配任何应用的域名。对于默认的 nginx 代理Dokku 在安装时会配置一个 catch-all 默认站点/etc/nginx/conf.d/00-default-vhost.conf对没有匹配任何应用的 HTTP 请求返回444直接关闭连接HTTPS 则使用ssl_reject_handshake拒绝握手。详细行为参见 docs/networking/proxies/nginx.md。常见问题与排查提示解析迟迟不生效优先怀疑 DNS 缓存。检查dig结果中的 TTL并用dig 8.8.8.8 你的域名之类的命令绕过本地缓存直接查询权威服务器。通配符记录被拒绝部分托管 DNS 服务商对通配符有特殊限制可改用为每个应用逐一添加 A 记录的方式或联系服务商确认支持情况。访问返回 444 / 连接被重置说明请求到达了 nginx 但未匹配到任何应用 vhost检查dokku domains:report app确认应用的 vhost 是否已正确生成且 DNS 记录指向的确实是 Dokku 服务器 IP。应用显示为域名:随机端口说明你的域名策略是单一域名非通配符。若希望按子域名访问需要配置通配符 A 记录并通过dokku domains:set-global设置全局域名详见 docs/configuration/domains.md。小结DNS 是 Dokku 多应用路由体系的地基一条指向服务器 IP 的 A 记录让 Dokku 主机本身可达一条通配符 A 记录则让每个新部署的应用自动获得独立子域名。本文以 BIND 格式给出了可直接套用的 zone 文件示例并提供了host、dig、nslookup等验证手段同时从 plugins/domains/functions 的源码出发解释了 vhost 的存储位置、主机名生成逻辑与 URL 拼接规则。在完成 安装文档 后记得用dokku domains:set-global写入全局域名你的 Dokku 服务器即可按子域名对外提供应用服务了。【免费下载链接】dokkuA docker-powered PaaS that helps you build and manage the lifecycle of applications项目地址: https://gitcode.com/GitHub_Trending/do/dokku创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/29 0:28:44

SolidWorks直线切弧与构造线高效设计技巧

1. SolidWorks直线切弧功能深度解析直线切弧是SolidWorks草图绘制中一个容易被忽视但极其实用的功能组合。这个功能实际上包含两个操作步骤:先绘制一条直线,再通过特定操作将其一端或两端转换为相切圆弧。1.1 直线切弧的基本操作流程在草图模式下&#x…

2026/10/29 0:28:44

西南交大算法分析与设计实验作业避坑指南:从DP到回溯的代码落地

简介:这份资源是西南交通大学人工智能专业「算法分析与设计」课程的作业与实验全集,面向正在修读或准备复习该课程的学生,以及需要参考算法实现与实验报告的学习者。内容覆盖排序、搜索、图论、动态规划等核心算法领域,并包含实验…

2026/10/29 0:28:44

RoboCup救援仿真2022校赛环境解析与本地部署指南

简介:本资源是面向高校计算机、人工智能及机器人方向学生的RoboCup救援仿真系统校赛实战项目,适用于毕业设计、课程设计、工程实训与学科竞赛等多类实践场景。项目基于2022年RoboCup Rescue Simulation官方框架开发,完整复现了智能体协同搜救…

2026/10/29 0:28:44

DTMB基带仿真:Python实现国标GB 20600-2006物理层闭环

简介:本资源是一套面向通信工程专业学生、数字电视研发工程师及无线传输算法学习者的DTMB地面数字电视系统仿真代码包,聚焦OFDM调制、信道估计、循环前缀处理与QAM调制等核心环节,助力理解中国自主标准DTMB的物理层实现原理与性能优化方法。压…

2026/10/29 0:23:43

Halcon图像清晰度评估:五种自动对焦评价函数实战指南

简介:本资源是一份面向工业视觉工程师与Halcon初学者的图像清晰度自动评估技术实践文档,聚焦于解决工业相机自动对焦中“如何量化判断最清晰图像”这一核心问题。文档系统梳理了方差法、拉普拉斯能量函数法、能量梯度函数法及Brenner函数法四种主流评价算…

2026/10/28 14:42:12

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/28 15:28:56

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/28 3:32:29

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/29 0:03:42

学生选课系统DFD图绘制指南:边界划分与分层校验实战

简介:文档以顶层与第一层DFD图为核心,完整刻画学生选课系统的逻辑模型,面向软件工程课程设计、系统分析学习及毕设前期建模人群。顶层图界定系统边界,外部实体包括管理员、教师和学生三类角色;第一层图进一步细化用户登…

2026/10/29 0:03:42

JIRA敏捷落地:Scrum角色权限、Sprint与燃尽图避坑指南

简介:围绕“基于JIRA的敏捷开发项目管理”这一主题,面向产品负责人、Scrum Master及研发测试成员,梳理Scrum角色分工、迭代流程与JIRA工具配置的对应关系,适合初、中级团队导入敏捷管理时参考。压缩包共1个docx文件,大…

2026/10/29 0:03:42

SEMI S8人机工程验收实战:从条款拆解到现场实测的完整指南

简介:面向半导体设备设计、制造与运维工程师及安全合规人员,这份资料聚焦SEMI标准体系下的设备安全规范,重点收录SEMI S8-0308《半导体制造设备人体工程学工程安全指南》。内容围绕设备设计原则、错误与事故预防、人体工程学适配三大主线展开…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑