カスタムドメインは、デフォルトの <PUBLIC_ENDPOINT_ID>.search.ai.cloudflare.com ではなく、所有するホスト名(search.example.com など)から 公開エンドポイント を提供します。
エンドポイントとリクエスト形式は変わりません。変わるのはホスト名だけです。
https://search.example.com/search
https://search.example.com/chat/completions
https://search.example.com/mcpカスタムドメインは、Cloudflare Access でアクセスを制限する ための基盤でもあります。ユーザーは、インデックス済みコンテンツをクエリする前に、IdP で認証できます。
- 公開エンドポイントは、インスタンスまたは名前空間ですでに有効である必要があります。有効な公開エンドポイントがないインスタンスにカスタムドメインを追加すると、エラー
7093が返ります。 - ホスト名は、同じ Cloudflare アカウントに追加 され、アクティブな状態のゾーンに属している必要があります。別アカウントのホスト名ではエラー
7090が返ります。 - 各インスタンスまたは名前空間は、カスタムドメインを 1 つまで使えます。
- ホスト名は、同時に 1 つの公開エンドポイントにだけ付けられます。ホスト名を再利用するとエラー
7091が返ります。 - ホスト名は、最大 253 文字の完全修飾ドメイン名である必要があります(例:
search.example.com)。ワイルドカードは使えません。ホスト名は小文字で保存されます。
インスタンスの作成または更新時に、public_endpoint_params.custom_domains を設定します。
curl -X PUT "https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/ai-search/namespaces/default/instances/<INSTANCE_NAME>" \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"public_endpoint_params": {
"enabled": true,
"custom_domains": ["search.example.com"]
}
}'同じフィールドは名前空間でも使えます。名前空間の公開エンドポイント を参照してください。
Cloudflare はホスト名の証明書を発行し、ドメイン所有権の検証を開始します。
カスタムドメインを所有するゾーンに、プロキシ済み の CNAME レコードを作成します。ターゲットは公開エンドポイントのデフォルトホスト名 <PUBLIC_ENDPOINT_ID>.search.ai.cloudflare.com です。
| 種類 | 名前 | ターゲット | プロキシ状態 |
|---|---|---|---|
CNAME |
search |
<PUBLIC_ENDPOINT_ID>.search.ai.cloudflare.com |
プロキシ済み |
curl -X POST "https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/dns_records" \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"type": "CNAME",
"name": "search",
"content": "<PUBLIC_ENDPOINT_ID>.search.ai.cloudflare.com",
"proxied": true
}'ドメイン所有権の検証が完了すると、カスタムドメインがトラフィックの提供を開始します。
デフォルトでは、公開エンドポイントはカスタムドメインとデフォルトの <PUBLIC_ENDPOINT_ID>.search.ai.cloudflare.com ホスト名の両方で応答します。カスタムドメインだけを提供するには、default_domain_enabled を false にします。デフォルトホスト名は、エラー 60018 の 404 を返します。
curl -X PUT "https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/ai-search/namespaces/default/instances/<INSTANCE_NAME>" \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"public_endpoint_params": {
"enabled": true,
"custom_domains": ["search.example.com"],
"default_domain_enabled": false
}
}'カスタムドメインの前にセキュリティ制御を置く場合は、これをオフにします。それらの制御は自ゾーンで動くため、デフォルトホスト名に届くトラフィックはそれらを迂回します。Cloudflare Access を参照してください。
次の 3 つのルールがあります。
- カスタムドメインが 1 つもない状態でデフォルトホスト名をオフにはできません。リクエストはエラー
7096を返します。 public_endpoint_paramsは全体が置き換わるため、あとの更新でdefault_domain_enabledを省略するとtrueに戻り、デフォルトホスト名に再び到達できます。CNAMEレコードはデフォルトホスト名を指したままにします。AI Search はCNAMEターゲットではなく、クライアントが要求したホスト名でルーティングするため、デフォルトホスト名をオフにしたあともレコードは機能します。
custom_domains を空の配列として送ります。Cloudflare は証明書を削除し、そのホスト名のルーティングを止めます。
curl -X PUT "https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/ai-search/namespaces/default/instances/<INSTANCE_NAME>" \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"public_endpoint_params": {
"enabled": true,
"custom_domains": []
}
}'default_domain_enabled が false のとき、同じリクエストで最後のカスタムドメインを削除するとエラー 7096 が返ります。先にデフォルトホスト名を再有効化し、そのあとドメインを削除します。
インスタンスまたは名前空間を削除すると、そのカスタムドメインと証明書も削除されます。
| コード | メッセージ | 原因 |
|---|---|---|
7090 |
custom_domain_not_a_verified_zone_on_this_account |
ホスト名が、このアカウントのアクティブなゾーンに属していません。 |
7091 |
custom_domain_already_in_use |
ホスト名は、すでに別の公開エンドポイントに付いています。 |
7092 |
custom_domain_provisioning_failed |
証明書のプロビジョニングに失敗しました。リクエストを再試行します。 |
7093 |
custom_domains_require_an_active_public_endpoint |
インスタンスまたは名前空間に、有効な公開エンドポイントがありません。 |
7096 |
disabling_the_default_domain_requires_at_least_one_custom_domain |
カスタムドメインがない状態で default_domain_enabled が false に設定されました。 |
60018 |
default domain disabled |
デフォルトホスト名がオフのときに、そのホスト名へリクエストが届きました。 |