mirror of
https://github.com/mintlify/docs.git
synced 2026-09-14 13:35:46 +08:00
3bebd828f6
* docs: sync es/fr/zh translations with recent English updates * docs: tighten translated SEO metadata and fix register consistency --------- Co-authored-by: mintlify[bot] <109931778+mintlify[bot]@users.noreply.github.com>
250 lines
9.9 KiB
Plaintext
250 lines
9.9 KiB
Plaintext
---
|
||
title: "AWS Route 53 和 CloudFront"
|
||
sidebarTitle: "AWS"
|
||
description: "使用 AWS Route 53 进行 DNS 路由,并通过 CloudFront CDN 和 Lambda@Edge 函数将你的 Mintlify 文档部署到子路径。"
|
||
keywords: ["AWS 部署", "Route 53 DNS(域名系统)", "CloudFront CDN", "缓存策略"]
|
||
---
|
||
|
||
import Propagating from "/snippets/zh/custom-subpath-propagating.mdx";
|
||
import SubpathSetupSteps from "/snippets/zh/subpath-setup-steps.mdx";
|
||
|
||
若要使用 AWS Route 53 和 CloudFront 将文档托管在类似 `yoursite.com/docs` 这样的子路径上,你必须将 DNS 服务提供商配置为指向你的 CloudFront 分配。
|
||
|
||
在配置 AWS 之前,请在控制台中设置你的基础路径:
|
||
|
||
<SubpathSetupSteps />
|
||
|
||
<div id="overview">
|
||
## 概览
|
||
</div>
|
||
|
||
<Note>
|
||
以下示例使用 `/docs` 基础路径。如果你使用不同的基础路径,请将 `/docs` 替换为你的基础路径。
|
||
</Note>
|
||
|
||
将流量路由到以下路径,并将缓存策略(Cache Policy)设置为 **CachingDisabled**:
|
||
|
||
- `/.well-known/acme-challenge/*` - 用于 Let's Encrypt 证书验证
|
||
- `/.well-known/vercel/*` - 用于域名验证
|
||
- `/docs/*` - 用于子路径路由
|
||
- `/docs/` - 用于子路径路由
|
||
|
||
将流量路由到以下路径,并将缓存策略(Cache Policy)设置为 **CachingEnabled**:
|
||
|
||
- `/mintlify-assets/_next/static/*`
|
||
- `Default (*)` - 你的网站着陆页
|
||
|
||
所有 Behaviors 都必须将 **origin request policy** 设置为 `AllViewerExceptHostHeader`。
|
||
|
||
你的子路径对应的 Behaviors 必须允许所有 HTTP 方法。CloudFront 默认只允许 `GET` 和 `HEAD` 请求,这会阻止 Mintlify 用于分析和其他交互功能的 `POST` 请求。
|
||
|
||

|
||
|
||
<div id="create-cloudfront-distribution">
|
||
## 创建 CloudFront 分配
|
||
</div>
|
||
|
||
1. 在 AWS 控制台中前往 [CloudFront](https://aws.amazon.com/cloudfront)。
|
||
2. 选择 **Create distribution**。
|
||
|
||
<Frame>
|
||

|
||
</Frame>
|
||
|
||
3. 在 Origin domain 中输入 `[SUBDOMAIN].mintlify.site`,其中 `[SUBDOMAIN]` 是你项目的唯一子域。
|
||
|
||
<Frame>
|
||

|
||
</Frame>
|
||
|
||
4. 在 “Web Application Firewall (WAF)” 中,启用安全防护。
|
||
|
||
<Frame>
|
||

|
||
</Frame>
|
||
|
||
<Note>
|
||
WAF 规则可能会阻止 Mintlify 用于分析和其他交互功能的 `POST` 请求。如果启用 WAF 后仪表板中不再显示分析数据,请检查 WAF 日志中是否有指向 `/docs/_mintlify/` 下路径的被阻止请求。
|
||
</Note>
|
||
|
||
5. 其余设置保持默认。
|
||
6. 选择 **Create distribution**。
|
||
|
||
<div id="add-default-origin">
|
||
## 添加默认 Origin
|
||
</div>
|
||
|
||
1. 创建分发后,前往 “Origins” 标签页。
|
||
|
||
<Frame>
|
||

|
||
</Frame>
|
||
|
||
2. 找到与你主域名对应的预发布环境 URL。具体取决于你的落地页托管服务。例如,Mintlify 的预发布 URL 是 [mintlify-landing-page.vercel.app](https://mintlify-landing-page.vercel.app)。
|
||
|
||
<Info>
|
||
如果你的落地页由 Webflow 托管,请使用 Webflow 的预发布 URL,通常为 `.webflow.io`。
|
||
|
||
如果你使用 Vercel,请使用每个项目默认提供的 `.vercel.app` 域名。
|
||
</Info>
|
||
|
||
3. 新建一个 Origin,并将你的预发布 URL 填入 “Origin domain”。
|
||
|
||
<Frame>
|
||

|
||
</Frame>
|
||
|
||
你现在应当有两个 Origins:一个为 `[SUBDOMAIN].mintlify.site`,另一个为你的预发布 URL。
|
||
|
||
<Frame>
|
||

|
||
</Frame>
|
||
|
||
<div id="set-behaviors">
|
||
## 设置行为
|
||
</div>
|
||
|
||
CloudFront 中的行为用于控制子路径逻辑。总体而言,我们希望实现以下逻辑:
|
||
|
||
- **如果用户访问你的自定义子路径**,跳转到 `[SUBDOMAIN].mintlify.site`。
|
||
- **如果用户访问其他任意页面**,跳转到当前登录页。
|
||
|
||
1. 打开 CloudFront 分配的 “Behaviors” 标签页。
|
||
|
||
<Frame>
|
||

|
||
</Frame>
|
||
|
||
2. 点击 **Create behavior** 按钮,并创建以下行为。
|
||
|
||
<div id="well-known">
|
||
### `/.well-known/*`
|
||
</div>
|
||
|
||
为用于 Vercel 域名验证的路径创建一个 **Path pattern** 为 `/.well-known/*` 的行为,并将 **Origin and origin groups** 指向你的文档站点 URL。
|
||
|
||
在 "Cache policy" 中选择 **CachingDisabled**,以确保这些验证请求直通且不被缓存。
|
||
|
||
<Frame>
|
||

|
||
</Frame>
|
||
|
||
<Info>
|
||
如果 `.well-known/*` 过于宽泛,你至少可以为 Vercel 将其细化为 2 个行为:
|
||
- `/.well-known/vercel/*` - Vercel 域名验证所必需
|
||
- `/.well-known/acme-challenge/*` - Let's Encrypt 证书验证所必需
|
||
</Info>
|
||
|
||
<div id="your-subpath">
|
||
### 你的子路径
|
||
</div>
|
||
|
||
创建一个行为,将 **Path pattern** 设置为你选择的子路径,例如 `/docs`,并将 **Origin and origin groups** 指向 `.mintlify.site` 的 URL(在我们的示例中为 `acme.mintlify.site`)。
|
||
|
||
- 将 "Cache policy" 设置为 **CachingDisabled**。
|
||
- 将 "Origin request policy" 设置为 **AllViewerExceptHostHeader**。
|
||
- 将 "Viewer Protocol Policy" 设置为 **Redirect HTTP to HTTPS**。
|
||
- 将 "Allowed HTTP methods" 设置为 **GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE**。
|
||
|
||
<Warning>
|
||
CloudFront 默认只允许 `GET` 和 `HEAD` 请求。如果你不允许所有 HTTP 方法,CloudFront 会拒绝 Mintlify 用于分析的 `POST` 请求,即使你的文档可以正常加载,仪表板中也不会显示任何页面浏览量。
|
||
</Warning>
|
||
|
||
<Frame>
|
||

|
||
</Frame>
|
||
|
||
<div id="your-subpath-with-wildcard">
|
||
### 带通配符的子路径
|
||
</div>
|
||
|
||
创建一个行为,在 **Path pattern** 中填写你选择的子路径并在后面添加 `/*`,例如 `/docs/*`,并将 **Origin and origin groups** 指向相同的 `.mintlify.site` URL。
|
||
|
||
除 **Path pattern** 外,其余设置应与基础子路径行为完全一致。
|
||
|
||
- 将 "Cache policy" 设置为 **CachingDisabled**
|
||
- 将 "Origin request policy" 设置为 **AllViewerExceptHostHeader**
|
||
- 将 "Viewer protocol policy" 设置为 **Redirect HTTP to HTTPS**
|
||
- 将 "Allowed HTTP methods" 设置为 **GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE**
|
||
|
||
<div id="mintlify-assets_nextstatic">
|
||
### `/mintlify-assets/_next/static/*`
|
||
</div>
|
||
|
||
- 将“Cache policy”设置为 **CachingOptimized**
|
||
- 将“Origin request policy”设置为 **AllViewerExceptHostHeader**
|
||
- 将“Viewer protocol policy”设置为 **Redirect HTTP to HTTPS**
|
||
|
||
<div id="default">
|
||
### `Default (*)`
|
||
</div>
|
||
|
||
编辑 `Default (*)` 行为。
|
||
|
||
<Frame>
|
||

|
||
</Frame>
|
||
|
||
1. 将默认行为的 **Origin and origin groups** 更改为预发布环境的 URL(在我们的示例中为 `mintlify-landing-page.vercel.app`)。
|
||
|
||
<Frame>
|
||

|
||
</Frame>
|
||
|
||
2. 选择 **保存更改**。
|
||
|
||
<div id="check-behaviors-are-set-up-correctly">
|
||
### 检查你是否已正确配置行为
|
||
</div>
|
||
|
||
如果你按前述步骤操作,行为配置应如下所示:
|
||
|
||
<Frame>
|
||

|
||
</Frame>
|
||
|
||
<div id="preview-distribution">
|
||
## 预览分发
|
||
</div>
|
||
|
||
若要测试你的分发,请进入 “General” 标签页并访问 **Distribution domain name** 的 URL。
|
||
|
||
<Frame>
|
||

|
||
</Frame>
|
||
|
||
所有页面都应路由到你的主着陆页。当你在 URL 后追加你选择的子路径(例如 `/docs`)时,该 URL 应会提供你的 Mintlify 文档。
|
||
|
||
<div id="connect-with-route-53">
|
||
## 连接 Route 53
|
||
</div>
|
||
|
||
接下来,将 CloudFront 分配连接到你的主域名。
|
||
|
||
<Note>
|
||
本节你也可以参考 AWS 的官方指南:[将 Amazon Route 53 配置为将流量路由到 CloudFront 分配](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-cloudfront-distribution.html#routing-to-cloudfront-distribution-config)
|
||
</Note>
|
||
|
||
1. 在 AWS 控制台中进入 [Route53](https://aws.amazon.com/route53)。
|
||
2. 进入主域名的“Hosted zone”。
|
||
3. 选择 **Create record**。
|
||
|
||
<Frame>
|
||

|
||
</Frame>
|
||
|
||
4. 打开 `Alias`,然后在 **Route traffic to** 中选择 `Alias to CloudFront distribution` 选项。
|
||
|
||
<Frame>
|
||

|
||
</Frame>
|
||
|
||
5. 选择 **Create records**。
|
||
|
||
<Note>
|
||
如果当前存在 A 记录,你可能需要将其删除。
|
||
</Note>
|
||
|
||
你的文档现已通过主域名中你选择的子路径对外可用。
|
||
|
||
<Propagating /> |