← Cloudflare Workers / workers / configuration / routing
Custom Domains
Kontext
Custom Domains umožňují připojit váš Worker k doméně nebo subdoméně, aniž byste museli měnit nastavení DNS nebo spravovat certifikáty. Po nastavení Custom Domain pro váš Worker Cloudflare vytvoří záznamy DNS a vystaví za vás potřebné certifikáty. Vytvořené záznamy DNS budou směřovat přímo na váš Worker. Na rozdíl od Trasy, Custom Domains směrují všechny cesty domény nebo subdomény na váš Worker.
Custom Domains jsou trasy k doméně nebo subdoméně (například example.com nebo shop.example.com) v rámci zóny Cloudflare, kde je Worker origin serverem.
Custom Domains se doporučují, pokud chcete připojit svůj Worker k internetu a nemáte aplikační server, se kterým chcete komunikovat trvale. Pokud externí závislosti máte, můžete vytvořit Request objekt s cílovým URI a použijte fetch() abyste se nám ozvali.
Custom Domains lze skládat na sebe. Pokud máte například Worker A připojený k app.example.com a Worker B připojený k api.example.com, Worker A může volat fetch() na api.example.com a vyvolejte Worker B.
Custom Domains lze také volat v rámci stejné zóny pomocí fetch(), na rozdíl od Routes.
Přidání vlastní domény
Chcete-li přidat Custom Domain, musíte mít:
- aktivní zóna Cloudflare.
- Worker, který se má vyvolat.
Custom Domains lze k vašemu Workeru připojit prostřednictvím Cloudflare dashboardu, Wrangler nebo API.
Nastavit Custom Domain v dashboardu
Chcete-li v dashboardu nastavit Custom Domain:
-
V dashboardu Cloudflare přejděte na Workers & Pages stránce.
Přejděte na Workers & Pages ↗ -
V Přehled, vyberte svého Workera.
-
Přejděte na Nastavení > Domains & Routes > Přidat > Custom Domain.
-
Zadejte doménu, kterou chcete nakonfigurovat pro svůj Worker.
-
Vyberte Add Custom Domain.
Jakmile přidáte doménu nebo subdoménu, Cloudflare za vás vytvoří nový záznam DNS. Můžete přidat více Custom Domains.
Vyžadovat přihlášení pro Custom Domain
Chcete-li vyžadovat, aby se návštěvníci před přístupem k vlastní doméně (Custom Domain) přihlásili, použijte Cloudflare Access.
Custom Domain můžete chránit pomocí Access založeného na hostname, nebo chránit přímo Worker napříč jeho Routes, Custom Domains, workers.dev hostname a náhledy. Více informací najdete v Cloudflare Access.
Nastavit Custom Domain v konfiguračním souboru Wrangler
Chcete-li nakonfigurovat Custom Domain ve svém Konfigurační soubor Wrangler, přidejte custom_domain=true možnost u každého vzoru v routes. Chcete-li například nakonfigurovat Custom Domain:
{
"routes": [
{
"pattern": "shop.example.com",
"custom_domain": true
}
]
}[[routes]]
pattern = "shop.example.com"
custom_domain = trueChcete-li nakonfigurovat více Custom Domains:
{
"routes": [
{
"pattern": "shop.example.com",
"custom_domain": true
},
{
"pattern": "shop-two.example.com",
"custom_domain": true
}
]
}[[routes]]
pattern = "shop.example.com"
custom_domain = true
[[routes]]
pattern = "shop-two.example.com"
custom_domain = trueKomunikace mezi Workery
Ve stejné zóně je jediným způsobem, jak může Worker komunikovat s jiným Workerem běžícím na trasa, nebo na workers.dev subdoména, je přes service bindings.
Pokud se Worker ve stejné zóně pokouší komunikovat s cílovým Workerem běžícím na Custom Domain namísto route, omezení se neuplatní. Požadavky fetch odeslané ve stejné zóně z jednoho Workeru na jiný Worker běžící na Custom Domain uspějí i bez service bindingu.
Uvažujme například následující scénář, kdy oba Workery běží na example.com zóna Cloudflare:
Pokud worker-a odešle fetch požadavek na worker-b, požadavek selže kvůli omezení pro fetch požadavky v rámci stejné zóny. worker-a musí mít vazbu na službu k worker-b než se tento požadavek vyřídí.
export default {
fetch(request) {
// This will fail
return fetch("https://shop.example.com");
},
};Pokud však worker-b byl místo toho nastaven, aby běžel na Custom Domain shop.example.com, požadavek fetch by byl úspěšný.
Chování při porovnávání požadavků
Custom Domains nepodporují zástupné záznamy DNS. Příchozí požadavek musí přesně odpovídat doméně nebo subdoméně, na kterou je vaše Custom Domain zaregistrována. Ostatní části adresy URL (cesta, parametry dotazu) se při tomto porovnávání neberou v úvahu. Pokud například vytvoříte Custom Domain na api.example.com připojený k vašemu api-gateway Worker, požadavek na kterýkoli z api.example.com/login nebo api.example.com/user by vyvolalo stejný api-gateway Worker.
Interakce s Routes
Worker běžící na Custom Domain je považován za origin. Workery běžící na routách před vaší Custom Domain mohou volitelně volat Worker zaregistrovaný na vaší Custom Domain vydáním fetch(request) s příchozím Request objekt. To znamená, že můžete nastavit Workery tak, aby se spustily dříve, než požadavek dorazí k vašemu Custom Domain Workeru. Jinými slovy můžete v rámci jednoho požadavku zřetězit dva Workery za sebou.
Uvažujme například následující workflow:
- Custom Domain pro
api.example.comodkazuje na vášapi-workerWorker. - Route přidaná do
api.example.com/authodkazuje na vášauth-workerWorker. - Požadavek na
api.example.com/authspustí vášauth-workerWorker. - Použití
fetch(request)v rámciauth-workerWorker vyvoláapi-workerWorker, jako by šlo o běžný aplikační server.
export default {
fetch(request) {
const url = new URL(request.url);
if (url.searchParams.get("auth") !== "SECRET_TOKEN") {
return new Response(null, { status: 401 });
} else {
// This will invoke `api-worker`
return fetch(request);
}
},
};Certifikáty
Vytvoření Custom Domain zároveň vygeneruje Advanced Certificate ve vaší cílové zóně pro váš cílový hostname.
Tyto certifikáty se generují s výchozím nastavením. Chcete-li toto nastavení přepsat, smažte vygenerovaný certifikát a v Cloudflare dashboardu vytvořte vlastní. Více informací najdete v Správa pokročilých certifikátů s pokyny.
Přesměrování mezi www a kořenovou doménou
Protože Custom Domains vyžadují přesnou shodu názvu hostitele, Worker připojený k example.com nebude přijímat požadavky odeslané na www.example.com, a naopak. Aby fungovaly obě varianty vaší domény, nastavte pravidlo přesměrování:
Také potřebujete proxovaný DNS záznam pro hostitele, na kterého přesměrováváte od, aby Cloudflare mohl použít pravidlo přesměrování.
- Pro www na root: Přidejte proxovaný DNS
Azáznam prowwwsměřující na192.0.2.0, nebo proxovanéAAAAzáznam směřující na100:: - Pro root na www: Přidejte proxovaný DNS
Azáznam pro vaši kořenovou doménu směřující na192.0.2.0, nebo proxovanéAAAAzáznam směřující na100::
Migrace z Routes
Pokud Worker aktuálně voláte pomocí trasa hodnotou /*, a máte záznam CNAME směřující na 100:: nebo podobné, doporučenou náhradou je Custom Domain.
Migrace z Routes přes dashboard
Chcete-li migrovat trasu example.com/*:
-
V dashboardu Cloudflare přejděte na DNS záznamy stránku vaší domény.
Přejděte na Záznamy ↗ -
Odstraňte záznam CNAME pro
example.com. -
Přejděte na Domovská stránka účtu > Workers & Pages.
-
V Přehled, vyberte svého Workera > Nastavení > Domains & Routes.
-
Vyberte Přidat > Vlastní doména a přidejte
example.com. -
Odstraňte trasu
example.com/*umístěné ve vašem Workeru > Nastavení > Domains & Routes.
Migrace z Routes pomocí Wrangleru
Chcete-li migrovat trasu example.com/* ve vašem Konfigurační soubor Wrangler:
-
V dashboardu Cloudflare přejděte na DNS záznamy stránku vaší domény.
Přejděte na Záznamy ↗ -
Odstraňte záznam CNAME pro
example.com. -
Přidejte následující do souboru Wrangler:
{ "routes": [ { "pattern": "example.com", "custom_domain": true } ] }[[routes]] pattern = "example.com" custom_domain = true -
Spustit
npx wrangler deploypro vytvoření vlastní domény (Custom Domain), na které bude váš Worker běžet.