← Cloudflare Load Balancing / load-balancing / additional-options / load-balancing-rules
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). |
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í:
| Pole | Název v Expression Builder | Popis |
|---|---|---|
cf.load_balancer.name
| Load Balancer Name | Reprezentuje název load balanceru, který tato pravidla vykonává. Příklad hodnoty: lb.example.com |
cf.load_balancer.region
| Load Balancer Region | Poskytuje název regionu datového centra, které daný požadavek zpracovává. Příklad hodnoty: ENAM |
ip.src
| 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 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
| 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.
| Pole | Název v Expression Builder | Popis |
|---|---|---|
http.cookieString | (Pouze ruční zadání) | Reprezentuje celý cookie jako řetězec. Příklad hodnoty:
|
http.hostString | (Pouze ruční zadání) | Reprezentuje název hostitele použitý v úplném URI požadavku. Příklad hodnoty:
|
http.refererString | (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:
|
http.request.headersMap<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í
Příklad:
Příklad hodnoty:
|
http.request.methodString | Request Method | Reprezentuje metodu HTTP vrácenou jako řetězec velkých písmen. Příklad hodnoty:
|
http.request.timestamp.secInteger | 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:
|
http.request.uriString | URI | Reprezentuje cestu URI a řetězec dotazu požadavku. Příklad hodnoty:
|
http.request.uri.argsMap<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í
Příklad:
Příklad hodnoty:
|
http.request.uri.args.namesArray<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í
Příklad:
Příklad hodnoty:
|
http.request.uri.args.valuesArray<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í
Příklad:
Příklad hodnoty:
|
http.request.uri.pathString | URI Path | Reprezentuje cestu URI požadavku. Příklad hodnoty:
|
http.request.uri.queryString | URI Query | Reprezentuje celý řetězec dotazu bez Příklad hodnoty:
|
http.request.versionString | 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:
|
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í:
| Pole | Název v Expression Builder | Popis |
|---|---|---|
dns.qry.name
| Query Name | Reprezentuje zadaný název dotazu. Příklad hodnoty: example.com. |
dns.qry.name.len
| Query Name Length | Reprezentuje délku názvu dotazu v bajtech. Příklad hodnoty: 123 |
dns.qry.qu
| Question | Když |
dns.qry.type
| Query Type | Reprezentuje číselnou hodnotu Typ DNS dotazu . Příklad hodnot:
|
dns.rr.opt.client
| ( Pouze ruční zadání ) | Když |
dns.rr.opt.client.addr
| ( 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
-
Porovnávací operátory určují, jak musí hodnoty definované ve výrazu souviset se skutečnou hodnotou HTTP požadavku, aby výraz vrátil true.
-
Logické operátory kombinují dva výrazy do složeného výrazu a pomocí priority operátorů určují, jak se výraz vyhodnotí.
-
Symboly seskupení umožňují uspořádat výrazy, vynutit prioritu operátorů a vytvářet vnořené výrazy.
Příklady a způsob použití najdete v Operátory a seskupovací symboly v dokumentaci k jazyku Rules language.