INTEGRITY Dokumentace

Směrování hostitelských názvů

Můžete použít dynamic dispatch Workers ke směrování milionů vanity domén nebo subdomén na Workers bez nutnosti řešit tradiční limity tras. Tyto hostname mohou být subdomény v rámci vaší spravované domény (např. customer1.saas.com) nebo vanity domény kontrolované vašimi koncovými klienty (např. mystore.com), které lze spravovat prostřednictvím vlastní názvy hostitelů.

Nakonfigurujte zástupnou Trasa (*/*) na vaší SaaS doméně (doméně, kde konfigurujete vlastní názvy hostitele), aby směřoval na váš dynamický dispatch Worker. To vám umožní:

Pokud chcete některé hostitelské názvy vyloučit ze směrování na dispatch Worker, máte dvě možnosti:

Nastavení

Chcete-li nastavit směrování hostitelských názvů pomocí zástupné trasy:

  1. Nakonfigurujte vlastní hostname: Nastavte svou doménu a vlastní hostname pomocí Cloudflare for SaaS
  2. Nastavte záložní origin: Nastavte záložní origin server, právě sem budou směrovány všechny vlastní hostitelské názvy. Pokud je chcete směrovat na samostatné origin servery, můžete použít vlastní origin server. Požadavky se před dosažením originu nejprve směrují přes Worker. Pokud je Worker zároveň originem, umístěte pro záložní origin fiktivní DNS záznam (např. A 192.0.2.0).
  3. Nakonfigurujte DNS: Nasměrujte DNS záznamy (subdomény nebo vlastní hostname) přes Záznam CNAME na doménu SaaS. Pokud vaši zákazníci potřebují proxovat svůj apex hostname (např. example.com) a nemůžete použít CNAME záznamy, podívejte se na Apex Proxying.
  4. Vytvořte zástupnou trasu: Přidejte */* trasu na doméně vaší platformy (např. saas.com) a přiřaďte ji svému dispatch Workeru.
  5. Implementujte logiku dispatche: Do svého dispatch Workeru přidejte logiku, která bude směrovat podle hostname a vyhledávat mapování uložená v Workers KV, nebo použijte vlastní metadata připojené k vlastním názvům hostitelů.

Ukázkový dispatch Worker

export default {
	async fetch(request, env) {
		const hostname = new URL(request.url).hostname;

		// Get custom hostname metadata for routing decisions
		const hostnameData = await env.KV.get(`hostname:${hostname}`, {
			type: "json",
		});

		if (!hostnameData?.workerName) {
			return new Response("Hostname not configured", { status: 404 });
		}

		// Route to the appropriate user Worker
		const userWorker = env.DISPATCHER.get(hostnameData.workerName);
		return await userWorker.fetch(request);
	},
};

Směrování subdomén

Pokud chcete směrovat pouze záznamy subdomén (např. customer1.saas.com), můžete použít konkrétnější trasu (*.saas.com/*) pro směrování požadavků na váš dispatch Worker.

Nastavení

Chcete-li nastavit směrování subdomén:

  1. Vytvořte zástupný DNS záznam s oranžovým mrakem: *.saas.com která směřuje na origin. Pokud je originem samotný Worker, můžete použít fiktivní hodnotu DNS (například A 192.0.2.0).
  2. Nastavte zástupnou trasu: *.saas.com/* směřující na váš dispatch Worker
  3. Přidejte do dispatch Workeru logiku, která bude směrovat požadavky na subdomény na správný Worker.

Ukázkový dispatch Worker pro subdomény

export default {
	async fetch(request, env) {
		const url = new URL(request.url);
		const subdomain = url.hostname.split(".")[0];

		// Route based on subdomain
		if (subdomain && subdomain !== "saas") {
			const userWorker = env.DISPATCHER.get(subdomain);
			return await userWorker.fetch(request);
		}

		return new Response("Invalid subdomain", { status: 400 });
	},
};

Chování O2O

Pokud vaši zákazníci také používají Cloudflare a nasměrují svou vlastní doménu na vaši doménu SaaS přes CNAME (například mystore.com → saas.com), chování směrování Workeru závisí na tom, zda je DNS záznam klienta proxovaný (oranžový cloud) nebo pouze DNS (šedý cloud). Další informace najdete v Nastavení O2O

To může při použití konkrétních tras hostitelského názvu způsobit nekonzistentní chování:

Protože nemusíte mít kontrolu nad nastavením DNS proxy u svého zákazníka, doporučujeme použít */* zástupnou trasu, aby logika směrování vždy fungovala podle očekávání, bez ohledu na to, jak je nakonfigurována DNS.

Volání Workeru napříč konfiguracemi tras a režimy proxy

Tabulka níže ukazuje, kdy se Workery spouštějí v závislosti na vzoru trasy a nastavení DNS proxy zákazníka:

Vzor trasy Vlastní hostname (oranžový mrak) Vlastní hostname (šedý mrak)
*/* (Doporučeno) ✅ ✅
Cílová trasa hostitelského názvu ✅ ❌
Trasa vlastního hostitelského názvu ❌ ✅