← Правила Cloudflare / rules / custom-errors
Пример пользовательских правил для страниц ошибок
В выражениях правил приведённых примеров используются следующие поля:
-
http.response.code(Response Status Code): обозначает код статуса HTTP, возвращаемый клиенту, который устанавливает либо продукт Cloudflare, либо исходный сервер. Используйте это поле, чтобы настроить ответ для кодов ошибок, возвращаемых исходным сервером или продуктом Cloudflare, например Worker. -
cf.response.1xxx_code: содержит конкретный код ошибки для ошибок, сгенерированных Cloudflare. Это поле работает только с ошибками, сгенерированными Cloudflare, такими как 52X и 1XXX.
Пользовательский JSON-ответ для всех ошибок 5XX
В этом примере настраивается пользовательский JSON-ответ об ошибке для всех ошибок 5XX (500-599) в зоне. Код состояния HTTP для пользовательского ответа об ошибке будет установлен на 530.
Настройка правила пользовательской ошибки:
-
Название:
Custom JSON response for all 5XX errors -
Если входящие запросы соответствуют > Настраиваемое выражение фильтра:
Поле Оператор Значение Логика Response Status Code больше или равно 500И Response Status Code меньше или равно 599Если вы используете Expression Editor:
(http.response.code ge 500 and http.response.code le 599) -
Тип ответа: Ответ JSON
-
Код ответа:
530 -
Ответ JSON:
{"message": "A server error occurred."}
Необходимые разрешения 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/phases/http_custom_errors/entrypoint" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"ref": "json_response_for_5xx_errors",
"action": "serve_error",
"action_parameters": {
"content": "{\"message\": \"A server error occurred.\"}",
"content_type": "application/json",
"status_code": 530
},
"expression": "http.response.code ge 500 and http.response.code lt 600",
"enabled": true
}
]
}'Используйте ref поле, чтобы идентификаторы правил оставались стабильными при обновлениях в Terraform. Добавление этого поля не позволяет Terraform пересоздавать правило при изменениях. Дополнительную информацию см. в Устранение неполадок в документации Terraform.
Это PUT запрос, соответствующий Обновление набора правил точки входа зоны заменяет все существующие правила в http_custom_errors набор правил точки входа фазы.
Пользовательский HTML-ответ с обновлённым кодом состояния
В этом примере настраивается пользовательский HTML-ответ об ошибке для ответов с 500 код статуса HTTP и переопределяет код статуса ответа на 503.
Настройка правила пользовательской ошибки:
-
Название:
Custom HTML response for 500 errors -
Если входящие запросы соответствуют > Настраиваемое выражение фильтра:
Поле Оператор Значение Response Status Code равно 500Если вы используете Expression Editor:
(http.response.code eq 500) -
Тип ответа: HTML-ответ
-
Код ответа:
503 -
HTML-ответ:
<!DOCTYPE html><html><head><meta charset="utf-8"><title>Application unavailable</title></head><body><h1>Application temporarily unavailable</h1><p>Please try again later.</p></body></html>
Необходимые разрешения 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/phases/http_custom_errors/entrypoint" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"ref": "html_response_500_to_503",
"action": "serve_error",
"action_parameters": {
"content": "<!DOCTYPE html><html><head><meta charset=\"utf-8\"><title>Application unavailable</title></head><body><h1>Application temporarily unavailable</h1><p>Please try again later.</p></body></html>",
"content_type": "text/html",
"status_code": 503
},
"expression": "http.response.code eq 500",
"enabled": true
}
]
}'Используйте ref поле, чтобы идентификаторы правил оставались стабильными при обновлениях в Terraform. Добавление этого поля не позволяет Terraform пересоздавать правило при изменениях. Дополнительную информацию см. в Устранение неполадок в документации Terraform.
Это PUT запрос, соответствующий Обновление набора правил точки входа зоны заменяет все существующие правила в http_custom_errors набор правил точки входа фазы.
Пользовательский HTML-ответ для ошибок Cloudflare 1020
В этом примере настраивается пользовательский HTML-ответ об ошибке для Ошибка Cloudflare 1020 (Access Denied).
Настройка правила пользовательской ошибки:
-
Название:
Custom HTML response for 1020 errors -
Если входящие запросы соответствуют > Настраиваемое выражение фильтра
Используйте Expression Editor:
(cf.response.1xxx_code eq 1020) -
Тип ответа: HTML-ответ
-
HTML-ответ:
<!DOCTYPE html><html><head><meta charset="utf-8"><title>Access denied</title></head><body><h1>You do not have access to this page</h1><p>Contact us if you think this is an error.</p></body></html>
Необходимые разрешения 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/phases/http_custom_errors/entrypoint" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"ref": "html_response_cf_1020",
"action": "serve_error",
"action_parameters": {
"content": "<!DOCTYPE html><html><head><meta charset=\"utf-8\"><title>Access denied</title></head><body><h1>You do not have access to this page</h1><p>Contact us if you think this is an error.</p></body></html>",
"content_type": "text/html"
},
"expression": "cf.response.1xxx_code eq 1020",
"enabled": true
}
]
}'Используйте ref поле, чтобы идентификаторы правил оставались стабильными при обновлениях в Terraform. Добавление этого поля не позволяет Terraform пересоздавать правило при изменениях. Дополнительную информацию см. в Устранение неполадок в документации Terraform.
Это PUT запрос, соответствующий Обновление набора правил точки входа зоны заменяет все существующие правила в http_custom_errors набор правил точки входа фазы.
Пользовательский ресурс ошибки, созданный из URL
В этом примере настраивается пользовательское правило ошибки, которое возвращает ранее созданный ресурс пользовательской ошибки с именем 500_error_template для ответов с 500 код статуса HTTP.
Настройка правила пользовательской ошибки:
-
Название:
Serve asset for HTTP 500 errors -
Если входящие запросы соответствуют > Настраиваемое выражение фильтра:
Поле Оператор Значение Response Status Code равно 500Если вы используете Expression Editor:
(http.response.code eq 500) -
Тип ответа: Пользовательский ресурс ошибки
-
Ресурс:
500_error_template
Необходимые разрешения 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/phases/http_custom_errors/entrypoint" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"ref": "serve_error_500_asset",
"action": "serve_error",
"action_parameters": {
"asset_name": "500_error_template",
"content_type": "text/html"
},
"expression": "http.response.code eq 500",
"enabled": true
}
]
}'Используйте ref поле, чтобы идентификаторы правил оставались стабильными при обновлениях в Terraform. Добавление этого поля не позволяет Terraform пересоздавать правило при изменениях. Дополнительную информацию см. в Устранение неполадок в документации Terraform.
Это PUT запрос, соответствующий Обновление набора правил точки входа зоны заменяет все существующие правила в http_custom_errors набор правил точки входа фазы.