INTEGRITY Dokumentace

Podporovaná pole a operátory

Podporovaná pole pravidel load balancing závisí na tom, zda Cloudflare směruje provoz vašeho load balanceru přes proxy, nebo ne.

Pokud použijete nesprávnou sadu polí, může dojít k neočekávanému chování. Pro nejlepší výsledky použijte pole odpovídající stav proxy.

Některá pole pravidel Load Balancing jsou navíc dostupná v Expression Builderu, jak je popsáno v Výrazy pro Load Balancing zatímco jiné je možné nastavit pouze ručně, přes API nebo Expression Editor

Sady polí v Expression Builder

Následující tabulka vysvětluje, jak pole dostupná v Expression Builder jsou seskupeny.

Field Set Sekce v Expression Builder Popis
Pole podporovaná bez ohledu na proxy BOTH Hodnoty, které jsou vždy dostupné bez ohledu na stav proxování load balanceru.
Pole pouze pro proxovaný provoz PROXIED ONLY Hodnoty dostupné pouze v případě, že je load balancer proxovaný.
Pole pouze pro neproxovaný provoz NON-PROXIED ONLY Hodnoty dostupné pouze v případě, že load balancer není proxovaný (provoz pouze přes DNS).
Vyberte pole load balanceru na základě hlavičky proxy status

Pole podporovaná bez ohledu na proxy

Bez ohledu na provozní stav proxy, pravidla Load Balancing mohou přistupovat k hodnotám následujících polí:

PoleNázev v Expression BuilderPopis
cf.load_balancer.name

Bytes

Load Balancer Name

Reprezentuje název load balanceru, který tato pravidla vykonává.

Příklad hodnoty:


lb.example.com

cf.load_balancer.region

Bytes

Load Balancer Region

Poskytuje

název regionu

datového centra, které daný požadavek zpracovává.

Příklad hodnoty:


ENAM

ip.src

IP address

IP Source Address

Pokud je provoz proxovaný, toto pole poskytuje TCP IP adresu klienta, která může být upravena tak, aby odrážela skutečnou adresu klienta pomocí HTTP hlaviček, jako například X-Forwarded-For nebo X-Real-IP .

Pokud provoz není proxovaný (pouze DNS), toto pole poskytuje zdrojovou adresu ECS, pokud je k dispozici. Pokud k dispozici není, poskytuje IP adresu resolveru klienta.

Upozornění na vyřazení: V budoucnu bude toto pole u neproxovaných požadavků vždy nastaveno na IP adresu klientského resolveru. Pokud chcete zjistit přítomnost ECS a použít IP adresu ECS, podívejte se na pole

dns.rr.opt.client

a

dns.rr.opt.client.addr

, v uvedeném pořadí.

Příklad hodnoty:


1.2.3.4

ip.src.asnum

Number

AS Number

16bitové nebo 32bitové celé číslo představující číslo autonomního systému (AS) přiřazené k IP adrese klienta.

Příklad hodnoty:


13335

Pole pouze pro proxovaný provoz

Pokud váš provoz prochází přes Cloudflare jako proxy, máte přístup ke všem polím uvedeným v části Pole podporovaná bez ohledu na proxy kromě následujících polí:

Řada z těchto polí vychází z Dokumentace jazyka pravidel.

PoleNázev v Expression BuilderPopis
http.host
String
(Pouze ruční zadání)

Reprezentuje název hostitele použitý v úplném URI požadavku.

Příklad hodnoty:
www.example.org ↗

http.referer
String
(Pouze ruční zadání)

Reprezentuje hlavičku HTTP požadavku Referer, která obsahuje adresu webové stránky, ze které vedl odkaz na aktuálně požadovanou stránku.

Příklad hodnoty:
Referer: htt­ps://developer.example.org/en-US/docs/Web/JavaScript

http.request.headers
Map<Array<String>>
Header

Reprezentuje hlavičky HTTP požadavku jako Map (nebo asociativní pole).

Klíče asociativního pole jsou názvy hlaviček HTTP požadavku převedeno na malá písmena.

Pokud se hlavičky opakují, pole je obsahuje v pořadí, v jakém se objevují v požadavku.

Dekódování: nebylo provedeno žádné dekódování
Bílé znaky: zachováno
Non-ASCII: zachováno

Příklad:
any(http.request.headers["content-type"][*] == "application/json")

Příklad hodnoty:
{"content-type": ["application/json"]}

http.request.method
String
Request Method

Reprezentuje metodu HTTP vrácenou jako řetězec velkých písmen.

Příklad hodnoty:
GET

http.request.timestamp.sec
Integer
Timestamp

Reprezentuje časové razítko přijetí požadavku službou Cloudflare vyjádřené jako unixový čas v sekundách. Tato hodnota má 10 číslic.

Příklad hodnoty:
1484063137

http.request.uri
String
URI

Reprezentuje cestu URI a řetězec dotazu požadavku.

Příklad hodnoty:
/articles/index?section=539061&expand=comments

http.request.uri.args
Map<Array<String>>
(Pouze ruční zadání)

Reprezentuje argumenty HTTP URI přiřazené k požadavku jako Map (asociativní pole).

Když se argument opakuje, pole obsahuje více položek v pořadí, v jakém se objevují v požadavku.

Hodnoty se nijak předzpracovávají a zachovávají velikost písmen tak, jak byla použita v požadavku.

Dekódování: nebylo provedeno žádné dekódování
Non-ASCII: zachováno

Příklad:
any(http.request.uri.args["search"][*] == "red+apples")

Příklad hodnoty:
{"search": ["red+apples"]}

http.request.uri.args.names
Array<String>
(Pouze ruční zadání)

Reprezentuje názvy argumentů v řetězci dotazu HTTP URI. Názvy nejsou nijak předzpracované a zachovávají velikost písmen tak, jak byla použita v požadavku.

Pokud se název opakuje, pole obsahuje více položek v pořadí, v jakém se objevují v požadavku.

Dekódování: nebylo provedeno žádné dekódování
Non-ASCII: zachováno

Příklad:
any(http.request.uri.args.names[*] == "search")

Příklad hodnoty:
["search"]

http.request.uri.args.values
Array<String>
(Pouze ruční zadání)

Reprezentuje hodnoty argumentů v řetězci dotazu HTTP URI. Hodnoty nejsou nijak předzpracované a zachovávají velikost písmen tak, jak byla použita v požadavku. Jsou uvedeny ve stejném pořadí jako v požadavku.

Duplicitní hodnoty se zobrazují vícekrát.

Dekódování: nebylo provedeno žádné dekódování
Non-ASCII: zachováno

Příklad:
any(http.request.uri.args.values[*] == "red+apples")

Příklad hodnoty:
["red+apples"]

http.request.uri.path
String
URI Path

Reprezentuje cestu URI požadavku.

Příklad hodnoty:
/articles/index

http.request.uri.query
String
URI Query

Reprezentuje celý řetězec dotazu bez ? oddělovač.

Příklad hodnoty:
section=539061&expand=comments

http.request.version
String
HTTP Version

Reprezentuje verzi použitého protokolu HTTP. Toto pole použijte, pokud potřebujete pro různé verze odlišné kontroly.

Příklad hodnot:

  • HTTP/1.1
  • HTTP/3

Pole pouze pro neproxovaný provoz

Pokud váš provoz neprochází přes Cloudflare jako proxy, máte přístup ke všem polím uvedeným v části Pole podporovaná bez ohledu na proxy kromě následujících polí:

PoleNázev v Expression BuilderPopis
dns.qry.name

Bytes

Query Name

Reprezentuje zadaný název dotazu.

Příklad hodnoty:


example.com.

dns.qry.name.len

Integer

Query Name Length

Reprezentuje délku názvu dotazu v bajtech.

Příklad hodnoty:


123

dns.qry.qu

Boolean

Question

Když true, toto pole udává, že přijatá DNS zpráva byla otázkou.

dns.qry.type

Integer

Query Type

Reprezentuje číselnou hodnotu

Typ DNS dotazu

.

Příklad hodnot:

  • 1 (záznam A)

  • 28 (záznam AAAA)

dns.rr.opt.client

Boolean

(

Pouze ruční zadání

)

Když true, toto pole udává, že s DNS požadavkem byla odeslána adresa EDNS Client Subnet (ECS).

dns.rr.opt.client.addr

String

(

Pouze ruční zadání

)

Pokud je toto pole přítomné, představuje adresu ECS odeslanou s DNS požadavkem.

Příklad hodnoty:


1.2.3.0

Operátory a seskupovací symboly

Příklady a způsob použití najdete v Operátory a seskupovací symboly v dokumentaci k jazyku Rules language.