Текст в Expression Editor:
starts_with(http.request.uri.path, "/team/calendar/")Значение после Порт назначения > Rewrite to:
8081← Правила Cloudflare / rules / origin-rules / examples
Следующее правило origin rule переопределяет порт назначения на 8081 для всех запросов, у которых путь URI начинается с /team/calendar/.
Текст в Expression Editor:
starts_with(http.request.uri.path, "/team/calendar/")Значение после Порт назначения > Rewrite to:
8081Следующий пример задаёт правила существующего 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 Writecurl "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.