Jak používat filtry tras brány VMware Spring Cloud s plánem Azure Spring Apps Enterprise
Poznámka:
Plány Basic, Standard a Enterprise budou od poloviny března 2025 vyřazeny ze 3letého období vyřazení. Doporučujeme přejít na Azure Container Apps. Další informace najdete v oznámení o vyřazení Azure Spring Apps.
Od 30. září 2024 bude od 30. září 2024 zastaralý plán s úplným vypnutím po šesti měsících. Doporučujeme přejít na Azure Container Apps. Další informace najdete v tématu Migrace spotřeby Azure Spring Apps Úrovně Standard a vyhrazeného plánu do Azure Container Apps.
Tento článek se vztahuje na: ❎ Basic/Standard ✅ Enterprise
Tento článek vysvětluje, jak pomocí filtrů tras brány Spring Cloud VMware s plánem Azure Spring Apps Enterprise směrovat požadavky do vašich aplikací.
Brána VMware Spring Cloud je komerční komponenta VMware Tanzu založená na opensourcovém projektu brány Spring Cloud. Spring Cloud Gateway řeší průřezové otázky pro vývojové týmy rozhraní API, jako je jednotné přihlašování (SSO), řízení přístupu, omezování rychlosti, odolnost, zabezpečení a další. Doručování rozhraní API můžete urychlit pomocí moderních vzorů nativních pro cloud a libovolného programovacího jazyka, který zvolíte pro vývoj rozhraní API.
Brána VMware Spring Cloud zahrnuje následující funkce:
- Dynamická konfigurace směrování nezávislá na jednotlivých aplikacích, které je možné použít a změnit bez rekompilace.
- Filtry tras komerčního rozhraní API pro přenos autorizovaných deklarací identity webového tokenu JSON (JWT) do aplikačních služeb
- Autorizace klientského certifikátu.
- Přístupy k omezování rychlosti.
- Konfigurace jističe.
- Podpora přístupu k aplikačním službám prostřednictvím přihlašovacích údajů základního ověřování HTTP
Pokud se chcete integrovat s portálem API pro VMware Tanzu, brána VMware Spring Cloud automaticky vygeneruje dokumentaci OpenAPI verze 3 po přidání nebo změnách konfigurace trasy. Další informace najdete v tématu Použití portálu API pro VMware Tanzu.
Požadavky
- Už zřízená instance služby plánu Azure Spring Apps Enterprise s povolenou bránou Spring Cloud Další informace najdete v tématu Rychlý start: Sestavování a nasazování aplikací do Azure Spring Apps pomocí plánu Enterprise.
-
Azure CLI verze 2.0.67 nebo novější K instalaci rozšíření Azure Spring Apps použijte následující příkaz:
az extension add --name spring
.
Použití filtrů
Filtry v konfiguraci brány Spring Cloud používáte k reakci na příchozí požadavek nebo odchozí odpověď na konfiguraci trasy.
Pomocí filtru můžete například přidat hlavičku HTTP nebo odepřít přístup na základě autorizačního tokenu.
Použití opensourcových filtrů
Operační systém brány Spring Cloud obsahuje několik GatewayFilter
továren, které slouží k vytváření filtrů pro trasy. Následující části popisují tyto továrny.
AddRequestHeader
Továrna AddRequestHeader
přidá hlavičku do hlaviček podřízeného požadavku pro všechny odpovídající požadavky.
Tato továrna přijímá následující parametry konfigurace:
name
value
Následující příklad nakonfiguruje továrnu AddRequestHeader
, která přidá hlavičku X-Request-red:blue
do hlaviček podřízeného požadavku pro všechny odpovídající požadavky:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"AddRequestHeader=X-Request-red, blue"
]
}
]
Objekt AddRequestHeader
pro vytváření má přístup k proměnným identifikátoru URI, které se používají ke shodě cesty nebo hostitele. V hodnotě můžete použít proměnné identifikátoru URI a proměnné se rozbalí za běhu.
Následující příklad nakonfiguruje továrnu AddRequestHeader
, která používá proměnnou:
[
{
"predicates": [
"Path=/api/{segment}"
],
"filters": [
"AddRequestHeader=X-Request-red, blue-{segment}"
]
}
]
AddRequestHeadersIfNotPresent
Továrna AddRequestHeadersIfNotPresent
přidá hlavičky, pokud nejsou v původním požadavku.
Tato továrna přijímá následující konfigurační parametr:
-
headers
: Čárkami oddělený seznam párů klíč-hodnota (název záhlaví, hodnota záhlaví).
Následující příklad nakonfiguruje továrnu AddRequestHeadersIfNotPresent
:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"AddRequestHeadersIfNotPresent=Content-Type:application/json,Connection:keep-alive"
]
}
]
AddRequestParameter
Objekt AddRequestParameter
pro vytváření přidá parametr do řetězce dotazu podřízeného požadavku pro všechny odpovídající požadavky.
Tato továrna přijímá následující parametry konfigurace:
name
value
Následující příklad nakonfiguruje továrnu AddRequestParameter
, která přidá red=blue
parametr do řetězce dotazu podřízeného požadavku pro všechny odpovídající požadavky:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"AddRequestParameter=red, blue"
]
}
]
Objekt AddRequestParameter
pro vytváření má přístup k proměnným identifikátoru URI, které se používají ke shodě cesty nebo hostitele. V hodnotě můžete použít proměnné identifikátoru URI a proměnné se rozbalí za běhu.
Následující příklad nakonfiguruje továrnu AddRequestParameter
, která používá proměnnou:
[
{
"predicates": [
"Path=/api/{segment}"
],
"filters": [
"AddRequestParameter=foo, bar-{segment}"
]
}
]
AddResponseHeader
Továrna AddResponseHeader
přidá hlavičku do hlaviček podřízené odpovědi pro všechny odpovídající požadavky.
Tato továrna přijímá následující parametry konfigurace:
name
value
Následující příklad nakonfiguruje továrnu AddResponseHeader
, která přidá hlavičku X-Response-Red:Blue
do hlaviček podřízené odpovědi pro všechny odpovídající požadavky:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"AddResponseHeader=X-Response-Red, Blue"
]
}
]
Objekt AddResponseHeader
pro vytváření má přístup k proměnným identifikátoru URI, které se používají ke shodě cesty nebo hostitele. V hodnotě můžete použít proměnné identifikátoru URI a proměnné se rozbalí za běhu.
Následující příklad nakonfiguruje továrnu AddResponseHeader
, která používá proměnnou:
[
{
"predicates": [
"Path=/api/{segment}"
],
"filters": [
"AddResponseHeader=foo, bar-{segment}"
]
}
]
CircuitBreaker
Továrna CircuitBreaker
zabalí trasy do jističe.
Tato továrna přijímá následující parametry konfigurace:
-
name
: Název jističe. -
fallbackUri
: Přesměrujte identifikátor URI, který může být místní trasou nebo externí obslužnou rutinou. -
status codes
(volitelné): Dvojtečka oddělený seznam stavových kódů, které se mají shodovat, v číselném nebo textovém formátu. -
failure rate
(volitelné): Prahová hodnota, nad kterou se jistič otevře. Výchozí hodnota je 50 %. -
duration
(volitelné): Doba čekání před dalším zavřením. Výchozí hodnota je 60 sekund.
Následující příklad nakonfiguruje továrnu CircuitBreaker
:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"CircuitBreaker=myCircuitBreaker,forward:/inCaseOfFailureUseThis,401:NOT_FOUND:500,10,30s"
]
}
]
DeDupeResponseHeader
Továrna DeDupeResponseHeader
odebere duplicitní hodnoty hlaviček odpovědí.
Tato továrna přijímá následující parametry konfigurace:
-
name
: Seznam názvů záhlaví oddělených mezerami. -
strategy
(volitelné): Přijaté hodnoty jsouRETAIN_FIRST
,RETAIN_LAST
aRETAIN_UNIQUE
. Výchozí hodnota jeRETAIN_FIRST
.
Následující příklad nakonfiguruje továrnu DeDupeResponseHeader
, která odebere duplicitní hodnoty Access-Control-Allow-Credentials
hlaviček odpovědí a Access-Control-Allow-Origin
při přidání obou hodnot logikou CORS brány a podřízenou logikou:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"DeDupeResponseHeader=Access-Control-Allow-Credentials Access-Control-Allow-Origin"
]
}
]
Náhradní hlavičky
Továrna FallbackHeaders
přidá do hlavičky výjimku jističe. Tento filtr vyžaduje použití CircuitBreaker
filtru v jiné trase.
Pro tuto továrnu nejsou žádné parametry.
Následující příklad nakonfiguruje FallbackHeaders
objekt pro vytváření s typem výjimky, zprávou a (pokud je k dispozici) typ výjimky a zprávu, kterou FallbackHeaders
filtr přidá do požadavku:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"CircuitBreaker=myCircuitBreaker,forward:/inCaseOfFailureUseThis,401:NOT_FOUND:500,10,30s"
]
},
{
"predicates": [
"Path=/inCaseOfFailureUseThis"
],
"filters": [
"FallbackHeaders"
]
}
]
Názvy hlaviček v konfiguraci můžete přepsat nastavením hodnot následujících parametrů (uvedených s jejich výchozími hodnotami):
-
executionExceptionTypeHeaderName
("Execution-Exception-Type") -
executionExceptionMessageHeaderName
("Execution-Exception-Message") -
rootCauseExceptionTypeHeaderName
("Root-Cause-Exception-Type") -
rootCauseExceptionMessageHeaderName
("Root-Cause-Exception-Message")
JSONToGRPC
Továrna JSONToGRPCFilter
převede datovou část JSON na požadavek gRPC.
Tato továrna přijímá následující konfigurační parametr:
-
protoDescriptor
: Soubor proto popisovače.
Tento soubor můžete vygenerovat pomocí protoc
a zadáním příznaku --descriptor_set_out
, jak je znázorněno v následujícím příkladu:
protoc --proto_path=src/main/resources/proto/ \
--descriptor_set_out=src/main/resources/proto/hello.pb \
src/main/resources/proto/hello.proto
Poznámka:
Parametr streaming
není podporovaný.
Následující příklad nakonfiguruje továrnu JSONToGRPCFilter
pomocí výstupu z protoc
:
[
{
"predicates": [
"Path=/json/**"
],
"filters": [
"JsonToGrpc=file:proto/hello.pb,file:proto/hello.proto,HelloService,hello"
]
}
]
LocalResponseCache
Továrna LocalResponseCache
přepíše konfiguraci místní mezipaměti odpovědí pro konkrétní trasy při aktivaci globální mezipaměti.
Tato továrna přijímá následující parametry konfigurace:
-
size
: Maximální povolená velikost položek mezipaměti pro tuto trasu před zahájením vyřazení mezipaměti (v kB, MB a GB). -
timeToLive
: Povolená životnost vstupu do mezipaměti před vypršením platnosti. Použijte příponus
doby trvání pro sekundy,m
minuty neboh
hodiny.
Následující příklad nakonfiguruje továrnu LocalResponseCache
:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"LocalResponseCache=3m,1MB"
]
}
]
MapRequestHeader
Továrna MapRequestHeader
přidá do podřízeného požadavku hlavičku s aktualizovanými hodnotami z hlavičky příchozího požadavku HTTP.
Tato továrna přijímá následující parametry konfigurace:
fromHeader
toHeader
Tato továrna vytvoří novou pojmenovanou hlavičku (toHeader
) a hodnota se extrahuje z existující pojmenované hlavičky (fromHeader
) z příchozího požadavku HTTP. Pokud vstupní hlavička neexistuje, filtr nemá žádný vliv. Pokud nová pojmenovaná hlavička již existuje, její hodnoty se rozšíří o nové hodnoty.
Následující příklad nakonfiguruje továrnu MapRequestHeader
, která přidá hlavičku X-Request-Red:<values>
do podřízeného požadavku s aktualizovanými hodnotami z hlavičky příchozího Blue
požadavku HTTP:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"MapRequestHeader=Blue, X-Request-Red"
]
}
]
PrefixPath
Objekt PrefixPath
pro vytváření přidá předponu cesty všech požadavků.
Tato továrna přijímá následující konfigurační parametr:
prefix
Následující příklad nakonfiguruje továrnu PrefixPath
, která přidá předponu /api
do cesty všech požadavků, aby se požadavek /catalog
odeslal do /api/catalog
:
[
{
"predicates": [
"Path=/catalog/**"
],
"filters": [
"PrefixPath=/api"
]
}
]
PreserveHostHeader
Objekt PreserveHostHeader
pro vytváření nastaví atribut požadavku, který filtr směrování zkontroluje a určí, jestli se má odeslat původní hlavička hostitele nebo hlavička hostitele určená klientem HTTP.
Pro tuto továrnu nejsou žádné parametry.
Následující příklad nakonfiguruje továrnu PreserveHostHeader
:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"PreserveHostHeader"
]
}
]
RedirectTo
Továrna RedirectTo
přidá přesměrování na původní adresu URL.
Tato továrna přijímá následující parametry konfigurace:
-
status
: Kód HTTP přesměrování řady 300, například301
. -
url
: Hodnota hlavičkyLocation
. Musí to být platný identifikátor URI. Pro relativní přesměrování byste měli použíturi: no://op
jako identifikátor URI definice trasy.
Následující příklad nakonfiguruje továrnu RedirectTo
, která odešle stav 302
s hlavičkou Location:https://acme.org
pro přesměrování:
[
{
"uri": "https://example.org",
"filters": [
"RedirectTo=302, https://acme.org"
]
}
]
RemoveJsonAttributesResponseBody
Objekt RemoveJsonAttributesResponseBody
pro vytváření odebere atributy JSON a jejich hodnoty z těla odpovědí JSON.
Tato továrna přijímá následující parametry konfigurace:
-
attribute names
: Čárkami oddělený seznam názvů atributů, které se mají odebrat z odpovědi JSON. -
delete recursively
(volitelné, logická hodnota): Konfigurace, která odebere atributy pouze na kořenové úrovni (false
) nebo rekurzivně (true
). Výchozí hodnota jefalse
.
Následující příklad nakonfiguruje továrnu RemoveJsonAttributesResponseBody
:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RemoveJsonAttributesResponseBody=origin,foo,true"
]
}
]
RemoveRequestHeader
Objekt RemoveRequestHeader
pro vytváření odebere hlavičku z podřízeného požadavku.
Tato továrna přijímá následující konfigurační parametr:
-
name
: Název hlavičky, která se má odebrat.
Následující výpis nakonfiguruje továrnu RemoveRequestHeader
, která před odesláním podřízeného objektu odebere hlavičku X-Request-Foo
:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RemoveRequestHeader=X-Request-Foo"
]
}
]
RemoveRequestParameter
Objekt RemoveRequestParameter
pro vytváření odebere parametr před odesláním podřízeného objektu.
Tato továrna přijímá následující konfigurační parametr:
-
name
: Název parametru dotazu, který se má odebrat.
Následující příklad nakonfiguruje továrnu RemoveRequestParameter
, která odebere parametr před odesláním podřízeného objektu red
:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RemoveRequestParameter=red"
]
}
]
RemoveResponseHeader
Objekt RemoveResponseHeader
pro vytváření odebere hlavičku z odpovědi, než se vrátí klientovi brány.
Tato továrna přijímá následující konfigurační parametr:
-
name
: Název hlavičky, která se má odebrat.
Následující výpis nakonfiguruje továrnu RemoveResponseHeader
, která před vrácením do klienta brány odebere X-Response-Foo
hlavičku z odpovědi:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RemoveResponseHeader=X-Response-Foo"
]
}
]
RequestHeaderSize
Objekt RequestHeaderSize
pro vytváření určuje velikost hlavičky požadavku.
Tato továrna přijímá následující parametry konfigurace:
-
maxSize
: Maximální velikost dat povolená hlavičkou požadavku, včetně klíče a hodnoty. -
errorHeaderName
: Název hlavičky odpovědi obsahující chybovou zprávu. Ve výchozím nastavení jeerrorMessage
název hlavičky odpovědi .
Následující výpis nakonfiguruje továrnu RequestHeaderSize
, která odešle stav 431
, pokud je velikost hlavičky požadavku větší než 1 000 bajtů:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RequestHeaderSize=1000B"
]
}
]
PřepsáníLocationResponseHeader
Továrna RewriteLocationResponseHeader
upraví hodnotu Location
hlavičky odpovědi, obvykle kvůli odstranění podrobností specifických pro back-end.
Tato továrna přijímá následující parametry konfigurace:
stripVersionMode
: Tento parametr má následující možné hodnoty:NEVER_STRIP
,AS_IN_REQUEST
aALWAYS_STRIP
. Výchozí hodnota jeAS_IN_REQUEST
.-
NEVER_STRIP
: Verze se neodebrala, i když původní cesta požadavku neobsahuje žádnou verzi. -
AS_IN_REQUEST
: Verze se odstraní pouze v případě, že původní cesta požadavku neobsahuje žádnou verzi. -
ALWAYS_STRIP
: Verze se vždy odstraní, i když původní cesta požadavku obsahuje verzi.
-
hostValue
: Tento parametr slouží k nahrazeníhost:port
části hlavičky odpovědiLocation
při zadání. Pokud není zadaný, použije se hodnota hlavičkyHost
požadavku.protocolsRegex
: Platný regulární výrazString
, proti kterému se název protokolu shoduje. Pokud se neshoduje, filtr nefunguje. Výchozí hodnota jehttp|https|ftp|ftps
.locationHeaderName
Následující výpis konfiguruje továrnu RewriteLocationResponseHeader
:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RewriteLocationResponseHeader=AS_IN_REQUEST, Location, ,"
]
}
]
V tomto příkladu je hodnota hlavičky POST
object-service.prod.example.net/v2/some/object/id
api.example.com/some/object/name
Location
odpovědi přepsána jako .api.example.com/some/object/id
Přepsání cesty
Továrna RewritePath
používá regulární výrazy Java pro flexibilní způsob, jak přepsat cestu požadavku.
Tato továrna přijímá následující parametry konfigurace:
regexp
replacement
Následující výpis konfiguruje továrnu RewritePath
:
[
{
"predicates": [
"Path=/red/**"
],
"filters": [
"RewritePath=/red/?(?<segment>.*), /$\\{segment}"
]
}
]
V tomto příkladu pro cestu /red/blue
požadavku této konfigurace nastaví cestu před /blue
provedením podřízeného požadavku.
PřepsatResponseHeader
Továrna RewriteResponseHeader
používá regulární výrazy Java pro flexibilní způsob, jak přepsat hodnotu hlavičky odpovědi.
Tato továrna přijímá následující parametry konfigurace:
name
regexp
replacement
Následující příklad nakonfiguruje továrnu RewriteResponseHeader
:
[
{
"predicates": [
"Path=/red/**"
],
"filters": [
"RewriteResponseHeader=X-Response-Red, , password=[^&]+, password=***"
]
}
]
V tomto příkladu je pro hodnotu /42?user=ford&password=omg!what&flag=true
hlavičky nastavena konfigurace po /42?user=ford&password=***&flag=true
provedení podřízeného požadavku.
SetPath
Továrna SetPath
nabízí jednoduchý způsob, jak manipulovat s cestou požadavku tím, že umožňuje šablonované segmenty cesty. Tento filtr používá šablony URI z spring frameworku a umožňuje více odpovídajících segmentů.
Tato továrna přijímá následující konfigurační parametr:
template
Následující příklad nakonfiguruje továrnu SetPath
:
[
{
"predicates": [
"Path=/red/{segment}"
],
"filters": [
"SetPath=/{segment}"
]
}
]
V tomto příkladu pro cestu /red/blue
požadavku této konfigurace nastaví cestu před /blue
provedením podřízeného požadavku.
SetRequestHeader
Továrna SetRequestHeader
nahradí (místo přidávání) všechny hlavičky zadaným názvem.
Tato továrna přijímá následující parametry konfigurace:
name
value
Následující výpis konfiguruje továrnu SetRequestHeader
:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"SetRequestHeader=X-Request-Red, Blue"
]
}
]
V tomto příkladu odpověděl X-Request-Red:1234
podřízený server a nahradil ho .X-Request-Red:Blue
Objekt SetRequestHeader
pro vytváření má přístup k proměnným identifikátoru URI, které se používají ke shodě cesty nebo hostitele. V hodnotě můžete použít proměnné identifikátoru URI a proměnné se rozbalí za běhu.
Následující příklad nakonfiguruje továrnu SetRequestHeader
, která používá proměnnou:
[
{
"predicates": [
"Path=/api/{segment}"
],
"filters": [
"SetRequestHeader=foo, bar-{segment}"
]
}
]
SetResponseHeader
Továrna SetResponseHeader
nahradí (místo přidávání) všechny hlavičky zadaným názvem.
Tato továrna přijímá následující parametry konfigurace:
name
value
Následující výpis konfiguruje továrnu SetResponseHeader
:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"SetResponseHeader=X-Response-Red, Blue"
]
}
]
V tomto příkladu odpověděl X-Response-Red:1234
podřízený server a nahradil ho .X-Response-Red:Blue
Objekt SetResponseHeader
pro vytváření má přístup k proměnným identifikátoru URI, které se používají ke shodě cesty nebo hostitele. V hodnotě můžete použít proměnné identifikátoru URI a proměnné se rozbalí za běhu.
Následující příklad nakonfiguruje továrnu SetResponseHeader
, která používá proměnnou:
[
{
"predicates": [
"Path=/api/{segment}"
],
"filters": [
"SetResponseHeader=foo, bar-{segment}"
]
}
]
SetStatus
Továrna SetStatus
nakonfiguruje stav odpovědi požadavku serveru.
Tato továrna přijímá následující konfigurační parametr:
-
status
: Platná hodnota SpringHttpStatus
, která může celočíselnou hodnotu, například404
, nebo řetězcové vyjádření výčtu, napříkladNOT_FOUND
.
Následující výpis konfiguruje továrnu SetStatus
:
[
{
"predicates": [
"Path=/experimental/**"
],
"filters": [
"SetStatus=UNAUTHORIZED"
]
},
{
"predicates": [
"Path=/unknown/**"
],
"filters": [
"SetStatus=401"
]
}
]
StripPrefix
Objekt StripPrefix
pro vytváření odebere předponu z požadavku před odesláním podřízeného objektu.
Tato továrna přijímá následující konfigurační parametr:
-
parts
: Počet částí v cestě k prokládání z požadavku před odesláním podřízenosti. Výchozí hodnota je 1.
Následující příklad nakonfiguruje továrnu StripPrefix
:
[
{
"predicates": [
"Path=/name/**"
],
"filters": [
"StripPrefix=2"
]
}
]
V tomto příkladu se prostřednictvím brány provede požadavek na /name/blue/red
. Žádost, která nameservice
se zobrazí jako nameservice/red
.
Zkusit znovu
Továrna Retry
určuje počet pokusů o opakování.
Tato továrna přijímá následující parametry konfigurace:
-
retries
: Počet opakovaných pokusů, které by se měly pokusit. -
statuses
: Stavové kódy HTTP, které by se měly opakovat, reprezentované pomocíorg.springframework.http.HttpStatus
. -
methods
: Metody HTTP, které by se měly opakovat, reprezentované pomocíorg.springframework.http.HttpMethod
. -
series
: Série stavových kódů, které se mají opakovat, reprezentované pomocíorg.springframework.http.HttpStatus.Series
. -
exceptions
: Seznam vyvolaných výjimek, které by se měly opakovat. -
backoff
: Nakonfigurované exponenciální zpochybnění opakování. Opakování se provádí po intervalu zpětnéhofirstBackoff * (factor ^ n)
ukončení , kden
je iterace. PokudmaxBackoff
je nakonfigurováno, maximální použitý backoff je omezen namaxBackoff
. PokudbasedOnPreviousValue
je pravda, vypočítábackoff
se pomocíprevBackoff * factor
.
Pro filtr jsou nakonfigurované následující výchozí hodnoty, pokud je tato možnost povolená Retry
:
-
retries
:třikrát. -
series
: 5XX série. -
methods
: Metoda GET. -
exceptions
:IOException
aTimeoutException
. -
backoff
:invalidní.
Následující příklad nakonfiguruje továrnu Retry
:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"Retry=3,INTERNAL_SERVER_ERROR,GET,10ms,50ms,2,false"
]
}
]
RequestSize
Továrna RequestSize
může omezit přístup k podřízené službě, pokud je velikost požadavku větší než povolený limit.
Tato továrna přijímá následující konfigurační parametr:
-
maxSize
: TypDataSize
, ve kterém jsou hodnoty definovány jako číslo následované volitelnouDataUnit
příponou, napříkladKB
neboMB
. Výchozí hodnota přípony jeB
pro bajty. Jedná se o povolený limit velikosti požadavku definovaného v bajtech.
Následující příklad nakonfiguruje továrnu RequestSize
:
[
{
"predicates": [
"Path=/upload"
],
"filters": [
"RequestSize=5000000"
]
}
]
V tomto příkladu, když požadavek je odmítnut z důvodu velikosti, továrna RequestSize
nastaví stav odpovědi na 413 Payload Too Large
jinou hlavičku errorMessage
.
Následující příklad ukazuje errorMessage
:
errorMessage : Request size is larger than permissible limit. Request size is 6.0 MB where permissible limit is 5.0 MB
TokenRelay
Objekt TokenRelay
pro vytváření předává OAuth2
přístupový token podřízeným prostředkům. Tento filtr je nakonfigurovaný boolean
jako hodnota v definici trasy, nikoli jako explicitní filtr.
Následující příklad nakonfiguruje továrnu TokenRelay
:
[
{
"predicates": [
"Path=/api/**"
],
"tokenRelay": true
}
]
Použití komerčních filtrů
Spring Cloud Gateway pro Kubernetes také poskytuje mnoho vlastních GatewayFilter
továren. Následující části popisují tyto továrny.
AllowedRequestCookieCount
Továrna AllowedRequestCookieCount
určuje, jestli je možné pokračovat odpovídající žádostí na základě počtu souborů cookie.
Tato továrna přijímá následující konfigurační parametr:
-
amount
: Počet povolených souborů cookie.
Následující příklad nakonfiguruje továrnu AllowedRequestCookieCount
:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"AllowedRequestCookieCount=2"
]
}
]
AllowedRequestHeadersCount
Objekt AllowedRequestHeadersCount
pro vytváření určuje, jestli má odpovídající požadavek povoleno pokračovat na základě počtu hlaviček.
Tato továrna přijímá následující konfigurační parametr:
-
amount
: Počet povolených hlaviček.
Následující příklad nakonfiguruje továrnu AllowedRequestHeadersCount
:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"AllowedRequestHeadersCount=4"
]
}
]
AllowedRequestQueryParamsCount
Objekt AllowedRequestQueryParamsCount
pro vytváření určuje, jestli má odpovídající požadavek povoleno pokračovat na základě parametrů číselného dotazu.
Tato továrna přijímá následující konfigurační parametr:
-
amount
: Počet povolených parametrů.
Následující příklad nakonfiguruje továrnu AllowedRequestQueryParamsCount
:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"AllowedRequestQueryParamsCount=3"
]
}
]
Základní ověřování
Továrna BasicAuth
přidá hlavičku BasicAuth
Authorization
k žádostem.
Pro tuto továrnu nejsou žádné parametry.
Následující příklad nakonfiguruje továrnu BasicAuth
:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"BasicAuth"
]
}
]
ClaimHeader
Objekt ClaimHeader
pro vytváření kopíruje data z deklarace identity JWT do hlavičky HTTP.
Tato továrna přijímá následující parametry konfigurace:
-
Claim name
: Název deklarace identity rozlišující malá a velká písmena, která se mají předat. -
Header name
: Název hlavičky HTTP.
Následující příklad nakonfiguruje továrnu ClaimHeader
:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"ClaimHeader=sub,X-Claim-Sub"
]
}
]
ClientCertificateHeader
Továrna ClientCertificateHeader
ověří certifikát hlavičky X-Forwarded-Client-Cert
.
Tato továrna přijímá následující parametry konfigurace:
-
domain pattern
: HodnotaX-Forwarded-Client-Cert
podle schopnosti Kubernetes rozpoznat certifikační autoritu klientského certifikátu. -
certificate fingerprint
(volitelné): Otisk certifikátu TLS/SSL.
Následující příklad nakonfiguruje továrnu ClientCertificateHeader
:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"ClientCertificateHeader=*.example.com,sha-1:aa:bb:00:99"
]
}
]
Cors
Továrna Cors
aktivuje ověření CORS na trase.
Tato továrna přijímá následující konfigurační parametry uspořádané jako páry klíč-hodnota pro možnosti CORS:
allowedOrigins
allowedMethods
allowedHeaders
maxAge
allowCredentials
allowedOriginPatterns
Následující příklad nakonfiguruje továrnu Cors
:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"Cors=[allowedOrigins:https://origin-1,allowedMethods:GET;POST;DELETE,allowedHeaders:*,maxAge:400,allowCredentials:true,allowedOriginPatterns:https://*.test.com:8080]"
]
}
]
JsonToXml
Továrna JsonToXml
transformuje text odpovědi JSON na tělo odpovědi XML.
Tato továrna přijímá následující konfigurační parametr:
-
wrapper
: Název kořenové značky pro odpověď XML, pokud je k vygenerování platného KÓDU XML vyžadována jiná kořenová značka. Výchozí hodnota jeresponse
.
Následující příklad nakonfiguruje továrnu JsonToXml
:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"JsonToXml=custom-response"
]
}
]
RateLimit
Objekt RateLimit
pro vytváření určuje, jestli má odpovídající požadavek povoleno pokračovat na základě svazku požadavku.
Tato továrna přijímá následující parametry konfigurace:
-
request limit
: Maximální počet žádostí přijatých během okna. -
window duration
: Doba trvání okna v milisekundách. Alternativně můžete použíts
m
přípony neboh
, které určují dobu trvání v sekundách, minutách nebo hodinách. -
partition source
(volitelné): Umístění klíče oddílu (claim
,header
neboIPs
). -
partition key
(volitelné): Hodnota použitá k dělení čítačů požadavků.
Následující příklad nakonfiguruje továrnu RateLimit
:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RateLimit=1,10s"
]
}
]
Následující příklady ukazují další RateLimit
konfigurace:
RateLimit=1,10s
RateLimit=1,10s,{claim:client_id}
RateLimit=1,10s,{header:client_id}
RateLimit=2,10s,{IPs:2;127.0.0.1;192.168.0.1}
RestrictRequestHeaders
Objekt RestrictRequestHeaders
pro vytváření určuje, jestli má odpovídající požadavek povoleno pokračovat na základě hlaviček.
Pokud existují nějaká hlavička HTTP, která nejsou v konfiguraci bez rozlišování headerList
malých a malých písmen, vrátí se klientovi odpověď 431 Forbidden error
.
Tato továrna přijímá následující konfigurační parametr:
-
headerList
: Seznam názvů povolených hlaviček bez rozlišování malých a velkých písmen.
Následující příklad nakonfiguruje továrnu RestrictRequestHeaders
:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RestrictRequestHeaders=Content-Type,x-request-temp"
]
}
]
PřepsáníAllResponseHeaders
Továrna RewriteAllResponseHeaders
přepíše více hlaviček odpovědí najednou.
Tato továrna přijímá následující parametry konfigurace:
-
pattern to match
: Regulární výraz, který se má shodovat s hodnotami záhlaví. -
replacement
: Hodnota nahrazení.
Následující příklad nakonfiguruje továrnu RewriteAllResponseHeaders
:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RewriteAllResponseHeaders=\\d,0"
]
}
]
PřepsatResponseBody
Továrna RewriteResponseBody
upraví tělo odpovědi.
Tato továrna přijímá následující konfigurační parametry uspořádané jako čárkami oddělený seznam párů klíč-hodnota, kde každý pár přijímá formulář pattern to match:replacement
:
-
pattern to match
: Regulární výraz, který se má shodovat s textem v textu odpovědi. -
replacement
: Hodnota nahrazení.
Následující příklad nakonfiguruje továrnu RewriteResponseBody
:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RewriteResponseBody=foo:bar,/path-one/:/path-two/"
]
}
]
PřepsáníJsonAttributesResponseBody
Objekt RewriteJsonAttributesResponseBody
pro vytváření přepisuje atributy JSON pomocí JSONPath
zápisu.
Tato továrna přijímá následující konfigurační parametry uspořádané jako čárkami oddělený seznam párů klíč-hodnota, kde každý pár přijímá formulář jsonpath:replacement
:
-
jsonpath
: VýrazJSONPath
, který se má shodovat s textem odpovědi. -
replacement
: Hodnota nahrazení.
Následující příklad nakonfiguruje továrnu RewriteJsonAttributesResponseBody
:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RewriteJsonAttributesResponseBody=slides[1].title:Welcome,date:11-11-2022"
]
}
]
Role
Továrna Roles
autorizuje požadavky, které obsahují jednu z nakonfigurovaných rolí.
Tato továrna přijímá následující konfigurační parametr:
-
roles
: Čárkami oddělený seznam autorizovaných rolí.
Následující příklad nakonfiguruje továrnu Roles
:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"Roles=role_01,role_02"
]
}
]
Rozsahy
Továrna Scopes
autorizuje požadavky, které obsahují jeden z nakonfigurovaných OAuth
oborů.
Tato továrna přijímá následující konfigurační parametr:
-
scopes
: Čárkami oddělený seznam autorizovanýchOAuth
oborů.
Následující příklad nakonfiguruje továrnu Scopes
:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"Scopes=api.read,api.write,user"
]
}
]
StoreIpAddress
Továrna StoreIPAddress
se používá pouze pro vývoj rozšíření a v kontextu aplikace.
Tato továrna přijímá následující konfigurační parametr:
-
attribute name
: Název použitý k uložení IP adresy jako atributu výměny.
Následující příklad nakonfiguruje továrnu StoreIPAddress
:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"StoreIpAddress=ip"
]
}
]
Přihlášení přes jednotné přihlašování
Továrna SSO login
přesměruje na ověření, pokud neexistuje platný autorizační token. Tato továrna je nakonfigurovaná jako hodnota v definici trasy, nikoli jako boolean
explicitní filtr.
Následující příklad nakonfiguruje továrnu SSO login
:
[
{
"predicates": [
"Path=/api/**"
],
"ssoEnabled": true
}
]
StoreHeader
Objekt StoreHeader
pro vytváření ukládá hodnotu hlavičky v kontextu aplikace. Tento filtr se používá jenom pro vývoj rozšíření.
Tato továrna přijímá následující parametry konfigurace:
-
headers
: Seznam záhlaví, která chcete zkontrolovat. Použije se první nalezený. -
attribute name
: Název použitý k uložení hodnoty hlavičky jako atribut výměny.
Následující příklad nakonfiguruje továrnu StoreHeader
:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"StoreHeader=x-tracing-header,custom-id,x-custom-id,tracingParam"
]
}
]
XmlToJson
Továrna XmlToJson
transformuje tělo odpovědi XML na text odpovědi JSON.
Pro tuto továrnu nejsou žádné parametry.
Následující příklad nakonfiguruje továrnu XmlToJson
:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"XmlToJson"
]
}
]