← Правила Cloudflare / rules / origin-rules
Создание правила источника через API
Используйте Rulesets API для создания origin rules через API.
Базовые настройки правила
При создании правила источника через API убедитесь, что вы:
- Задайте для действия правила значение
route. - Определите параметры в
action_parametersполе в соответствии с типом переопределения источника. - Разверните правило в
http_request_originфаза на уровне зоны.
Процедура
Чтобы создать правило источника для указанной зоны через API, выполните следующие действия:
-
Используйте Список наборов правил зоны операцию, чтобы проверить, существует ли уже набор правил для
http_request_originфаза на уровне зоны. -
Если набор правил для этой фазы не существует, создайте его с помощью Создание набора правил зоны операцию. В свойствах нового набора правил задайте следующие значения:
- тип:
zone - фаза:
http_request_origin
- тип:
-
Используйте Обновление набора правил зоны операцию, чтобы добавить правило источника в список правил набора правил. Либо включите правило в Создание набора правил зоны запрос, упомянутый на предыдущем шаге.
Убедитесь, что ваш API токен имеет необходимые разрешения для выполнения операций API.
Примеры запросов
Пример: добавление правила, переопределяющего Host заголовок входящих запросов и разрешённую запись DNS
Host заголовок входящих запросов и разрешённую запись DNSСледующий пример задаёт правила существующего ruleset фазы ($RULESET_ID) в единое правило источника, переопределяющее Host заголовок входящих запросов и разрешённую запись DNS, используя Обновление набора правил зоны операцию. Ответ будет содержать полное определение обновлённого набора правил.
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется:Response Compression WriteConfig Settings WriteDynamic URL Redirects WriteCache Settings WriteCustom Errors WriteOrigin WriteManaged headers WriteZone Transform Rules WriteMass URL Redirects WriteMagic Firewall WriteL4 DDoS Managed Ruleset WriteHTTP DDoS Managed Ruleset WriteSanitize WriteTransform Rules WriteSelect Configuration WriteBot Management WriteZone WAF WriteAccount WAF WriteAccount Rulesets WriteLogs WriteLogs Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"ref": "hr_app_overrides",
"expression": "starts_with(http.request.uri.path, \"/hr-app/\")",
"description": "Origin rule for the company HR application",
"action": "route",
"action_parameters": {
"host_header": "hr-server.example.com",
"origin": {
"host": "hr-server.example.com"
}
}
}
]
}'{
"result": {
"id": "<RULESET_ID>",
"name": "Origin Rules ruleset",
"description": "Zone-level ruleset that will execute origin rules.",
"kind": "zone",
"version": "2",
"rules": [
{
"ref": "hr_app_overrides",
"id": "<RULE_ID>",
"version": "1",
"action": "route",
"action_parameters": {
"host_header": "hr-server.example.com",
"origin": {
"host": "hr-server.example.com"
}
},
"expression": "starts_with(http.request.uri.path, \"/hr-app/\")",
"description": "Origin rule for the company HR application",
"last_updated": "2022-06-03T14:42:04.219025Z",
"ref": "<RULE_REF>"
}
],
"last_updated": "2022-06-03T14:42:04.219025Z",
"phase": "http_request_origin"
},
"success": true,
"errors": [],
"messages": []
}Используйте ref поле, чтобы идентификаторы правил оставались стабильными при обновлениях в Terraform. Добавление этого поля не позволяет Terraform пересоздавать правило при изменениях. Дополнительную информацию см. в Устранение неполадок в документации Terraform.
Пример: добавление правила, переопределяющего порт входящих запросов
Следующий пример задаёт правила существующего ruleset фазы ($RULESET_ID) в единое правило источника, переопределяющее порт входящих запросов, с использованием Обновление набора правил зоны операцию. Ответ будет содержать полное определение обновлённого набора правил.
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется:Response Compression WriteConfig Settings WriteDynamic URL Redirects WriteCache Settings WriteCustom Errors WriteOrigin WriteManaged headers WriteZone Transform Rules WriteMass URL Redirects WriteMagic Firewall WriteL4 DDoS Managed Ruleset WriteHTTP DDoS Managed Ruleset WriteSanitize WriteTransform Rules WriteSelect Configuration WriteBot Management WriteZone WAF WriteAccount WAF WriteAccount Rulesets WriteLogs WriteLogs Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"ref": "calendar_app_change_port",
"expression": "starts_with(http.request.uri.path, \"/team/calendar/\")",
"description": "Origin rule for the team calendar application",
"action": "route",
"action_parameters": {
"origin": {
"port": 8081
}
}
}
]
}'{
"result": {
"id": "<RULESET_ID>",
"name": "Origin Rules ruleset",
"description": "Zone-level ruleset that will execute origin rules.",
"kind": "zone",
"version": "2",
"rules": [
{
"ref": "calendar_app_change_port",
"id": "<RULE_ID>",
"version": "1",
"action": "route",
"action_parameters": {
"origin": {
"port": 8081
}
},
"expression": "starts_with(http.request.uri.path, \"/team/calendar/\")",
"description": "Origin rule for the team calendar application",
"last_updated": "2022-06-03T14:42:04.219025Z",
"ref": "<RULE_REF>"
}
],
"last_updated": "2022-06-03T14:42:04.219025Z",
"phase": "http_request_origin"
},
"success": true,
"errors": [],
"messages": []
}Используйте ref поле, чтобы идентификаторы правил оставались стабильными при обновлениях в Terraform. Добавление этого поля не позволяет Terraform пересоздавать правило при изменениях. Дополнительную информацию см. в Устранение неполадок в документации Terraform.
Пример: добавление правила, переопределяющего значение SNI входящих запросов
Следующий пример задаёт правила существующего ruleset фазы ($RULESET_ID) в единое правило источника, переопределяющее значение SNI входящих запросов, адресованных admin.example.com с помощью Обновление набора правил зоны операцию.
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется:Response Compression WriteConfig Settings WriteDynamic URL Redirects WriteCache Settings WriteCustom Errors WriteOrigin WriteManaged headers WriteZone Transform Rules WriteMass URL Redirects WriteMagic Firewall WriteL4 DDoS Managed Ruleset WriteHTTP DDoS Managed Ruleset WriteSanitize WriteTransform Rules WriteSelect Configuration WriteBot Management WriteZone WAF WriteAccount WAF WriteAccount Rulesets WriteLogs WriteLogs Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"ref": "override_sni_for_admin",
"expression": "http.host eq \"admin.example.com\"",
"description": "SNI Override for the admin area",
"action": "route",
"action_parameters": {
"sni": {
"value": "sni.example.com"
}
}
}
]
}'Используйте ref поле, чтобы идентификаторы правил оставались стабильными при обновлениях в Terraform. Добавление этого поля не позволяет Terraform пересоздавать правило при изменениях. Дополнительную информацию см. в Устранение неполадок в документации Terraform.
Необходимые разрешения API-токена
Токен API, используемый в запросах API для управления origin rules, должен иметь как минимум следующее разрешение:
- Zone > Origin Rules > Изменить