INTEGRITY Dokumentace

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 skládat na sebe stejně jako jakékoli externí závislosti

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:

  1. aktivní zóna Cloudflare.
  2. 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:

  1. V dashboardu Cloudflare přejděte na Workers & Pages stránce.

    Přejděte na Workers & Pages ↗
  2. V Přehled, vyberte svého Workera.

  3. Přejděte na Nastavení > Domains & Routes > Přidat > Custom Domain.

  4. Zadejte doménu, kterou chcete nakonfigurovat pro svůj Worker.

  5. 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 = true

Chcete-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 = true

Komunikace 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í.

worker-a
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.

Custom Domains se řídí standardní logikou řazení a porovnávání DNS

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:

  1. Custom Domain pro api.example.com odkazuje na váš api-worker Worker.
  2. Route přidaná do api.example.com/auth odkazuje na váš auth-worker Worker.
  3. Požadavek na api.example.com/auth spustí váš auth-worker Worker.
  4. Použití fetch(request) v rámci auth-worker Worker vyvolá api-worker Worker, jako by šlo o běžný aplikační server.
auth-worker
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í.

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/*:

  1. V dashboardu Cloudflare přejděte na DNS záznamy stránku vaší domény.

    Přejděte na Záznamy ↗
  2. Odstraňte záznam CNAME pro example.com.

  3. Přejděte na Domovská stránka účtu > Workers & Pages.

  4. V Přehled, vyberte svého Workera > Nastavení > Domains & Routes.

  5. Vyberte Přidat > Vlastní doména a přidejte example.com.

  6. 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:

  1. V dashboardu Cloudflare přejděte na DNS záznamy stránku vaší domény.

    Přejděte na Záznamy ↗
  2. Odstraňte záznam CNAME pro example.com.

  3. Přidejte následující do souboru Wrangler:

    {
      "routes": [
        {
          "pattern": "example.com",
          "custom_domain": true
        }
      ]
    }
    [[routes]]
    pattern = "example.com"
    custom_domain = true
  4. Spustit npx wrangler deploy pro vytvoření vlastní domény (Custom Domain), na které bude váš Worker běžet.