mirror of
https://github.com/mintlify/docs.git
synced 2026-09-14 13:35:46 +08:00
3ca550b188
* docs: update hosted docs domain to mintlify.site * docs: complete mintlify.site migration across remaining pages Updates 45 files that PR 6282 had originally changed but were reverted by PR 6285 and not re-addressed in this PR: - snippets/vercel-json-generator.mdx (all 4 locales): rewrite destinations now use mintlify.site, consistent with deploy/vercel.mdx - assistant/use.mdx: example deep-link URLs - ai/skillmd.mdx: agent card subdomain reference - guides/assistant-embed.mdx: docsURL code example - guides/codex.mdx: MCP URL example - deploy/authentication-setup.mdx: example Mintlify subdomain - discovery-openapi.json: domain identifier URL descriptions (4 occurrences) - integrations/privacy/osano.mdx: managed rule domain - editor/branching-and-publishing.mdx: branch preview URL format - customize/themes.mdx: theme demo site links - guides/help-center.mdx: live example link - zh/editor/collaborate.mdx: branch preview URL format All changes mirrored across es, fr, and zh locales. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: mintlify[bot] <109931778+mintlify[bot]@users.noreply.github.com> Co-authored-by: Ethan Palm <56270045+ethanpalm@users.noreply.github.com> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
431 lines
18 KiB
Plaintext
431 lines
18 KiB
Plaintext
---
|
|
title: "Proxy inverso"
|
|
description: "Configura un proxy inverso personalizado con Nginx, Apache o Caddy para servir tu documentación de Mintlify en una subruta de tu propio dominio."
|
|
keywords: ["reverse proxy configuration","nginx","proxy routing","header forwarding"]
|
|
---
|
|
|
|
Para publicar tu documentación a través de un proxy inverso personalizado, debes configurar reglas de enrutamiento, políticas de caché y reenvío de encabezados.
|
|
|
|
Al implementar un proxy inverso, supervisa posibles problemas con la verificación del domain, el aprovisionamiento de certificados SSL, los flujos de Autenticación, el rendimiento y el seguimiento de Analytics.
|
|
|
|
<div id="choose-your-deployment-approach">
|
|
## Elige tu enfoque de implementación
|
|
</div>
|
|
|
|
Mintlify admite dos configuraciones de proxy inverso en función de tus requisitos de subruta.
|
|
|
|
- **Alojar en `/docs`**: Activa la opción **Host at `/docs`** en la página [Custom domain setup](https://dashboard.mintlify.com/settings/deployment/custom-domain) de tu dashboard. Esta es una configuración más sencilla con menos rutas.
|
|
- **Subruta personalizada**: Usa cualquier subruta que elijas. Este enfoque requiere reglas de enrutamiento adicionales.
|
|
|
|
En ambas configuraciones, usa `mintlify.site` como destino del proxy.
|
|
|
|
<div id="host-at-docs-subpath">
|
|
## Hospedar en la subruta `/docs`
|
|
</div>
|
|
|
|
Usa esta configuración cuando quieras servir la documentación en la ruta `/docs` de tu dominio.
|
|
|
|
Antes de configurar tu proxy inverso:
|
|
|
|
1. Navega a [Configuración de dominio personalizado](https://dashboard.mintlify.com/settings/deployment/custom-domain) en tu dashboard.
|
|
2. Activa la opción **Host at `/docs`**.
|
|
3. Ingresa tu domain y selecciona **Add domain**.
|
|
|
|
<Warning>
|
|
Cuando activas **Host at `/docs`**, la URL canónica de tu documentación se convierte en `<your-subdomain>.mintlify.site/docs`. Dirige el proxy a `<your-subdomain>.mintlify.site` para que la invalidación de caché y las actualizaciones surtan efecto.
|
|
</Warning>
|
|
|
|
<div id="routing-configuration">
|
|
### Configuración de enrutamiento
|
|
</div>
|
|
|
|
Encamina (proxy) estas rutas a tu subdomain de Mintlify:
|
|
|
|
| Ruta | Destino | Caché |
|
|
| --------------------------------- | ----------------------------------- | -------- |
|
|
| `/docs` | `<your-subdomain>.mintlify.site/docs` | Sin caché |
|
|
| `/docs/*` | `<your-subdomain>.mintlify.site/docs` | Sin caché |
|
|
| `/.well-known/vercel/*` | `<your-subdomain>.mintlify.site` | Sin caché |
|
|
| `/.well-known/skills/*` (opcional) | `<your-subdomain>.mintlify.site/docs` | Sin caché |
|
|
| `/.well-known/agent-skills/*` (opcional) | `<your-subdomain>.mintlify.site/docs` | Sin caché |
|
|
| `/skill.md` (opcional) | `<your-subdomain>.mintlify.site/docs` | Sin caché |
|
|
| `/llms.txt` (opcional) | `<your-subdomain>.mintlify.site/docs` | Sin caché |
|
|
| `/llms-full.txt` (opcional) | `<your-subdomain>.mintlify.site/docs` | Sin caché |
|
|
|
|
Las rutas `/.well-known/skills/*`, `/.well-known/agent-skills/*`, `/skill.md`, `/llms.txt` y `/llms-full.txt` son opcionales. Inclúyelas solo si quieres servir archivos de IA en rutas raíz como `your-domain.com/llms.txt` en lugar de en tu subruta de documentación, como `your-domain.com/docs/llms.txt`.
|
|
|
|
### Configuración obligatoria de encabezados
|
|
|
|
Configura tu proxy inverso con estos requisitos de encabezados:
|
|
|
|
* **Origin**: Contiene el subdomain de destino `<your-subdomain>.mintlify.site`
|
|
* **X-Forwarded-For**: Conserva la información de la IP del cliente
|
|
* **X-Forwarded-Proto**: Conserva el protocolo original (HTTP/HTTPS)
|
|
* **X-Real-IP**: Reenvía la dirección IP real del cliente
|
|
* **User-Agent**: Reenvía el agente de usuario
|
|
|
|
<Warning>
|
|
Asegúrate de no reenviar el encabezado `Host`.
|
|
</Warning>
|
|
|
|
<div id="example-nginx-configuration">
|
|
### Ejemplo de configuración de Nginx
|
|
</div>
|
|
|
|
```nginx
|
|
server {
|
|
listen 80;
|
|
server_name <your-domain>.com;
|
|
|
|
# Rutas de verificación de Vercel
|
|
location ~ ^/\.well-known/vercel/ {
|
|
proxy_pass https://<your-subdomain>.mintlify.site;
|
|
proxy_set_header Origin <your-subdomain>.mintlify.site;
|
|
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;
|
|
proxy_set_header User-Agent $http_user_agent;
|
|
|
|
add_header Cache-Control "no-cache, no-store, must-revalidate";
|
|
}
|
|
|
|
# Rutas de habilidades de IA
|
|
location ^~ /.well-known/skills/ {
|
|
proxy_pass https://<your-subdomain>.mintlify.site/docs;
|
|
proxy_set_header Origin <your-subdomain>.mintlify.site;
|
|
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;
|
|
proxy_set_header User-Agent $http_user_agent;
|
|
|
|
add_header Cache-Control "no-cache, no-store, must-revalidate";
|
|
}
|
|
|
|
# Agent-skills discovery paths
|
|
location ^~ /.well-known/agent-skills/ {
|
|
proxy_pass https://<your-subdomain>.mintlify.site/docs;
|
|
proxy_set_header Origin <your-subdomain>.mintlify.site;
|
|
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;
|
|
proxy_set_header User-Agent $http_user_agent;
|
|
|
|
add_header Cache-Control "no-cache, no-store, must-revalidate";
|
|
}
|
|
|
|
# Manifiesto de habilidad (opcional)
|
|
location = /skill.md {
|
|
proxy_pass https://<your-subdomain>.mintlify.site/docs;
|
|
proxy_set_header Origin <your-subdomain>.mintlify.site;
|
|
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;
|
|
proxy_set_header User-Agent $http_user_agent;
|
|
|
|
add_header Cache-Control "no-cache, no-store, must-revalidate";
|
|
}
|
|
|
|
# Archivos de índice LLM (opcional)
|
|
location = /llms.txt {
|
|
proxy_pass https://<your-subdomain>.mintlify.site/docs;
|
|
proxy_set_header Origin <your-subdomain>.mintlify.site;
|
|
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;
|
|
proxy_set_header User-Agent $http_user_agent;
|
|
|
|
add_header Cache-Control "no-cache, no-store, must-revalidate";
|
|
}
|
|
|
|
location = /llms-full.txt {
|
|
proxy_pass https://<your-subdomain>.mintlify.site/docs;
|
|
proxy_set_header Origin <your-subdomain>.mintlify.site;
|
|
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;
|
|
proxy_set_header User-Agent $http_user_agent;
|
|
|
|
add_header Cache-Control "no-cache, no-store, must-revalidate";
|
|
}
|
|
|
|
# Raíz de la documentación
|
|
location = /docs {
|
|
proxy_pass https://<your-subdomain>.mintlify.site/docs;
|
|
proxy_set_header Origin <your-subdomain>.mintlify.site;
|
|
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;
|
|
proxy_set_header User-Agent $http_user_agent;
|
|
|
|
add_header Cache-Control "no-cache, no-store, must-revalidate";
|
|
}
|
|
|
|
# Todas las rutas de la documentación
|
|
location /docs/ {
|
|
proxy_pass https://<your-subdomain>.mintlify.site/docs/;
|
|
proxy_set_header Origin <your-subdomain>.mintlify.site;
|
|
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;
|
|
proxy_set_header User-Agent $http_user_agent;
|
|
|
|
add_header Cache-Control "no-cache, no-store, must-revalidate";
|
|
}
|
|
}
|
|
```
|
|
|
|
|
|
<div id="custom-subpath">
|
|
## Subruta personalizada
|
|
</div>
|
|
|
|
<Note>
|
|
Las configuraciones de proxy inverso para subrutas personalizadas solo están disponibles en los [planes Enterprise](https://mintlify.com/pricing?ref=reverse-proxy).
|
|
</Note>
|
|
|
|
Cuando necesites una subruta distinta de `/docs` (como `/help` o `/resources`), utiliza la siguiente configuración de enrutamiento.
|
|
|
|
Encamina estas rutas a tu subdomain de Mintlify con las políticas de caché especificadas:
|
|
|
|
| Ruta | Destino | Caché |
|
|
| --------------------------------- | ------------------------------- | ---------------- |
|
|
| `/.well-known/vercel/*` | `<your-subdomain>.mintlify.site` | Sin caché |
|
|
| `/.well-known/skills/*` | `<your-subdomain>.mintlify.site` | Sin caché |
|
|
| `/.well-known/agent-skills/*` | `<your-subdomain>.mintlify.site` | Sin caché |
|
|
| `/skill.md` | `<your-subdomain>.mintlify.site` | Sin caché |
|
|
| `/llms.txt` | `<your-subdomain>.mintlify.site` | Sin caché |
|
|
| `/llms-full.txt` | `<your-subdomain>.mintlify.site` | Sin caché |
|
|
| `/mintlify-assets/_next/static/*` | `<your-subdomain>.mintlify.site` | Caché habilitada |
|
|
| `/_mintlify/*` | `<your-subdomain>.mintlify.site` | Sin caché |
|
|
| `/*` | `<your-subdomain>.mintlify.site` | Sin caché |
|
|
| `/` | `<your-subdomain>.mintlify.site` | Sin caché |
|
|
|
|
<Note>
|
|
Mintlify sirve `llms.txt`, `llms-full.txt` y `skill.md` en la ruta raíz. Si tu documentación se encuentra en una subruta (como `/help`), también puedes servir estos archivos desde esa subruta (por ejemplo, `/help/llms.txt`). Para ello, agrega bloques location que reescriban la subruta a la ruta raíz. Consulta el ejemplo de nginx a continuación para ambos patrones.
|
|
</Note>
|
|
|
|
<div id="required-header-configuration">
|
|
### Configuración obligatoria de encabezados
|
|
</div>
|
|
|
|
Configura tu proxy inverso con estos requisitos de encabezados:
|
|
|
|
- **Origin**: Contiene el subdomain de destino `<your-subdomain>.mintlify.site`
|
|
- **X-Forwarded-For**: Conserva la información de la IP del cliente
|
|
- **X-Forwarded-Proto**: Conserva el protocolo original (HTTP/HTTPS)
|
|
- **X-Real-IP**: Reenvía la dirección IP real del cliente
|
|
- **User-Agent**: Reenvía el agente de usuario
|
|
|
|
<Warning>
|
|
Asegúrate de no reenviar el encabezado `Host`
|
|
</Warning>
|
|
|
|
<div id="example-nginx-configuration">
|
|
### Ejemplo de configuración de Nginx
|
|
</div>
|
|
|
|
```nginx
|
|
server {
|
|
listen 80;
|
|
server_name <your-domain>.com;
|
|
|
|
# Vercel verification paths
|
|
location ~ ^/\.well-known/vercel/ {
|
|
proxy_pass https://<your-subdomain>.mintlify.site;
|
|
proxy_set_header Origin <your-subdomain>.mintlify.site;
|
|
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;
|
|
proxy_set_header User-Agent $http_user_agent;
|
|
|
|
# Deshabilitar caché para rutas de verificación
|
|
add_header Cache-Control "no-cache, no-store, must-revalidate";
|
|
}
|
|
|
|
# AI skills paths
|
|
location ^~ /.well-known/skills/ {
|
|
proxy_pass https://<your-subdomain>.mintlify.site;
|
|
proxy_set_header Origin <your-subdomain>.mintlify.site;
|
|
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;
|
|
proxy_set_header User-Agent $http_user_agent;
|
|
|
|
# Deshabilitar caché para rutas de verificación
|
|
add_header Cache-Control "no-cache, no-store, must-revalidate";
|
|
}
|
|
|
|
# Agent-skills discovery paths
|
|
location ^~ /.well-known/agent-skills/ {
|
|
proxy_pass https://<your-subdomain>.mintlify.site;
|
|
proxy_set_header Origin <your-subdomain>.mintlify.site;
|
|
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;
|
|
proxy_set_header User-Agent $http_user_agent;
|
|
|
|
# Deshabilitar caché para rutas agent-skills
|
|
add_header Cache-Control "no-cache, no-store, must-revalidate";
|
|
}
|
|
|
|
# Skill manifest
|
|
location = /skill.md {
|
|
proxy_pass https://<your-subdomain>.mintlify.site;
|
|
proxy_set_header Origin <your-subdomain>.mintlify.site;
|
|
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;
|
|
proxy_set_header User-Agent $http_user_agent;
|
|
|
|
# Disable caching for skill manifest
|
|
add_header Cache-Control "no-cache, no-store, must-revalidate";
|
|
}
|
|
|
|
# Archivos de índice LLM
|
|
location = /llms.txt {
|
|
proxy_pass https://<your-subdomain>.mintlify.site;
|
|
proxy_set_header Origin <your-subdomain>.mintlify.site;
|
|
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;
|
|
proxy_set_header User-Agent $http_user_agent;
|
|
|
|
add_header Cache-Control "no-cache, no-store, must-revalidate";
|
|
}
|
|
|
|
location = /llms-full.txt {
|
|
proxy_pass https://<your-subdomain>.mintlify.site;
|
|
proxy_set_header Origin <your-subdomain>.mintlify.site;
|
|
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;
|
|
proxy_set_header User-Agent $http_user_agent;
|
|
|
|
add_header Cache-Control "no-cache, no-store, must-revalidate";
|
|
}
|
|
|
|
# Opcional: Servir archivos de IA en tu subruta con reescritura de rutas.
|
|
# Reemplaza "/help" con tu subruta. Estos bloques reescriben la
|
|
# subruta para que Mintlify reciba la ruta raíz que espera.
|
|
#
|
|
# location = /help/llms.txt {
|
|
# proxy_pass https://<your-subdomain>.mintlify.site/llms.txt;
|
|
# proxy_set_header Origin <your-subdomain>.mintlify.site;
|
|
# 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;
|
|
# proxy_set_header User-Agent $http_user_agent;
|
|
# add_header Cache-Control "no-cache, no-store, must-revalidate";
|
|
# }
|
|
#
|
|
# location = /help/llms-full.txt {
|
|
# proxy_pass https://<your-subdomain>.mintlify.site/llms-full.txt;
|
|
# proxy_set_header Origin <your-subdomain>.mintlify.site;
|
|
# 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;
|
|
# proxy_set_header User-Agent $http_user_agent;
|
|
# add_header Cache-Control "no-cache, no-store, must-revalidate";
|
|
# }
|
|
#
|
|
# location = /help/skill.md {
|
|
# proxy_pass https://<your-subdomain>.mintlify.site/skill.md;
|
|
# proxy_set_header Origin <your-subdomain>.mintlify.site;
|
|
# 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;
|
|
# proxy_set_header User-Agent $http_user_agent;
|
|
# add_header Cache-Control "no-cache, no-store, must-revalidate";
|
|
# }
|
|
|
|
# Static assets with caching
|
|
location ~ ^/mintlify-assets/_next/static/ {
|
|
proxy_pass https://<your-subdomain>.mintlify.site;
|
|
proxy_set_header Origin <your-subdomain>.mintlify.site;
|
|
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;
|
|
proxy_set_header User-Agent $http_user_agent;
|
|
|
|
# Enable caching for static assets
|
|
add_header Cache-Control "public, max-age=86400";
|
|
}
|
|
|
|
# Mintlify-specific paths
|
|
location ~ ^/_mintlify/ {
|
|
proxy_pass https://<your-subdomain>.mintlify.site;
|
|
proxy_set_header Origin <your-subdomain>.mintlify.site;
|
|
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;
|
|
proxy_set_header User-Agent $http_user_agent;
|
|
|
|
# Disable caching for Mintlify paths
|
|
add_header Cache-Control "no-cache, no-store, must-revalidate";
|
|
}
|
|
|
|
# Root path
|
|
location = / {
|
|
proxy_pass https://<your-subdomain>.mintlify.site;
|
|
proxy_set_header Origin <your-subdomain>.mintlify.site;
|
|
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;
|
|
proxy_set_header User-Agent $http_user_agent;
|
|
|
|
# Disable caching for dynamic content
|
|
add_header Cache-Control "no-cache, no-store, must-revalidate";
|
|
}
|
|
|
|
# All other documentation paths
|
|
location / {
|
|
proxy_pass https://<your-subdomain>.mintlify.site;
|
|
proxy_set_header Origin <your-subdomain>.mintlify.site;
|
|
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;
|
|
proxy_set_header User-Agent $http_user_agent;
|
|
|
|
# Disable caching for dynamic content
|
|
add_header Cache-Control "no-cache, no-store, must-revalidate";
|
|
}
|
|
}
|
|
```
|
|
|
|
|
|
<div id="troubleshooting">
|
|
## Resolución de problemas
|
|
</div>
|
|
|
|
<div id="changes-not-appearing">
|
|
### Los cambios no aparecen
|
|
</div>
|
|
|
|
**Síntomas**: Publicas actualizaciones de la documentación, pero los cambios no aparecen en tu sitio.
|
|
|
|
**Causa**: Tu proxy inverso apunta a un nombre de host obsoleto.
|
|
|
|
**Solución**: Actualiza la configuración de tu proxy inverso para que apunte a `<your-subdomain>.mintlify.site`.
|
|
|
|
<div id="404-error">
|
|
### Error 404
|
|
</div>
|
|
|
|
**Síntomas**: La documentación carga, pero las funciones no se ejecutan. Las llamadas a la API fallan.
|
|
|
|
**Causa**: El proxy inverso reenvía el encabezado `Host` o falta el encabezado `Origin`.
|
|
|
|
**Solución**:
|
|
|
|
- Elimina el reenvío del encabezado `Host`
|
|
- Configura el encabezado `Origin` en tu subdominio de Mintlify (`<your-subdomain>.mintlify.site`)
|
|
|
|
<div id="performance-issues">
|
|
### Problemas de rendimiento
|
|
</div>
|
|
|
|
**Síntomas**: Cargas de página lentas y desplazamientos de diseño.
|
|
|
|
**Causa**: Configuración de caché incorrecta.
|
|
|
|
**Solución**: Para configuraciones personalizadas de subrutas, habilita la caché solo para las rutas `/mintlify-assets/_next/static/*`. La configuración de la subruta `/docs` gestiona la caché automáticamente. |