← Cloudflare for Platforms / cloudflare-for-platforms / workers-for-platforms / configuration
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ů.
(Doporučeno) Zástupná trasa s dispatch Workerem
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í:
- Podporujte subdomény i vanity domény: Zpracujte
customer1.myplatform.com(subdoména) ashop.customer.com(vlastní hostname) se stejnou logikou směrování. - Vyhněte se limitům tras: Namísto vytváření jednotlivých tras pro každou doménu, což vás může přivést až na Limity tras, můžete logiku směrování řešit v kódu a přesměrovávat přes proxy miliony domén na jednotlivé Workery.
- Programově ovládejte logiku směrování: Napište vlastní kód pro směrování požadavků podle hostitelského názvu, vlastní metadata, cestu nebo jakékoli jiné vlastnosti.
Pokud chcete některé hostitelské názvy vyloučit ze směrování na dispatch Worker, máte dvě možnosti:
- Přidejte trasy bez specifikace Workeru, abyste určité hostitelské názvy nebo cesty vyloučili ze zpracování dispatcher Workerem (například pro
saas.com,api.saas.com, atd.) - Použijte vyhrazená doména (například
customers.saas.com) pro správu vlastních názvů hostitele a dispatch workeru, aby zbytek provozu pro danou doménu zůstal oddělený.
Nastavení
Chcete-li nastavit směrování hostitelských názvů pomocí zástupné trasy:
- Nakonfigurujte vlastní hostname: Nastavte svou doménu a vlastní hostname pomocí Cloudflare for SaaS
- 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). - 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. - 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. - 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:
- Vytvořte zástupný DNS záznam s oranžovým mrakem:
*.saas.comkterá směřuje na origin. Pokud je originem samotný Worker, můžete použít fiktivní hodnotu DNS (napříkladA 192.0.2.0). - Nastavte zástupnou trasu:
*.saas.com/*směřující na váš dispatch Worker - 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í:
- Pokud směrujete na základě cíle CNAME (
saas.com), musí mít DNS záznam vlastního názvu hostitele oranžový cloud, aby byl Worker vyvolán. - Pokud směrujete na základě vlastního hostitelského názvu (
mystore.com), musí mít záznam klienta šedý cloud, aby byl Worker vyvolá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 | ❌ | ✅ |