news 2026/9/10 19:14:23

EAS Hosting 生产部署怎么绑定自定义域名并通过 DNS 验证与 SSL 配置?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
EAS Hosting 生产部署怎么绑定自定义域名并通过 DNS 验证与 SSL 配置?

EAS Hosting 生产部署怎么绑定自定义域名并通过 DNS 验证与 SSL 配置?

【免费下载链接】expoAn open-source framework for making universal native apps with React. Expo runs on Android, iOS, and the web.项目地址: https://gitcode.com/GitHub_Trending/ex/expo

默认情况下,Expo 项目中部署到 EAS Hosting 的生产环境地址是my-app.expo.app这种形式(my-app是你选择的 preview subdomain name)。如果你自有域名,可以把它作为自定义域名绑定到项目的生产部署上,让example.com直接路由到你的生产环境。这篇文章描述完整的绑定路径:先把一个部署提升到 production,再到 Hosting settings 里填写自定义域名,然后在你的 DNS 服务商处添加三条记录(域名验证、SSL、路由),最后等仪表盘检查全部通过。

前提条件

在开始之前,需要满足以下三个条件(均来自 EAS Hosting 官方文档):

  1. 一个已有生产部署的 EAS Hosting 项目。自定义域名只会加载 production deployment,所以项目里必须先有一个被提升到 production 的部署。如果还没有,在项目目录中执行:

    npx expo export --platform web eas deploy --prod

    第一次运行eas deploy会提示你关联 EAS 项目并选择 preview subdomain name。已有部署也可以事后提升:

    eas deploy:alias --prod --id=deploymentId

    其中deploymentId是 preview URL 中的部署 ID(详见 Deployments and aliases)。

  2. 一个你拥有且可以管理 DNS 记录的域名。apex 域(如example.com)和子域(如anything.example.com)都支持。

  3. 付费套餐。自定义域名是 premium feature,Free plan 不可用(见 Custom domain)。

每个项目只能绑定一个自定义域名,它固定指向该项目的生产部署。

在仪表盘填写自定义域名

  1. 在 expo.dev 的项目 dashboard 中进入Hosting settingsexpo.dev/accounts/[accountName]/projects/[projectName]/hosting/settings路径下的 Hosting 设置页)。
  2. 如果没有 production deployment,界面会先提示你指定一个生产部署。
  3. Custom domain一栏填入要绑定的域名。

填写后,仪表盘会给出三条需要在 DNS 服务商处添加的记录,分别对应:

  • Verification:证明你拥有该域名;
  • SSL:用于配置 SSL 证书;
  • CNAME(子域)或A record(apex 域):把域名指向你的生产部署。

添加三条 DNS 记录

三条记录的具体含义和落点如下(example.com为文档中的示例域名,请替换为你自己的域名):

记录类型记录所在主机名指向 / 作用
Verification TXT_cf-custom-hostname.example.com证明域名所有权。记录带有一个自定义 token,EAS Hosting 可以读回该 token 来确认你在操作自己控制的域名
SSL CNAME_acme-challenge.example.com向证书颁发机构证明域名所有权(Domain Control Validation,DCV)。做成 CNAME 是因为证书的续期和验证都交给自动化流程,防止证书过期
路由记录域名本身apex 域:A record 到172.66.0241(文档原值为172.66.0.241);子域:CNAME 到origin.expo.app

几点说明:

  • 前两条验证记录都创建在你所设置的自定义域名的子域上。如果你设置的是anything.example.com,对应主机名就是_cf-custom-hostname.anything.example.com_acme-challenge.anything.example.com
  • 路由记录对 apex 域和子域是等价的两种写法,但有些 DNS 服务商不允许在 apex 域上设置 CNAME,所以 apex 域通常用 A record,子域用 CNAME。

关于零停机:如果你要求切换域名时零停机,必须按仪表盘给出的顺序逐条添加记录——先加 Verification TXT 并点 Refresh 直到 UI 确认该记录,再加 SSL CNAME 并确认,最后才加第三条路由记录。如果不在意短暂停机,三条记录可以一次性全部添加。

验证结果

添加完记录后,回到 Hosting settings 页面,反复点击Refresh按钮,直到所有检查项(checks)全部通过。文档说明这一步通常只需要几分钟,具体取决于 DNS 服务商的生效速度。

三项检查都通过后,自定义域名就会路由到你的production部署。后续即使你用--prodeas deploy:alias --prod --id=<deploymentId>把生产部署切换到新的部署 ID,自定义域名始终跟随当前生产部署,无需重新配置。

可选:为其他别名配置子域

虽然每个项目只能绑定一个自定义域名,但可以额外添加子域 DNS 记录来处理生产别名以外的请求:请求会路由到别名与子域匹配的那个部署。

例如,先创建一个staging别名(eas deploy --alias staging),然后在 DNS 中添加:

  • 如果自定义域名是 apex 域example.com:在staging.example.com上创建 CNAME 记录,指向origin.expo.app
  • 如果自定义域名是子域anything.example.com:在staging.anything.example.com上创建同样的 CNAME 记录。

也可以设置通配符:在*.example.com(或*.anything.example.com)上创建 CNAME 记录指向origin.expo.app,任何子域请求都会被尝试路由到同名的别名部署。

例外是www子域:如果存在www子域且没有名为www的别名,请求会收到 308 响应并重定向到自定义域名,按生产部署处理。如果只想做这个自动重定向,只需在www.<yourdomain>上创建 CNAME 记录指向origin.expo.app

注意:如果是在2025 年 3 月 19 日之前已经设置好自定义域名的项目,先按上文流程点一次 "Refresh",再执行通配符域名的配置。

限制与注意事项

  • 仅限付费套餐,且每个项目一个自定义域名。
  • EAS Hosting 使用SNI(Server Name Indication),IP 地址是共享的、不专属某个项目(见 Deployments and aliases 的 FAQ),因此绑定依赖域名解析与 SNI 匹配,而不是固定 IP。
  • 三条 DNS 记录的值(验证 token、A record IP、CNAME 目标)以你所在项目 Hosting settings 页面实时展示为准,本文中的172.66.0.241origin.expo.app均为文档给出的典型值。

【免费下载链接】expoAn open-source framework for making universal native apps with React. Expo runs on Android, iOS, and the web.项目地址: https://gitcode.com/GitHub_Trending/ex/expo

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

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

Selenium自动化整活靶场:电子神庙项目踩坑笔记

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/10 19:12:06

Material3 HorizontalUncontainedCarousel问题解析与替代方案

1. HorizontalUncontainedCarousel组件问题解析 最近在Material3组件库中尝试使用HorizontalUncontainedCarousel时遇到了无法调用的问题。这个组件在官方文档中被描述为"一个不限制内容边界的水平轮播容器"&#xff0c;理论上应该能实现类似电商APP首页那种可以无限…

作者头像 李华
网站建设 2026/9/10 19:11:28

OpenSSL 3.0 Provider架构实践:从零编写自定义摘要算法模块

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/10 19:11:26

C++实现二叉搜索树(BST)核心原理与工程实践

1. 二叉搜索树基础概念解析二叉搜索树&#xff08;Binary Search Tree&#xff0c;BST&#xff09;是一种特殊的二叉树数据结构&#xff0c;它满足以下关键性质&#xff1a;对于树中的任意节点&#xff0c;其左子树所有节点的值都小于该节点的值&#xff0c;而右子树所有节点的…

作者头像 李华
网站建设 2026/9/10 19:04:30

百考通得力助手:AI赋能任务书生成

在学术研究、课程设计与项目开发的起步阶段&#xff0c;一份规范、清晰的任务书是指引方向的核心纲领。但从选题构思到内容撰写&#xff0c;往往让研究者与学生陷入困境&#xff1a;选题迷茫、逻辑混乱、要求表述模糊&#xff0c;严重拖慢项目推进节奏。百考通&#xff08;http…

作者头像 李华