INTEGRITY Документация

Пользовательские домены

Пользовательские домены позволяют отправлять запросы AI Gateway через принадлежащее вам имя хоста, например ai.example.com, вместо стандартного gateway.ai.cloudflare.com конечная точка.

Имя хоста идентифицирует ваш аккаунт и шлюз, поэтому account ID и gateway ID можно не указывать в URL запроса. Запросы направляются напрямую к нативным маршрутам провайдеров AI Gateway и OpenAI-совместимым compat маршруты.

Пользовательские домены также лежат в основе средства контроля, учитывающие идентификацию пользователей, через Cloudflare Access, которая позволяет пользователям пройти аутентификацию через вашего провайдера идентификации, прежде чем обращаться к вашему шлюзу.

Как это работает

Например, если ваш пользовательский домен ai.example.com, запрос к провайдеру OpenAI использует:

https://ai.example.com/openai/v1/chat/completions

Вместо:

https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/openai/v1/chat/completions

То же самое относится к OpenAI-совместимому эндпойнту. Например, https://ai.example.com/compat/chat/completions направляются через один и тот же шлюз с использованием compat маршрут.

Настройка пользовательского домена в панели управления

Чтобы добавить пользовательский домен:

  1. В Панель управления Cloudflare, перейдите в AI > AI Gateway.
  2. Выберите шлюз, который хотите настроить.
  3. Перейдите в Домены на вкладке.
  4. Выберите Добавить домен и введите имя хоста, которое хотите использовать. При желании выберите поддомен.
  5. AI Gateway автоматически создаёт запись DNS в панели управления.

После настройки домена вы можете отправлять на него запросы. Чтобы потребовать от пользователей аутентификации перед тем как они смогут обращаться к шлюзу, настроить Cloudflare Access для этого домена.

Настройка пользовательского домена через API

Вы также можете создавать пользовательские домены и управлять ими через Cloudflare API.

В отличие от панели управления, API не создает DNS-запись автоматически. После создания пользовательского домена используйте полученный cname_target чтобы создать проксированную CNAME-запись для имени вашего хоста.

Создайте пользовательский домен

curl "https://api.cloudflare.com/client/v4/accounts/%7Baccount_id%7D/ai-gateway/gateways/%7Bgateway_id%7D/custom-domains" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"domain": "ai.example.com",
		"zone_id": "395566f4c8a5b9d2a5fc0d457b007c44"
	}'

Ответ включает статус пользовательского домена и целевой CNAME:

{
	"success": true,
	"result": {
		"hostname": "ai.example.com",
		"gateway_id": "my-gateway",
		"status": "pending_dcv",
		"cname_target": "<cname-target>",
		"created_at": 1782925200000,
		"modified_at": 1782925200000
	}
}

Создайте DNS-запись

Создайте проксируемую запись CNAME в зоне, которой принадлежит ваш пользовательский домен. Задайте content к cname_target возвращённый при создании пользовательского домена.

curl "https://api.cloudflare.com/client/v4/zones/%7Bzone_id%7D/dns_records" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"type": "CNAME",
		"name": "ai",
		"content": "<cname-target>",
		"proxied": true
	}'

Пользовательский домен остаётся в pending_dcv пока не завершится проверка контроля над доменом.

Получение списка пользовательских доменов

curl "https://api.cloudflare.com/client/v4/accounts/%7Baccount_id%7D/ai-gateway/gateways/%7Bgateway_id%7D/custom-domains" \
	--request GET \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"

Получение пользовательского домена

curl "https://api.cloudflare.com/client/v4/accounts/%7Baccount_id%7D/ai-gateway/gateways/%7Bgateway_id%7D/custom-domains/%7Bhostname%7D" \
	--request GET \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"

Удалите пользовательский домен

curl "https://api.cloudflare.com/client/v4/accounts/%7Baccount_id%7D/ai-gateway/gateways/%7Bgateway_id%7D/custom-domains/%7Bhostname%7D" \
	--request DELETE \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"

Пример запроса

Отправляйте запросы на пользовательский домен без account ID или gateway ID в пути:

curl -X POST "https://ai.example.com/openai/v1/chat/completions" \
  --header "Content-Type: application/json" \
  --data '{
    "model": "gpt-4.1-mini",
    "messages": [
      {
        "role": "user",
        "content": "What is Cloudflare?"
      }
    ]
  }'

Если домен защищён Cloudflare Access, запрос также должен включать действительный Access token. Подробнее см. Cloudflare Access.

Ограничения

Пользовательские домены пока не поддерживаются для новых эндпойнтов AI Gateway, обслуживаемых через Cloudflare REST API (api.cloudflare.com).