Dokumentace Domluvit pilot

Vytvoření pravidla omezení frekvence požadavků přes API

Použijte Rulesets API k vytvoření pravidla omezení frekvence požadavků prostřednictvím API na úrovni zóny.

Pravidlo omezení rychlosti je podobné běžnému pravidlu zpracovávanému Ruleset Engine, ale obsahuje navíc ratelimit objekt s konfigurací rate limiting. Více informací najdete v Parametry omezení frekvence požadavků s dalšími informacemi o tomto poli a jeho parametrech.

Pravidla omezení frekvence požadavků musíte nasadit do http_ratelimit vstupní sada pravidel fáze.

Pravidla omezení frekvence požadavků musí být na konci seznamu pravidel.

Pokud používáte Terraform, přečtěte si Konfigurace pravidel omezení frekvence požadavků pomocí Terraformu.

Vytvoření pravidla omezení frekvence požadavků

Chcete-li vytvořit pravidlo omezení frekvence požadavků pro zónu, přidejte pravidlo s ratelimit objekt do http_ratelimit je vstupní sada pravidel dané fáze.

  1. Vyvolejte Získání vstupní sady pravidel zóny operaci k získání definice vstupní sady pravidel pro http_ratelimit fáze. Budete potřebovat ID zóny pro tento úkol.

  2. Pokud vstupní sada pravidel již existuje (to znamená, pokud jste obdrželi 200 OK stavový kód a definici sady pravidel), poznamenejte si ID sady pravidel z odpovědi. Poté zavolejte Vytvoření pravidla sady pravidel zóny operaci pro přidání pravidla rate limiting do stávající sady pravidel. Podrobnosti najdete v příkladech níže.

  3. Pokud vstupní sada pravidel neexistuje (to znamená, pokud jste obdrželi 404 Not Found stavový kód v kroku 1), vytvořte ji pomocí Vytvoření rulesetu zóny operaci. Pravidlo rate limiting zahrňte do rules pole. Podívejte se na Vytvoření sady pravidel pro příklad.

Příklad A: omezení frekvence podle vlastností požadavku

Tento příklad přidává pravidlo omezení frekvence požadavků do http_ratelimit fáze vstupní sady pravidel pro zónu s ID $ZONE_ID. Vstupní sada pravidel fáze již existuje, s ID $RULESET_ID.

Vytvoření pravidla sady pravidel zóny
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID/rules" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"description": "My rate limiting rule",
		"expression": "(http.request.uri.path matches \"^/api/\")",
		"action": "block",
		"ratelimit": {
				"characteristics": [
						"cf.colo.id",
						"ip.src",
						"http.request.headers[\"x-api-key\"]"
				],
				"period": 60,
				"requests_per_period": 100,
				"mitigation_timeout": 600
		}
	}'

Chcete-li určit konkrétní pozici nového pravidla, zahrňte position objekt v těle požadavku podle pokynů v Změna pořadí pravidla v sadě pravidel.

Pokyny k vytvoření vstupní sady pravidel a definování jejích pravidel pomocí jediného volání API najdete v Přidat pravidla do vstupních sad pravidel fáze.

Příklad B: omezení frekvence s vlastní odpovědí

Tento příklad přidává pravidlo omezení frekvence požadavků do http_ratelimit fáze vstupní sady pravidel pro zónu s ID $ZONE_ID. Vstupní sada pravidel fáze již existuje, s ID $RULESET_ID.

Nové pravidlo definuje vlastní odpověď pro požadavky blokované kvůli omezení rychlosti.

Vytvoření pravidla sady pravidel zóny
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID/rules" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"description": "My rate limiting rule",
		"expression": "(http.request.uri.path matches \"^/api/\")",
		"action": "block",
		"action_parameters": {
				"response": {
						"status_code": 403,
						"content": "You have been rate limited.",
						"content_type": "text/plain"
				}
		},
		"ratelimit": {
				"characteristics": [
						"cf.colo.id",
						"ip.src",
						"http.request.headers[\"x-api-key\"]"
				],
				"period": 60,
				"requests_per_period": 100,
				"mitigation_timeout": 600
		}
	}'

Chcete-li určit konkrétní pozici nového pravidla, zahrňte position objekt v těle požadavku podle pokynů v Změna pořadí pravidla v sadě pravidel.

Pokyny k vytvoření vstupní sady pravidel a definování jejích pravidel pomocí jediného volání API najdete v Přidat pravidla do vstupních sad pravidel fáze.

Příklad C: omezení frekvence s vynecháním cachovaných prostředků

Tento příklad přidává pravidlo omezení frekvence požadavků do http_ratelimit fáze vstupní sady pravidel pro zónu s ID $ZONE_ID. Vstupní sada pravidel fáze již existuje, s ID $RULESET_ID.

Nové pravidlo při výpočtu frekvence nezohledňuje požadavky na cachovaná aktiva ("requests_to_origin": true).

Vytvoření pravidla sady pravidel zóny
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID/rules" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"description": "My rate limiting rule",
		"expression": "(http.request.uri.path matches \"^/api/\")",
		"action": "block",
		"ratelimit": {
				"characteristics": [
						"cf.colo.id",
						"ip.src",
						"http.request.headers[\"x-api-key\"]"
				],
				"period": 60,
				"requests_per_period": 100,
				"mitigation_timeout": 600,
				"requests_to_origin": true
		}
	}'

Chcete-li určit konkrétní pozici nového pravidla, zahrňte position objekt v těle požadavku podle pokynů v Změna pořadí pravidla v sadě pravidel.

Pokyny k vytvoření vstupní sady pravidel a definování jejích pravidel pomocí jediného volání API najdete v Přidat pravidla do vstupních sad pravidel fáze.

Příklad D: pravidlo omezení frekvence založené na komplexnosti

Tento příklad přidává pravidlo omezení frekvence požadavků do http_ratelimit fáze vstupní sady pravidel pro zónu s ID $ZONE_ID. Vstupní sada pravidel fáze již existuje, s ID $RULESET_ID.

Nové pravidlo je pravidlo omezení frekvence požadavků založené na složitosti, které bere v úvahu my-score HTTP hlavičku odpovědi a na jejím základě vypočítá celkové skóre složitosti klienta. Čítač s celkovým skóre se aktualizuje, když dojde ke shodě s výrazem pro počítání pravidla omezení frekvence požadavků (v tomto případě stejným jako výraz pravidla, protože counting_expression je prázdný řetězec). Jakmile je tento celkový součet vyšší než 400 během období 60 sekund (jedna minuta), budou všechny pozdější požadavky klienta blokovány po dobu 600 sekund (10 minut).

Vytvoření pravidla sady pravidel zóny
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID/rules" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"description": "My complexity-based rate limiting rule",
		"expression": "(http.request.uri.path wildcard \"/graphql/*\")",
		"action": "block",
		"ratelimit": {
				"characteristics": [
						"cf.colo.id",
						"http.request.headers[\"x-api-key\"]"
				],
				"score_response_header_name": "my-score",
				"score_per_period": 400,
				"period": 60,
				"mitigation_timeout": 600,
				"counting_expression": ""
		}
	}'

Chcete-li určit konkrétní pozici nového pravidla, zahrňte position objekt v těle požadavku podle pokynů v Změna pořadí pravidla v sadě pravidel.

Pokyny k vytvoření vstupní sady pravidel a definování jejích pravidel pomocí jediného volání API najdete v Přidat pravidla do vstupních sad pravidel fáze.


Další kroky

Použijte různé operace v Rulesets API, abyste pracovali s pravidlem, které jste právě vytvořili. Následující tabulka obsahuje seznam běžných úkolů pro práci s pravidly omezení frekvence požadavků na úrovni zóny:

Úkol Postup
Seznam všech pravidel v sadě pravidel

Použijte Získání vstupní sady pravidel zóny operaci s http_ratelimit fáze a získáte tak seznam nakonfigurovaných pravidel rate limiting a jejich ID.

Další informace najdete v tématu Zobrazit konkrétní sadu pravidel.

Aktualizace pravidla

Použijte Aktualizace pravidla v sadě pravidel zóny operace.

Budete muset zadat ID sady pravidel a ID pravidla. Chcete-li tato ID získat, můžete použít Získání vstupní sady pravidel zóny operaci s http_ratelimit fáze.

Další informace najdete v tématu Aktualizace pravidla v sadě pravidel.

Smazat pravidlo

Použijte Odstranění pravidla sady pravidel zóny operace.

Budete muset zadat ID sady pravidel a ID pravidla. Chcete-li tato ID získat, můžete použít Získání vstupní sady pravidel zóny operaci s http_ratelimit fáze.

Další informace najdete v tématu Odstraňte pravidlo v sadě pravidel.

Tyto operace popisuje dokumentace k Ruleset Engine. Ruleset Engine pohání různé produkty Cloudflare, včetně pravidel omezení frekvence požadavků.

Další zdroje

Pokyny k nasazení pravidel rate limitingu na úrovni účtu pomocí API najdete v Vytvoření sady pravidel pro omezení frekvence požadavků přes API.

Požádejte o pilot zdarma

Domluvit pilot