Para hospedar sua documentação em um subcaminho personalizado, como yoursite.com/docs
, usando o Cloudflare, você precisará criar e configurar um Cloudflare Worker.
Antes de começar, você precisa de uma conta no Cloudflare e de um nome de domínio (que pode ser gerenciado dentro ou fora do Cloudflare).
Seus arquivos de documentação devem ser organizados no repositório para corresponder à estrutura de subcaminho escolhida. Por exemplo, se você quiser sua documentação em yoursite.com/docs
, crie um diretório docs/
com todos os seus arquivos de documentação.
Configurar um Cloudflare Worker
Crie um Cloudflare Worker seguindo o guia de primeiros passos do Cloudflare Workers, caso ainda não tenha feito isso.
Se o seu provedor de DNS for Cloudflare, não ative o proxy para o registro CNAME.
Se você utilizar o Cloudflare como proxy com implantações na Vercel, é fundamental garantir a configuração correta para evitar conflitos com a verificação de domínio da Vercel e o provisionamento de certificados SSL.
Uma configuração de proxy incorreta pode impedir a Vercel de provisionar certificados SSL do Let’s Encrypt e causar falhas na verificação de domínio.
Lista de permissões de caminhos obrigatória
Seu Cloudflare Worker deve permitir o tráfego para estes caminhos específicos sem bloqueio ou redirecionamento:
/.well-known/acme-challenge/*
- Necessário para a verificação de certificado do Let’s Encrypt
/.well-known/vercel/*
- Necessário para a verificação de domínio da Vercel
Embora o Cloudflare trate automaticamente muitas regras de verificação, a criação de regras personalizadas adicionais pode, inadvertidamente, bloquear esse tráfego crítico.
Certifique-se de que o cabeçalho HOST
seja encaminhado corretamente na configuração do seu Worker. Se os cabeçalhos não forem encaminhados adequadamente, as solicitações de verificação falharão.
No painel do Cloudflare, selecione Edit Code e adicione o script a seguir ao código do seu Worker. Consulte a documentação do Cloudflare para mais informações sobre como editar um Worker.
Substitua “[SUBDOMAIN]” pelo seu subdomínio exclusivo, “[YOUR_DOMAIN]” pela URL base do seu site e “/docs” pelo subcaminho desejado, se for diferente.
addEventListener("fetch", (event) => {
event.respondWith(handleRequest(event.request));
});
async function handleRequest(request) {
try {
const urlObject = new URL(request.url);
// Se a solicitação for para um caminho de verificação do Vercel, permita que ela passe
if (urlObject.pathname.startsWith('/.well-known/')) {
return await fetch(request);
}
// Se a solicitação for para o subdiretório de docs
if (/^\/docs/.test(urlObject.pathname)) {
// Então faça proxy para o Mintlify
const DOCS_URL = "[SUBDOMAIN].mintlify.dev";
const CUSTOM_URL = "[YOUR_DOMAIN]";
let url = new URL(request.url);
url.hostname = DOCS_URL;
let proxyRequest = new Request(url, request);
proxyRequest.headers.set("Host", DOCS_URL);
proxyRequest.headers.set("X-Forwarded-Host", CUSTOM_URL);
proxyRequest.headers.set("X-Forwarded-Proto", "https");
// Se estiver implantando na Vercel, preserve o IP do cliente
proxyRequest.headers.set("CF-Connecting-IP", request.headers.get("CF-Connecting-IP"));
return await fetch(proxyRequest);
}
} catch (error) {
// Se nenhuma ação for aplicada, processe a solicitação normalmente
return await fetch(request);
}
}
Selecione Deploy e aguarde a propagação das alterações.
Após configurar o seu DNS, subdomínios personalizados geralmente ficam disponíveis em poucos minutos. A propagação do DNS às vezes pode levar de 1 a 4 horas e, em casos raros, até 48 horas. Se o seu subdomínio não estiver disponível imediatamente, aguarde antes de tentar solucionar o problema.
Depois que o código for implantado, teste seu Worker para garantir que ele direcione para sua documentação do Mintlify.
- Teste usando a URL de pré-visualização do Worker:
your-worker.your-subdomain.workers.dev/docs
- Verifique se o Worker direciona para sua documentação do Mintlify e para seu site.
Adicionar domínio personalizado
- No seu painel do Cloudflare, navegue até o seu Worker.
- Vá para Settings > Domains & Routes > Add > Custom Domain.
- Adicione seu domínio.
Recomendamos adicionar seu domínio tanto com quanto sem o prefixo www.
.
Consulte Add a custom domain na documentação do Cloudflare para mais informações.
Resolver conflitos de DNS
Se o seu domínio já aponta para outro serviço, você deve remover o registro de DNS existente. Seu Cloudflare Worker deve estar configurado para controlar todo o tráfego do seu domínio.
- Exclua o registro de DNS existente do seu domínio. Consulte Excluir registros de DNS na documentação da Cloudflare para mais informações.
- Retorne ao seu Worker e adicione seu domínio personalizado.
Roteamento personalizado no Webflow
Se você usa o Webflow para hospedar seu site principal e quer servir a documentação da Mintlify em /docs
no mesmo domínio, será necessário configurar roteamento personalizado via Cloudflare Workers para encaminhar (proxy) todo o tráfego que não seja de docs para o seu site principal.
Certifique-se de que seu site principal esteja configurado em uma landing page antes de implantar este Worker, caso contrário os visitantes do seu site principal verão erros.
- No Webflow, configure uma landing page para o seu site principal, como
landing.yoursite.com
. Essa será a página que os visitantes verão ao acessar seu site.
- Implante seu site principal na landing page. Isso garante que seu site principal permaneça acessível enquanto você configura o Worker.
- Para evitar conflitos, atualize quaisquer URLs absolutas no seu site principal para URLs relativas.
- No Cloudflare, selecione Edit Code e adicione o script a seguir no código do seu Worker.
Substitua “[SUBDOMAIN]” pelo seu subdomínio exclusivo, “[YOUR_DOMAIN]” pela URL base do seu site, “[LANDING_DOMAIN]” pela URL da sua landing page e “/docs” pelo subcaminho desejado, se for diferente.
addEventListener("fetch", (event) => {
event.respondWith(handleRequest(event.request));
});
async function handleRequest(request) {
try {
const urlObject = new URL(request.url);
// If the request is to a Vercel verification path, allow it to pass through
<AzureIAASDatabaseConnectionAndSQLString>
return await fetch(request);
}
// If the request is to the docs subdirectory
if (/^\/docs/.test(urlObject.pathname)) {
// Proxy to Mintlify
const DOCS_URL = "[SUBDOMAIN].mintlify.dev";
const CUSTOM_URL = "[YOUR_DOMAIN]";
let url = new URL(request.url);
url.hostname = DOCS_URL;
let proxyRequest = new Request(url, request);
proxyRequest.headers.set("Host", DOCS_URL);
proxyRequest.headers.set("X-Forwarded-Host", CUSTOM_URL);
proxyRequest.headers.set("X-Forwarded-Proto", "https");
// If deploying to Vercel, preserve client IP
proxyRequest.headers.set("CF-Connecting-IP", request.headers.get("CF-Connecting-IP"));
return await fetch(proxyRequest);
}
// Route everything else to main site
const MAIN_SITE_URL = "[LANDING_DOMAIN]";
if (MAIN_SITE_URL && MAIN_SITE_URL !== "[LANDING_DOMAIN]") {
let mainSiteUrl = new URL(request.url);
mainSiteUrl.hostname = MAIN_SITE_URL;
return await fetch(mainSiteUrl, {
method: request.method,
headers: request.headers,
body: request.body
});
}
} catch (error) {
// If no action found, serve the regular request
return await fetch(request);
}
}
- Selecione Deploy e aguarde a propagação das alterações.
Após configurar o seu DNS, subdomínios personalizados geralmente ficam disponíveis em poucos minutos. A propagação do DNS às vezes pode levar de 1 a 4 horas e, em casos raros, até 48 horas. Se o seu subdomínio não estiver disponível imediatamente, aguarde antes de tentar solucionar o problema.