カスタムドメイン
カスタムドメインを使用すると、DNS設定を変更したり、証明書管理を行ったりすることなく、Workerをドメインまたはサブドメインに接続できます。Workerのカスタムドメインを設定すると、Cloudflareがあなたの代わりにDNSレコードを作成し、必要な証明書を発行します。作成されたDNSレコードは、直接あなたのWorkerを指します。ルートとは異なり、カスタムドメインはドメインまたはサブドメインのすべてのパスをあなたのWorkerにポイントします。
カスタムドメインは、WorkerがオリジンであるCloudflareゾーン内のドメインまたはサブドメイン(例:example.comやshop.example.com)へのルートです。
カスタムドメインは、Workerをインターネットに接続したいが、常に通信したいアプリケーションサーバーがない場合に推奨されます。外部依存関係がある場合は、ターゲットURIを持つRequestオブジェクトを作成し、fetch()を使用してアクセスできます。
カスタムドメインは重ねて使用できます。たとえば、app.example.comにWorker Aが接続され、api.example.comにWorker Bが接続されている場合、Worker Aはfetch()をapi.example.comに呼び出し、Worker Bを起動できます。

カスタムドメインは、ルートとは異なり、同じゾーン内でfetch()を介して呼び出すこともできます。
カスタムドメインを追加するには、次の条件を満たす必要があります:
- アクティブなCloudflareゾーン。
- 呼び出すWorker。
カスタムドメインは、Cloudflareダッシュボード、Wrangler、またはAPIを介してWorkerに接続できます。
ダッシュボードでカスタムドメインを設定するには:
- Cloudflareダッシュボード ↗にログインし、アカウントを選択します。
- Workers & Pagesを選択し、概要でWorkerを選択します。
- 設定 > トリガー > カスタムドメイン > カスタムドメインの追加に進みます。
- Workerのために設定したいドメインを入力します。
- カスタムドメインの追加を選択します。
ドメインまたはサブドメインを追加すると、Cloudflareが新しいDNSレコードを作成します。複数のカスタムドメインを追加できます。
wrangler.tomlでカスタムドメインを設定するには、routesの各パターンにcustom_domain=trueオプションを追加します。たとえば、カスタムドメインを設定するには:
routes = [ { pattern = "shop.example.com", custom_domain = true }]複数のカスタムドメインを設定するには:
routes = [ { pattern = "shop.example.com", custom_domain = true }, { pattern = "shop-two.example.com", custom_domain = true }]同じゾーン内で、Workerがルート上で実行されている別のWorkerと通信する唯一の方法は、サービスバインディングを介することです。
同じゾーン内で、Workerがルートではなくカスタムドメインで実行されているターゲットWorkerと通信しようとする場合、制限は解除されます。同じゾーン内で1つのWorkerから別のWorkerに送信されたfetchリクエストは、サービスバインディングなしで成功します。
たとえば、次のシナリオを考えてみましょう。両方のWorkerがexample.com Cloudflareゾーンで実行されています:
worker-aがworker-bにfetchリクエストを送信すると、リクエストは失敗します。同じゾーン内のfetchリクエストに対する制限のためです。worker-aは、このリクエストを解決するためにworker-bへのサービスバインディングを持っている必要があります。
export default { fetch(request) { // これは失敗します return fetch("https://shop.example.com") }}しかし、worker-bがカスタムドメインshop.example.comで実行されるように設定されている場合、fetchリクエストは成功します。
カスタムドメインはワイルドカードDNSレコードをサポートしていません。受信リクエストは、カスタムドメインが登録されているドメインまたはサブドメインと正確に一致する必要があります。URLの他の部分(パス、クエリパラメータ)は、このマッチングロジックを実行する際には考慮されません。たとえば、api.example.comにカスタムドメインを作成し、api-gateway Workerに接続した場合、api.example.com/loginまたはapi.example.com/userへのリクエストは、同じapi-gateway Workerを呼び出します。

カスタムドメインで実行されているWorkerはオリジンとして扱われます。カスタムドメインの前に実行されているルート上のWorkerは、受信Requestオブジェクトを使用してfetch(request)を発行することで、カスタムドメインに登録されたWorkerをオプションで呼び出すことができます。つまり、リクエストがカスタムドメインWorkerに到達する前に実行されるWorkerを設定できます。言い換えれば、同じリクエスト内で2つのWorkerを連鎖させることができます。
たとえば、次のワークフローを考えてみましょう:
api.example.comのカスタムドメインがapi-workerWorkerを指します。api.example.com/authに追加されたルートがauth-workerWorkerを指します。api.example.com/authへのリクエストは、auth-workerWorkerをトリガーします。auth-workerWorker内でfetch(request)を使用すると、api-workerWorkerが通常のアプリケーションサーバーのように呼び出されます。
export default { fetch(request) { const url = new URL(request.url) if(url.searchParams.get("auth") !== "SECRET_TOKEN") { return new Response(null, { status: 401 }) } else { // これは`api-worker`を呼び出します return fetch(request) } }}カスタムドメインを作成すると、ターゲットホスト名のためにターゲットゾーンに高度な証明書が生成されます。
これらの証明書はデフォルト設定で生成されます。これらの設定を上書きするには、生成された証明書を削除し、Cloudflareダッシュボードで独自の証明書を作成します。手順については、高度な証明書の管理を参照してください。
現在、/*を使用してルートでWorkerを呼び出しており、100::などを指すCNAMEレコードがある場合、カスタムドメインは推奨される代替手段です。
ルートexample.com/*を移行するには:
- Cloudflareダッシュボード ↗にログインし、アカウントを選択します。
- DNSに移動し、
example.comのCNAMEレコードを削除します。 - アカウントホーム > Workers & Pagesに移動します。
- 概要でWorkerを選択 > トリガーを選択します。
- カスタムドメインの追加を選択し、
example.comを追加します。 - Worker > トリガー > ルートにあるルート
example.com/*を削除します。
wrangler.tomlでルートexample.com/*を移行するには:
- Cloudflareダッシュボード ↗にログインし、アカウントを選択します。
- DNSに移動し、
example.comのCNAMEレコードを削除します。 wrangler.tomlファイルに次の内容を追加します:
routes = [ { pattern = "example.com", custom_domain = true }]npx wrangler deployを実行して、Workerが実行されるカスタムドメインを作成します。