# Rate Limiting у Cloudflare: ліміт частоти запитів

> Rate Limiting у Cloudflare: як задати поріг запитів за період, обрати дію при перевищенні і відрізнити його від WAF Custom Rules і DDoS-захисту.

Rate Limiting у Cloudflare обмежує кількість запитів від одного джерела за заданий період. Правило потрібне там, де звичайне блокування не підходить: форма входу, пошук по сайту, ендпоінт API — легітимний користувач має пройти, а скрипт з перебором паролів або парсер — отримати відмову після перевищення порогу.

Механізм рахує запити за ключем — зазвичай це IP-адреса, але можна враховувати і заголовок, cookie або параметр запиту. Лічильник працює на edge-серверах Cloudflare, тому origin не бачить зайвого трафіку ще до спрацювання ліміту.

## Як створити правило Rate Limiting у панелі

Правило налаштовується в розділі Security → WAF → Rate limiting rules. Послідовність дій така.

1. Відкрити Rate limiting rules і натиснути Create rule.
2. Вказати умову для запитів, до яких застосовується ліміт — наприклад, шлях /api/login.
3. Задати період підрахунку і поріг кількості запитів.
4. Обрати ключ підрахунку: IP, IP і User-Agent, або значення заголовка.
5. Налаштувати дію при перевищенні і тривалість блокування.

## Параметри правила: період, поріг, дія

Таблиця показує основні параметри і типові значення для різних сценаріїв.

| Параметр | Приклад значення | Призначення |
| --- | --- | --- |
| Період | 10 секунд | Вікно підрахунку запитів |
| Поріг | 20 запитів | Максимум за період |
| Дія | Block, Challenge | Реакція на перевищення |
| Mitigation timeout | 60 секунд | Час дії блокування |

## Приклади правил для типових сценаріїв

Нижче — умова, яка обмежує спроби входу з однієї IP-адреси до 5 запитів за 60 секунд.

```
(http.request.uri.path eq "/wp-login.php") and (http.request.method eq "POST")
```

- Захист форми входу від перебору паролів без блокування звичайних відвідувачів.
- Обмеження звернень до важкого ендпоінта пошуку, який навантажує базу даних.
- Ліміт на публічний API-ключ, коли тариф партнера обмежує кількість запитів за хвилину.

## Rate Limiting і WAF Custom Rules: що обрати

Коли завдання — заблокувати трафік за постійною ознакою, наприклад за країною або шляхом без токена, правильний інструмент — [WAF Custom Rules](https://www.zevshost.net/uk/kb/cloudflare-waf-custom-rules/). Rate Limiting вирішує інше завдання: він реагує не на зміст запиту, а на частоту повторів одного й того самого джерела.

Для точкового блокування конкретних IP-адрес без урахування частоти простіше використати [Firewall правила](https://www.zevshost.net/uk/kb/cloudflare-firewall-rules/) — вони застосовуються одразу, без накопичення лічильника.

## Як перевірити спрацювання і подивитися журнали

Перевірити правило можна серією повторних запитів через curl — після перевищення порогу сервер має повернути код 429 або сторінку challenge.

```
for i in $(seq 1 10); do curl -s -o /dev/null -w "%{http_code}\n" https://example.com/wp-login.php; done
```

Події спрацювання видно в Security → Events із зазначенням ключа підрахунку і IP-адреси. Загальну динаміку заблокованих запитів зручно дивитися в [Cloudflare Analytics](https://www.zevshost.net/uk/kb/cloudflare-analytics/).

## Чек-лист перед увімкненням правила

- Умова обмежує саме потрібний шлях, а не весь сайт.
- Поріг і період перевірені на реальному навантаженні, а не взяті навмання.
- Ключ підрахунку враховує спільний IP у користувачів за NAT або CDN.
- Дія при перевищенні не блокує легітимні інтеграції назавжди.
- Після увімкнення перевірена реакція на серію тестових запитів.

---

Джерело: https://www.zevshost.net/uk/kb/cloudflare-rate-limiting/
