Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

カスタムドメイン

最終更新 Markdown で表示Agent セットアップ

カスタムドメインは、デフォルトの <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 はホスト名の証明書を発行し、ドメイン所有権の検証を開始します。

DNS レコードを作成する

カスタムドメインを所有するゾーンに、プロキシ済み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_enabledfalse にします。デフォルトホスト名は、エラー 60018404 を返します。

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_enabledfalse のとき、同じリクエストで最後のカスタムドメインを削除するとエラー 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_enabledfalse に設定されました。
60018 default domain disabled デフォルトホスト名がオフのときに、そのホスト名へリクエストが届きました。

次のステップ

Cloudflare Access

公開エンドポイントをクエリする前に、ユーザーの認証を必須にします。

役に立ちましたか?