Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion deploy/authentication-setup.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
</Info>

<Warning>
Authentication is only available for documentation hosted on a custom domain or Mintlify subdomain (for example, `docs.example.com` or `example.mintlify.dev`). Authentication is **not supported** when using a [custom basepath](/deploy/docs-subpath) (for example, `example.com/docs`).
Authentication is only available for documentation hosted on a custom domain or Mintlify subdomain (for example, `docs.example.com` or `example.mintlify.cc`). Authentication is **not supported** when using a [custom basepath](/deploy/docs-subpath) (for example, `example.com/docs`).
</Warning>

Authentication requires users to log in before accessing your documentation.
Expand Down Expand Up @@ -104,8 +104,8 @@
* **Scopes** (optional): Permissions to request. Copy the **entire** scope string (for example, for a scope like `provider.users.docs`, copy the complete `provider.users.docs`). Use multiple scopes if you need different access levels.
* **Additional authorization parameters** (optional): Additional query parameters to add to the initial authorization request.
* **Token URL**: Your OAuth token exchange endpoint.
* **Info API URL** (optional): Endpoint on your server that Mintlify calls to retrieve user info. Required for group-based access control. If omitted, the OAuth flow only verifies identity.

Check warning on line 107 in deploy/authentication-setup.mdx

View check run for this annotation

Mintlify / Mintlify Validation (mintlify) - vale-spellcheck

deploy/authentication-setup.mdx#L107

Use 'endpoints?' instead of 'Endpoint'.
* **Logout URL** (optional): The native logout URL for your OAuth provider. When users log out, Mintlify validates the logout redirect against this configured URL for security. The redirect only succeeds if it exactly matches the configured `logoutUrl`. If you do not configure a logout URL, users redirect to `/login`. Mintlify redirects users with a `GET` request and does not append query parameters, so include any parameters (for example, `returnTo`) directly in the URL.

Check warning on line 108 in deploy/authentication-setup.mdx

View check run for this annotation

Mintlify / Mintlify Validation (mintlify) - vale-spellcheck

deploy/authentication-setup.mdx#L108

Use 'logouts?' instead of 'Logout'.
* **Redirect URL** (optional): The URL to redirect users to after authentication.
5. Click **Save changes**.

Expand Down Expand Up @@ -137,7 +137,7 @@
- **Scopes**: `['provider.users.docs']`
- **Token URL**: `https://auth.foo.com/exchange`
- **Info API URL**: `https://api.foo.com/docs/user-info`
- **Logout URL**: `https://auth.foo.com/logout?returnTo=https%3A%2F%2Ffoo.com%2Fdocs`

Check warning on line 140 in deploy/authentication-setup.mdx

View check run for this annotation

Mintlify / Mintlify Validation (mintlify) - vale-spellcheck

deploy/authentication-setup.mdx#L140

Use 'logouts?' instead of 'Logout'.

**Create a user info endpoint** at `api.foo.com/docs/user-info`, which requires an OAuth access token with the `provider.users.docs` scope, and returns:

Expand Down
4 changes: 2 additions & 2 deletions deploy/cloudflare.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@
// If the request is to the docs subpath
if (/^\/docs/.test(urlObject.pathname)) {
// Then Proxy to Mintlify
const DOCS_URL = "[SUBDOMAIN].mintlify.dev";
const DOCS_URL = "[SUBDOMAIN].mintlify.cc";
const CUSTOM_URL = "[YOUR_DOMAIN]";

let url = new URL(request.url);
Expand Down Expand Up @@ -122,7 +122,7 @@
If you use Webflow to host your main site and want to serve Mintlify docs at `/docs` on the same domain, you'll need to configure custom routing through Cloudflare Workers to proxy all non-docs traffic to your main site.

<Warning>
Make sure your main site is set up on a landing page before deploying this Worker, or visitors to your main site may see errors.

Check warning on line 125 in deploy/cloudflare.mdx

View check run for this annotation

Mintlify / Mintlify Validation (mintlify) - vale-spellcheck

deploy/cloudflare.mdx#L125

In general, use active voice instead of passive voice ('is set').
</Warning>

1. In Webflow, set up a landing page for your main site like `landing.yoursite.com`. This is the page that visitors see when they visit your site.
Expand All @@ -148,7 +148,7 @@
// If the request is to the docs subpath
if (/^\/docs/.test(urlObject.pathname)) {
// Proxy to Mintlify
const DOCS_URL = "[SUBDOMAIN].mintlify.dev";
const DOCS_URL = "[SUBDOMAIN].mintlify.cc";
const CUSTOM_URL = "[YOUR_DOMAIN]";
let url = new URL(request.url);
url.hostname = DOCS_URL;
Expand Down
12 changes: 6 additions & 6 deletions deploy/csp-configuration.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,14 @@
| Domain | Purpose | CSP directive | Required |
|:-------|:--------|:--------------|:-------|
| `d4tuoctqmanu0.cloudfront.net` | KaTeX CSS, fonts | `style-src`, `font-src` | Required |
| `*.mintlify.dev` | Documentation content | `connect-src`, `frame-src` | Required |
| `*.mintlify.cc` | Documentation content | `connect-src`, `frame-src` | Required |
| `*.mintlify.com` | Dashboard, API, analytics proxy | `connect-src` | Required |
| `leaves.mintlify.com` | Assistant API | `connect-src` | Required |
| `d3gk2c5xim1je2.cloudfront.net` | Icons, images, logos | `img-src` | Required |
| `d1ctpt7j8wusba.cloudfront.net` | Mint version and release files | `connect-src` | Required |
| `mintcdn.com` | Images, favicons | `img-src`, `connect-src` | Required |
| `*.mintcdn.com` | Images, favicons | `img-src`, `connect-src` | Required |
| `cdn.jsdelivr.net` | Emoji assets for OG images | `script-src`, `img-src` | Required |

Check warning on line 34 in deploy/csp-configuration.mdx

View check run for this annotation

Mintlify / Mintlify Validation (mintlify) - vale-spellcheck

deploy/csp-configuration.mdx#L34

Use 'emojis?' instead of 'Emoji'.
| `mintlify.s3.us-west-1.amazonaws.com` | S3-hosted images | `img-src` | Required |
| `hcaptcha.com` | hCaptcha CAPTCHA verification | `script-src`, `frame-src`, `style-src`, `connect-src`, `unsafe-eval`, `unsafe-inline` | Required |
| `*.hcaptcha.com` | hCaptcha CAPTCHA verification | `script-src`, `frame-src`, `style-src`, `connect-src`, `unsafe-eval`, `unsafe-inline` | Required |
Expand Down Expand Up @@ -62,9 +62,9 @@
style-src 'self' 'unsafe-inline' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com hcaptcha.com *.hcaptcha.com;
font-src 'self' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com;
img-src 'self' data: blob: d3gk2c5xim1je2.cloudfront.net mintcdn.com *.mintcdn.com cdn.jsdelivr.net mintlify.s3.us-west-1.amazonaws.com;
connect-src 'self' *.mintlify.dev *.mintlify.com d1ctpt7j8wusba.cloudfront.net mintcdn.com *.mintcdn.com
connect-src 'self' *.mintlify.cc *.mintlify.com d1ctpt7j8wusba.cloudfront.net mintcdn.com *.mintcdn.com
www.googletagmanager.com cdn.segment.com plausible.io us.posthog.com browser.sentry-cdn.com hcaptcha.com *.hcaptcha.com;
frame-src 'self' *.mintlify.dev hcaptcha.com *.hcaptcha.com;
frame-src 'self' *.mintlify.cc hcaptcha.com *.hcaptcha.com;
```

## Common configurations by proxy type
Expand All @@ -82,7 +82,7 @@
- **Header name**: `Content-Security-Policy`
- **Header value**:
```text wrap
default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' cdn.jsdelivr.net hcaptcha.com *.hcaptcha.com; style-src 'self' 'unsafe-inline' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com hcaptcha.com *.hcaptcha.com; font-src 'self' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com; img-src 'self' data: blob: d3gk2c5xim1je2.cloudfront.net mintcdn.com *.mintcdn.com cdn.jsdelivr.net mintlify.s3.us-west-1.amazonaws.com; connect-src 'self' *.mintlify.dev *.mintlify.com d1ctpt7j8wusba.cloudfront.net mintcdn.com *.mintcdn.com hcaptcha.com *.hcaptcha.com; frame-src 'self' *.mintlify.dev hcaptcha.com *.hcaptcha.com;
default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' cdn.jsdelivr.net hcaptcha.com *.hcaptcha.com; style-src 'self' 'unsafe-inline' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com hcaptcha.com *.hcaptcha.com; font-src 'self' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com; img-src 'self' data: blob: d3gk2c5xim1je2.cloudfront.net mintcdn.com *.mintcdn.com cdn.jsdelivr.net mintlify.s3.us-west-1.amazonaws.com; connect-src 'self' *.mintlify.cc *.mintlify.com d1ctpt7j8wusba.cloudfront.net mintcdn.com *.mintcdn.com hcaptcha.com *.hcaptcha.com; frame-src 'self' *.mintlify.cc hcaptcha.com *.hcaptcha.com;
```
4. Deploy your rule.

Expand All @@ -97,7 +97,7 @@
"Config": {
"SecurityHeadersConfig": {
"ContentSecurityPolicy": {
"ContentSecurityPolicy": "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' cdn.jsdelivr.net hcaptcha.com *.hcaptcha.com; style-src 'self' 'unsafe-inline' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com hcaptcha.com *.hcaptcha.com; font-src 'self' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com; img-src 'self' data: blob: d3gk2c5xim1je2.cloudfront.net mintcdn.com *.mintcdn.com cdn.jsdelivr.net mintlify.s3.us-west-1.amazonaws.com; connect-src 'self' *.mintlify.dev *.mintlify.com d1ctpt7j8wusba.cloudfront.net mintcdn.com *.mintcdn.com hcaptcha.com *.hcaptcha.com; frame-src 'self' *.mintlify.dev hcaptcha.com *.hcaptcha.com;",
"ContentSecurityPolicy": "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' cdn.jsdelivr.net hcaptcha.com *.hcaptcha.com; style-src 'self' 'unsafe-inline' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com hcaptcha.com *.hcaptcha.com; font-src 'self' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com; img-src 'self' data: blob: d3gk2c5xim1je2.cloudfront.net mintcdn.com *.mintcdn.com cdn.jsdelivr.net mintlify.s3.us-west-1.amazonaws.com; connect-src 'self' *.mintlify.cc *.mintlify.com d1ctpt7j8wusba.cloudfront.net mintcdn.com *.mintcdn.com hcaptcha.com *.hcaptcha.com; frame-src 'self' *.mintlify.cc hcaptcha.com *.hcaptcha.com;",
"Override": true
}
}
Expand All @@ -118,7 +118,7 @@
"headers": [
{
"key": "Content-Security-Policy",
"value": "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' cdn.jsdelivr.net hcaptcha.com *.hcaptcha.com; style-src 'self' 'unsafe-inline' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com hcaptcha.com *.hcaptcha.com; font-src 'self' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com; img-src 'self' data: blob: d3gk2c5xim1je2.cloudfront.net mintcdn.com *.mintcdn.com cdn.jsdelivr.net mintlify.s3.us-west-1.amazonaws.com; connect-src 'self' *.mintlify.dev *.mintlify.com d1ctpt7j8wusba.cloudfront.net mintcdn.com *.mintcdn.com hcaptcha.com *.hcaptcha.com; frame-src 'self' *.mintlify.dev hcaptcha.com *.hcaptcha.com;"
"value": "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' cdn.jsdelivr.net hcaptcha.com *.hcaptcha.com; style-src 'self' 'unsafe-inline' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com hcaptcha.com *.hcaptcha.com; font-src 'self' d4tuoctqmanu0.cloudfront.net fonts.googleapis.com; img-src 'self' data: blob: d3gk2c5xim1je2.cloudfront.net mintcdn.com *.mintcdn.com cdn.jsdelivr.net mintlify.s3.us-west-1.amazonaws.com; connect-src 'self' *.mintlify.cc *.mintlify.com d1ctpt7j8wusba.cloudfront.net mintcdn.com *.mintcdn.com hcaptcha.com *.hcaptcha.com; frame-src 'self' *.mintlify.cc hcaptcha.com *.hcaptcha.com;"
}
]
}
Expand Down
60 changes: 30 additions & 30 deletions deploy/reverse-proxy.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: "Reverse proxy"
description: "Configure a custom reverse proxy with Nginx, Apache, or Caddy to serve your Mintlify documentation at a subpath on your own domain."

Check warning on line 3 in deploy/reverse-proxy.mdx

View check run for this annotation

Mintlify / Mintlify Validation (mintlify) - vale-spellcheck

deploy/reverse-proxy.mdx#L3

Use 'nginx' instead of 'Nginx'.

Check warning on line 3 in deploy/reverse-proxy.mdx

View check run for this annotation

Mintlify / Mintlify Validation (mintlify) - vale-spellcheck

deploy/reverse-proxy.mdx#L3

Did you really mean 'Caddy'?
keywords: ["reverse proxy configuration","nginx","proxy routing","header forwarding"]
---

Expand All @@ -12,7 +12,7 @@

Mintlify supports two reverse proxy configurations depending on your subpath requirements.

- **Host at `/docs`**: Use `mintlify.dev` as the proxy target. Enable the **Host at `/docs`** toggle on the [Custom domain setup](https://dashboard.mintlify.com/settings/deployment/custom-domain) page in your dashboard. This is a simpler configuration with fewer routes.
- **Host at `/docs`**: Use `mintlify.cc` as the proxy target. Enable the **Host at `/docs`** toggle on the [Custom domain setup](https://dashboard.mintlify.com/settings/deployment/custom-domain) page in your dashboard. This is a simpler configuration with fewer routes.
- **Custom subpath**: Use `mintlify.app` as the proxy target. This approach supports any subpath and requires additional routing rules.

## Host at `/docs` subpath
Expand All @@ -26,7 +26,7 @@
3. Enter your domain and click **Add domain**.

<Warning>
When you enable **Host at `/docs`**, your canonical docs URL becomes `<your-subdomain>.mintlify.dev`. Cache invalidation stops on `mintlify.app`, and you must proxy to `mintlify.dev` for updates to appear.
When you enable **Host at `/docs`**, your canonical docs URL becomes `<your-subdomain>.mintlify.cc`. Cache invalidation stops on `mintlify.app`, and you must proxy to `mintlify.cc` for updates to appear.
</Warning>

### Routing configuration
Expand All @@ -35,22 +35,22 @@

| Path | Destination | Caching |
| --------------------------------- | ------------------------------------ | -------- |
| `/docs` | `<your-subdomain>.mintlify.dev/docs` | No cache |
| `/docs/*` | `<your-subdomain>.mintlify.dev/docs` | No cache |
| `/.well-known/vercel/*` | `<your-subdomain>.mintlify.dev` | No cache |
| `/.well-known/skills/*` (optional) | `<your-subdomain>.mintlify.dev/docs` | No cache |
| `/.well-known/agent-skills/*` (optional) | `<your-subdomain>.mintlify.dev/docs` | No cache |
| `/skill.md` (optional) | `<your-subdomain>.mintlify.dev/docs` | No cache |
| `/llms.txt` (optional) | `<your-subdomain>.mintlify.dev/docs` | No cache |
| `/llms-full.txt` (optional) | `<your-subdomain>.mintlify.dev/docs` | No cache |
| `/docs` | `<your-subdomain>.mintlify.cc/docs` | No cache |
| `/docs/*` | `<your-subdomain>.mintlify.cc/docs` | No cache |
| `/.well-known/vercel/*` | `<your-subdomain>.mintlify.cc` | No cache |
| `/.well-known/skills/*` (optional) | `<your-subdomain>.mintlify.cc/docs` | No cache |
| `/.well-known/agent-skills/*` (optional) | `<your-subdomain>.mintlify.cc/docs` | No cache |
| `/skill.md` (optional) | `<your-subdomain>.mintlify.cc/docs` | No cache |
| `/llms.txt` (optional) | `<your-subdomain>.mintlify.cc/docs` | No cache |
| `/llms-full.txt` (optional) | `<your-subdomain>.mintlify.cc/docs` | No cache |

The `/.well-known/skills/*`, `/.well-known/agent-skills/*`, `/skill.md`, `/llms.txt`, and `/llms-full.txt` routes are optional. Include them only if you want to serve AI files at root paths like `your-domain.com/llms.txt` instead of under your docs subpath like `your-domain.com/docs/llms.txt`.

### Required header configuration

Configure your reverse proxy with these header requirements:

- **Origin**: Contains the target subdomain `<your-subdomain>.mintlify.dev`
- **Origin**: Contains the target subdomain `<your-subdomain>.mintlify.cc`
- **X-Forwarded-For**: Preserves client IP information
- **X-Forwarded-Proto**: Preserves original protocol (HTTP/HTTPS)
- **X-Real-IP**: Forwards the real client IP address
Expand All @@ -69,8 +69,8 @@

# Vercel verification paths
location ~ ^/\.well-known/vercel/ {
proxy_pass https://<your-subdomain>.mintlify.dev;
proxy_set_header Origin <your-subdomain>.mintlify.dev;
proxy_pass https://<your-subdomain>.mintlify.cc;
proxy_set_header Origin <your-subdomain>.mintlify.cc;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
Expand All @@ -81,8 +81,8 @@

# AI skills paths
location ^~ /.well-known/skills/ {
proxy_pass https://<your-subdomain>.mintlify.dev/docs;
proxy_set_header Origin <your-subdomain>.mintlify.dev;
proxy_pass https://<your-subdomain>.mintlify.cc/docs;
proxy_set_header Origin <your-subdomain>.mintlify.cc;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
Expand All @@ -93,8 +93,8 @@

# Agent-skills discovery paths
location ^~ /.well-known/agent-skills/ {
proxy_pass https://<your-subdomain>.mintlify.dev/docs;
proxy_set_header Origin <your-subdomain>.mintlify.dev;
proxy_pass https://<your-subdomain>.mintlify.cc/docs;
proxy_set_header Origin <your-subdomain>.mintlify.cc;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
Expand All @@ -105,8 +105,8 @@

# Skill manifest (optional)
location = /skill.md {
proxy_pass https://<your-subdomain>.mintlify.dev/docs;
proxy_set_header Origin <your-subdomain>.mintlify.dev;
proxy_pass https://<your-subdomain>.mintlify.cc/docs;
proxy_set_header Origin <your-subdomain>.mintlify.cc;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
Expand All @@ -117,8 +117,8 @@

# LLM index files (optional)
location = /llms.txt {
proxy_pass https://<your-subdomain>.mintlify.dev/docs;
proxy_set_header Origin <your-subdomain>.mintlify.dev;
proxy_pass https://<your-subdomain>.mintlify.cc/docs;
proxy_set_header Origin <your-subdomain>.mintlify.cc;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
Expand All @@ -128,8 +128,8 @@
}

location = /llms-full.txt {
proxy_pass https://<your-subdomain>.mintlify.dev/docs;
proxy_set_header Origin <your-subdomain>.mintlify.dev;
proxy_pass https://<your-subdomain>.mintlify.cc/docs;
proxy_set_header Origin <your-subdomain>.mintlify.cc;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
Expand All @@ -140,8 +140,8 @@

# Documentation root
location = /docs {
proxy_pass https://<your-subdomain>.mintlify.dev/docs;
proxy_set_header Origin <your-subdomain>.mintlify.dev;
proxy_pass https://<your-subdomain>.mintlify.cc/docs;
proxy_set_header Origin <your-subdomain>.mintlify.cc;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
Expand All @@ -152,8 +152,8 @@

# All documentation paths
location /docs/ {
proxy_pass https://<your-subdomain>.mintlify.dev/docs/;
proxy_set_header Origin <your-subdomain>.mintlify.dev;
proxy_pass https://<your-subdomain>.mintlify.cc/docs/;
proxy_set_header Origin <your-subdomain>.mintlify.cc;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
Expand Down Expand Up @@ -381,9 +381,9 @@

**Symptoms**: You publish documentation updates, but the changes don't appear on your site.

**Cause**: You have **Host at `/docs`** enabled in your dashboard but your reverse proxy points to `mintlify.app` instead of `mintlify.dev`.
**Cause**: You have **Host at `/docs`** enabled in your dashboard but your reverse proxy points to `mintlify.app` instead of `mintlify.cc`.

**Solution**: Update your reverse proxy configuration to point to `<your-subdomain>.mintlify.dev` instead of `<your-subdomain>.mintlify.app`.
**Solution**: Update your reverse proxy configuration to point to `<your-subdomain>.mintlify.cc` instead of `<your-subdomain>.mintlify.app`.

### 404 error

Expand All @@ -394,7 +394,7 @@
**Solution**:

- Remove `Host` header forwarding
- Set `Origin` header to your Mintlify subdomain (`mintlify.dev` for a `/docs` subpath or `mintlify.app` for a different subpath)
- Set `Origin` header to your Mintlify subdomain (`mintlify.cc` for a `/docs` subpath or `mintlify.app` for a different subpath)

### Performance issues

Expand Down
12 changes: 6 additions & 6 deletions deploy/route53-cloudfront.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,10 @@
![CloudFront Distributions page with the "Create distribution" button emphasized.](/images/cloudfront/create-distribution.png)
</Frame>

3. For the Origin domain, input `[SUBDOMAIN].mintlify.dev` where `[SUBDOMAIN]` is your project's unique subdomain.
3. For the Origin domain, input `[SUBDOMAIN].mintlify.cc` where `[SUBDOMAIN]` is your project's unique subdomain.

<Frame>
![CloudFront "Create distribution" page showing "acme.mintlify.dev" as the origin domain.](/images/cloudfront/origin-name.png)
![CloudFront "Create distribution" page showing "acme.mintlify.cc" as the origin domain.](/images/cloudfront/origin-name.png)
</Frame>

4. For "Web Application Firewall (WAF)," enable security protections.
Expand All @@ -59,10 +59,10 @@
![A CloudFront distribution with the "Origins" tab highlighted.](/images/cloudfront/origins.png)
</Frame>

2. Find your staging URL that mirrors the main domain. This varies depending on how your landing page is hosted. For example, the Mintlify staging URL is [mintlify-landing-page.vercel.app](https://mintlify-landing-page.vercel.app).

Check warning on line 62 in deploy/route53-cloudfront.mdx

View check run for this annotation

Mintlify / Mintlify Validation (mintlify) - vale-spellcheck

deploy/route53-cloudfront.mdx#L62

In general, use active voice instead of passive voice ('is hosted').

<Info>
If your landing page is hosted on Webflow, use Webflow's staging URL. It would look like `.webflow.io`.

Check warning on line 65 in deploy/route53-cloudfront.mdx

View check run for this annotation

Mintlify / Mintlify Validation (mintlify) - vale-spellcheck

deploy/route53-cloudfront.mdx#L65

In general, use active voice instead of passive voice ('is hosted').

If you use Vercel, use the `.vercel.app` domain available for every project.
</Info>
Expand All @@ -83,7 +83,7 @@

Behaviors in CloudFront enable control over the subpath logic. At a high level, we're looking to create the following logic:

- **If a user lands on your custom subpath**, go to `[SUBDOMAIN].mintlify.dev`.
- **If a user lands on your custom subpath**, go to `[SUBDOMAIN].mintlify.cc`.
- **If a user lands on any other page**, go to the current landing page.

1. Navigate to the "Behaviors" tab of your CloudFront distribution.
Expand All @@ -105,26 +105,26 @@
</Frame>

<Info>
If `.well-known/*` is too generic, it can be narrowed down to 2 behaviors at a minimum for Vercel:

Check warning on line 108 in deploy/route53-cloudfront.mdx

View check run for this annotation

Mintlify / Mintlify Validation (mintlify) - vale-spellcheck

deploy/route53-cloudfront.mdx#L108

In general, use active voice instead of passive voice ('be narrowed').
- `/.well-known/vercel/*` - Required for Vercel domain verification
- `/.well-known/acme-challenge/*` - Required for Let's Encrypt certificate verification
</Info>

### Your subpath

Create a behavior with a **Path pattern** of your chosen subpath, for example `/docs`, with **Origin and origin groups** pointing to the `.mintlify.dev` URL (in our case `acme.mintlify.dev`).
Create a behavior with a **Path pattern** of your chosen subpath, for example `/docs`, with **Origin and origin groups** pointing to the `.mintlify.cc` URL (in our case `acme.mintlify.cc`).

- Set "Cache policy" to **CachingOptimized**.
- Set "Origin request policy" to **AllViewerExceptHostHeader**.
- Set Viewer Protocol Policy to **Redirect HTTP to HTTPS**

<Frame>
![CloudFront "Create behavior" page with a "Path pattern" of "/docs/*" and "Origin and origin groups" pointing to the `acme.mintlify.dev` URL.](/images/cloudfront/behavior-1.png)
![CloudFront "Create behavior" page with a "Path pattern" of "/docs/*" and "Origin and origin groups" pointing to the `acme.mintlify.cc` URL.](/images/cloudfront/behavior-1.png)
</Frame>

### Your subpath with wildcard

Create a behavior with a **Path pattern** of your chosen subpath followed by `/*`, for example `/docs/*`, and **Origin and origin groups** pointing to the same `.mintlify.dev` URL.
Create a behavior with a **Path pattern** of your chosen subpath followed by `/*`, for example `/docs/*`, and **Origin and origin groups** pointing to the same `.mintlify.cc` URL.

These settings should exactly match your base subpath behavior. With the exception of the **Path pattern**.

Expand Down Expand Up @@ -154,7 +154,7 @@

2. Click **Save changes**.

### Check behaviors are set up correctly

Check warning on line 157 in deploy/route53-cloudfront.mdx

View check run for this annotation

Mintlify / Mintlify Validation (mintlify) - vale-spellcheck

deploy/route53-cloudfront.mdx#L157

In general, use active voice instead of passive voice ('are set').

If you follow the preceding steps, your behaviors should look like this:

Expand All @@ -164,7 +164,7 @@

## Preview distribution

You can now test if your distribution is set up properly by going to the "General" tab and visiting the **Distribution domain name** URL.

Check warning on line 167 in deploy/route53-cloudfront.mdx

View check run for this annotation

Mintlify / Mintlify Validation (mintlify) - vale-spellcheck

deploy/route53-cloudfront.mdx#L167

In general, use active voice instead of passive voice ('is set').

<Frame>
![CloudFront "General" tab with the "Distribution domain name" URL highlighted.](/images/cloudfront/preview-distribution.png)
Expand All @@ -172,7 +172,7 @@

All pages should be directing to your main landing page, but if you append your chosen subpath, for example `/docs`, to the URL, you should see it going to your Mintlify documentation instance.

## Connect with Route 53

Check warning on line 175 in deploy/route53-cloudfront.mdx

View check run for this annotation

Mintlify / Mintlify Validation (mintlify) - vale-spellcheck

deploy/route53-cloudfront.mdx#L175

'Connect with Route 53' should use sentence-style capitalization.

Now, we're going to bring the capabilities of the CloudFront distribution into your primary domain.

Expand Down
Loading
Loading