VMware Spring Cloud Gateway útvonalszűrők használata az Azure Spring Apps Enterprise-csomaggal
Feljegyzés
Az Azure Spring Apps az Azure Spring Cloud szolgáltatás új neve. Bár a szolgáltatásnak új neve van, bizonyos helyeken a régi nevet fogja látni egy darabig, miközben az eszközök, például képernyőképek, videók és diagramok frissítésével dolgozunk.
Ez a cikk a következőre vonatkozik:❌ Basic/Standard ✔️ Enterprise
Ez a cikk bemutatja, hogyan használhatja a VMware Spring Cloud Gateway útvonalszűrőit az Azure Spring Apps Enterprise-csomaggal a kérések alkalmazásokhoz való átirányításához.
A VMware Spring Cloud Gateway egy kereskedelmi VMware Tanzu-összetevő, amely a nyílt forráskódú Spring Cloud Gateway-projekten alapul. A Spring Cloud Gateway kezeli az API-fejlesztői csapatok átfogó problémáit, például az egyszeri bejelentkezést (SSO), a hozzáférés-vezérlést, a sebességkorlátozást, a rugalmasságot, a biztonságot és egyebeket. Az API-teljesítést modern, natív felhőminták és az API-fejlesztéshez választott programozási nyelv használatával felgyorsíthatja.
A VMware Spring Cloud Gateway a következő funkciókat tartalmazza:
- Dinamikus útválasztási konfiguráció, független az egyes alkalmazásoktól, amelyek újrafordítás nélkül alkalmazhatók és módosíthatók.
- Kereskedelmi API-útvonalszűrők engedélyezett JSON-webjogkivonat (JWT) jogcímek alkalmazásszolgáltatásokba való továbbításához.
- Ügyféltanúsítvány-engedélyezés.
- Sebességkorlátozó megközelítések.
- Megszakító konfigurációja.
- Az alkalmazásszolgáltatások http-alapszintű hitelesítési hitelesítő adatokon keresztüli elérésének támogatása.
A VMware Tanzu API Portallal való integrálásához a VMware Spring Cloud Gateway automatikusan létrehozza az OpenAPI 3- es verziójának dokumentációját az útvonalkonfigurációk kiegészítése vagy módosítása után. További információ: A VMware Tanzu API-portáljának használata.
Előfeltételek
- Egy már kiépített Azure Spring Apps Enterprise-csomagszolgáltatás-példány, amelyen engedélyezve van a Spring Cloud Gateway. További információ : Rövid útmutató: Alkalmazások létrehozása és üzembe helyezése az Azure Spring Appsben a Nagyvállalati csomag használatával.
- Az Azure CLI 2.0.67-es vagy újabb verziója. Az Azure Spring Apps bővítmény telepítéséhez használja a következő parancsot:
az extension add --name spring
.
Szűrők használata
A Spring Cloud Gateway konfigurációjában szűrőkkel reagálhat az útvonalkonfiguráció bejövő vagy kimenő válaszára.
Egy szűrővel például hozzáadhat egy HTTP-fejlécet, vagy megtagadhatja a hozzáférést egy engedélyezési jogkivonat alapján.
Nyílt forráskód szűrők használata
A Spring Cloud Gateway OSS számos GatewayFilter
gyárat tartalmaz az útvonalak szűrőinek létrehozásához. A következő szakaszok ezeket a gyárakat írják le.
AddRequestHeader
A AddRequestHeader
gyár hozzáad egy fejlécet az alsóbb rétegbeli kérés fejléceihez az összes egyező kéréshez.
Ez a gyár a következő konfigurációs paramétereket fogadja el:
name
value
Az alábbi példa egy AddRequestHeader
olyan gyárat konfigurál, amely hozzáadja a fejlécet X-Request-red:blue
az alsóbb rétegbeli kérés fejléceihez az összes egyező kéréshez:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"AddRequestHeader=X-Request-red, blue"
]
}
]
A AddRequestHeader
gyár hozzáféréssel rendelkezik az elérési útnak vagy gazdagépnek megfelelő URI-változókhoz. Az értékben URI-változók használhatók, a változók pedig futásidőben lesznek kibontva.
Az alábbi példa egy AddRequestHeader
változót használó gyárat konfigurál:
[
{
"predicates": [
"Path=/api/{segment}"
],
"filters": [
"AddRequestHeader=X-Request-red, blue-{segment}"
]
}
]
AddRequestHeadersIfNotPresent
A AddRequestHeadersIfNotPresent
gyár fejléceket ad hozzá, ha nem szerepelnek az eredeti kérelemben.
Ez a gyár a következő konfigurációs paramétert fogadja el:
headers
: Kulcs-érték párok vesszővel tagolt listája (fejlécnév, fejlécérték).
Az alábbi példa egy AddRequestHeadersIfNotPresent
gyárat konfigurál:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"AddRequestHeadersIfNotPresent=Content-Type:application/json,Connection:keep-alive"
]
}
]
AddRequestParameter
Az AddRequestParameter
előállító hozzáad egy paramétert az alsóbb rétegbeli kérés lekérdezési sztringéhez az összes egyező kéréshez.
Ez a gyár a következő konfigurációs paramétereket fogadja el:
name
value
Az alábbi példa egy AddRequestParameter
olyan gyárat konfigurál, amely egy paramétert red=blue
ad hozzá az alsóbb rétegbeli kérés lekérdezési sztringéhez az összes egyező kéréshez:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"AddRequestParameter=red, blue"
]
}
]
A AddRequestParameter
gyár hozzáféréssel rendelkezik az elérési útnak vagy gazdagépnek megfelelő URI-változókhoz. Az értékben URI-változók használhatók, a változók pedig futásidőben lesznek kibontva.
Az alábbi példa egy AddRequestParameter
változót használó gyárat konfigurál:
[
{
"predicates": [
"Path=/api/{segment}"
],
"filters": [
"AddRequestParameter=foo, bar-{segment}"
]
}
]
AddResponseHeader
A AddResponseHeader
gyár hozzáad egy fejlécet az alsóbb rétegbeli válasz fejléceihez az összes egyező kéréshez.
Ez a gyár a következő konfigurációs paramétereket fogadja el:
name
value
Az alábbi példa egy AddResponseHeader
olyan gyárat konfigurál, amely fejlécet X-Response-Red:Blue
ad hozzá az alsóbb rétegbeli válasz fejléceihez az összes egyező kéréshez:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"AddResponseHeader=X-Response-Red, Blue"
]
}
]
A AddResponseHeader
gyár hozzáféréssel rendelkezik az elérési útnak vagy gazdagépnek megfelelő URI-változókhoz. Az értékben URI-változók használhatók, a változók pedig futásidőben lesznek kibontva.
Az alábbi példa egy AddResponseHeader
változót használó gyárat konfigurál:
[
{
"predicates": [
"Path=/api/{segment}"
],
"filters": [
"AddResponseHeader=foo, bar-{segment}"
]
}
]
CircuitBreaker
A CircuitBreaker
gyár egy áramkör-megszakítóba csomagolja az útvonalakat.
Ez a gyár a következő konfigurációs paramétereket fogadja el:
name
: Az áramkör-megszakító neve.fallbackUri
: Az átirányítási URI, amely lehet helyi útvonal vagy külső kezelő.status codes
(nem kötelező): Az egyeztetni kívánt állapotkódok kettőspontra tagolt listája szám- vagy szövegformátumban.failure rate
(nem kötelező): Az a küszöbérték, amely felett megnyílik az áramkör-megszakító. Az alapértelmezett érték 50%.duration
(nem kötelező): A várakozási idő, mielőtt újra bezárul. Az alapértelmezett érték 60 másodperc.
Az alábbi példa egy CircuitBreaker
gyárat konfigurál:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"CircuitBreaker=myCircuitBreaker,forward:/inCaseOfFailureUseThis,401:NOT_FOUND:500,10,30s"
]
}
]
DeDupeResponseHeader
Az DeDupeResponseHeader
előállító eltávolítja a válaszfejlécek ismétlődő értékeit.
Ez a gyár a következő konfigurációs paramétereket fogadja el:
name
: A fejlécnevek szóközzel elválasztott listája.strategy
(nem kötelező): Az elfogadott értékek a következőkRETAIN_FIRST
: ésRETAIN_UNIQUE
RETAIN_LAST
. Az alapértelmezett értékRETAIN_FIRST
.
Az alábbi példa egy DeDupeResponseHeader
olyan gyárat konfigurál, amely eltávolítja a duplikált értékeket Access-Control-Allow-Credentials
és Access-Control-Allow-Origin
a válaszfejléceket, amikor mindkét értéket hozzáadja az átjáró CORS-logikája és az alsóbb rétegbeli logika:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"DeDupeResponseHeader=Access-Control-Allow-Credentials Access-Control-Allow-Origin"
]
}
]
FallbackHeaders
A FallbackHeaders
gyár hozzáad minden megszakító kivételt egy fejléchez. Ehhez a szűrőhöz egy másik útvonalon kell használni a CircuitBreaker
szűrőt.
Ehhez a gyárhoz nincsenek paraméterek.
Az alábbi példa egy FallbackHeaders
olyan gyárat konfigurál, amely kivételtípussal, üzenettel és (ha elérhető) kiváltó ok kivételtípussal és üzenettel rendelkezik, amelyet a FallbackHeaders
szűrő hozzáad a kéréshez:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"CircuitBreaker=myCircuitBreaker,forward:/inCaseOfFailureUseThis,401:NOT_FOUND:500,10,30s"
]
},
{
"predicates": [
"Path=/inCaseOfFailureUseThis"
],
"filters": [
"FallbackHeaders"
]
}
]
Felülírhatja a konfigurációban lévő fejlécek nevét a következő paraméterek (az alapértelmezett értékekkel említett) értékének beállításával:
executionExceptionTypeHeaderName
("Execution-Exception-Type")executionExceptionMessageHeaderName
("Execution-Exception-Message")rootCauseExceptionTypeHeaderName
("Root-Cause-Exception-Type")rootCauseExceptionMessageHeaderName
("Root-Cause-Exception-Message")
JSONToGRPC
A JSONToGRPCFilter
gyár egy JSON hasznos adatát gRPC-kéréssé alakítja át.
Ez a gyár a következő konfigurációs paramétert fogadja el:
protoDescriptor
: Proto leíró fájl.
Ezt a fájlt a --descriptor_set_out
jelölő használatával protoc
és megadásával hozhatja létre, ahogyan az alábbi példában látható:
protoc --proto_path=src/main/resources/proto/ \
--descriptor_set_out=src/main/resources/proto/hello.pb \
src/main/resources/proto/hello.proto
Feljegyzés
A streaming
paraméter nem támogatott.
Az alábbi példa egy JSONToGRPCFilter
gyárat konfigurál a következő protoc
kimenettel:
[
{
"predicates": [
"Path=/json/**"
],
"filters": [
"JsonToGrpc=file:proto/hello.pb,file:proto/hello.proto,HelloService,hello"
]
}
]
LocalResponseCache
A LocalResponseCache
gyár felülbírálja a helyi válaszgyorsítótár konfigurációját adott útvonalakhoz a globális gyorsítótár aktiválásakor.
Ez a gyár a következő konfigurációs paramétereket fogadja el:
size
: Az útvonal gyorsítótár-bejegyzéseinek maximális megengedett mérete a gyorsítótár kiürítésének megkezdése előtt (KB, MB és GB formátumban).timeToLive
: A gyorsítótárbejegyzés lejárat előtti engedélyezett élettartama. Használja az időtartam utótagjáts
másodpercekre,m
percekre vagyh
órákra.
Az alábbi példa egy LocalResponseCache
gyárat konfigurál:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"LocalResponseCache=3m,1MB"
]
}
]
MapRequestHeader
Az MapRequestHeader
előállító hozzáad egy fejlécet az alsóbb rétegbeli kérelemhez a bejövő HTTP-kérés fejlécéből származó frissített értékekkel.
Ez a gyár a következő konfigurációs paramétereket fogadja el:
fromHeader
toHeader
Ez az előállító létrehoz egy új elnevezett fejlécet (toHeader
), és az értéket kinyeri egy meglévő elnevezett fejlécből (fromHeader
) a bejövő HTTP-kérelemből. Ha a bemeneti fejléc nem létezik, a szűrőnek nincs hatása. Ha az új elnevezett fejléc már létezik, az értékek az új értékekkel bővülnek.
Az alábbi példa egy MapRequestHeader
olyan gyárat konfigurál, amely hozzáadja a X-Request-Red:<values>
fejlécet az alsóbb rétegbeli kérelemhez a bejövő HTTP-kérés fejlécéből Blue
származó frissített értékekkel:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"MapRequestHeader=Blue, X-Request-Red"
]
}
]
PrefixPath
A PrefixPath
gyár egy előtagot ad hozzá az összes kérés útvonalához.
Ez a gyár a következő konfigurációs paramétert fogadja el:
prefix
Az alábbi példa egy PrefixPath
olyan gyárat konfigurál, amely hozzáadja az előtagot /api
az összes kérés útvonalához, hogy a rendszer elküldje a /catalog
kérést a következőnek /api/catalog
:
[
{
"predicates": [
"Path=/catalog/**"
],
"filters": [
"PrefixPath=/api"
]
}
]
PreserveHostHeader
A PreserveHostHeader
gyár beállít egy kérelemattribútumot, amelyet az útválasztási szűrő figyelembe véve határozza meg, hogy az eredeti gazdagépfejlécet vagy a HTTP-ügyfél által meghatározott gazdagépfejlécet küldi-e el.
Ehhez a gyárhoz nincsenek paraméterek.
Az alábbi példa egy PreserveHostHeader
gyárat konfigurál:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"PreserveHostHeader"
]
}
]
Átirányítás
A RedirectTo
gyár átirányítja az eredeti URL-címet.
Ez a gyár a következő konfigurációs paramétereket fogadja el:
status
: 300-as sorozatú átirányítási HTTP-kód, például301
.url
: A fejléc értékeLocation
. Érvényes URI-nak kell lennie. Relatív átirányítások esetén az útvonaldefiníció URI-jaként kell használniauri: no://op
.
Az alábbi példa egy RedirectTo
olyan gyárat konfigurál, amely egy fejlécet tartalmazó Location:https://acme.org
állapotot 302
küld átirányítás végrehajtására:
[
{
"uri": "https://example.org",
"filters": [
"RedirectTo=302, https://acme.org"
]
}
]
RemoveJsonAttributesResponseBody
A RemoveJsonAttributesResponseBody
gyár eltávolítja a JSON-attribútumokat és azok értékeit a JSON választestekből.
Ez a gyár a következő konfigurációs paramétereket fogadja el:
attribute names
: A JSON-válaszból eltávolítandó attribútumok vesszővel tagolt listája.delete recursively
(nem kötelező, logikai): Olyan konfiguráció, amely csak gyökérszinten (false
) vagy rekurzívan (true
) távolítja el az attribútumokat. Az alapértelmezett értékfalse
.
Az alábbi példa egy RemoveJsonAttributesResponseBody
gyárat konfigurál:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RemoveJsonAttributesResponseBody=origin,foo,true"
]
}
]
RemoveRequestHeader
A RemoveRequestHeader
gyár eltávolít egy fejlécet az alsóbb rétegbeli kérelemből.
Ez a gyár a következő konfigurációs paramétert fogadja el:
name
: Az eltávolítandó fejléc neve.
Az alábbi lista egy RemoveRequestHeader
olyan gyárat konfigurál, amely eltávolítja a X-Request-Foo
fejlécet az alsóbb rétegbeli küldés előtt:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RemoveRequestHeader=X-Request-Foo"
]
}
]
RemoveRequestParameter
A RemoveRequestParameter
gyár eltávolít egy paramétert, mielőtt továbbküldené.
Ez a gyár a következő konfigurációs paramétert fogadja el:
name
: Az eltávolítandó lekérdezési paraméter neve.
Az alábbi példa egy RemoveRequestParameter
olyan gyárat konfigurál, amely eltávolítja a red
paramétert, mielőtt továbbküldésre kerül:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RemoveRequestParameter=red"
]
}
]
RemoveResponseHeader
Az RemoveResponseHeader
előállító eltávolít egy fejlécet a válaszból, mielőtt visszakerül az átjáróügyfélre.
Ez a gyár a következő konfigurációs paramétert fogadja el:
name
: Az eltávolítandó fejléc neve.
Az alábbi lista egy RemoveResponseHeader
olyan gyárat konfigurál, amely eltávolítja a X-Response-Foo
fejlécet a válaszból, mielőtt visszakerül az átjáróügyfélre:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RemoveResponseHeader=X-Response-Foo"
]
}
]
RequestHeaderSize
A RequestHeaderSize
gyár határozza meg a kérelem fejlécének méretét.
Ez a gyár a következő konfigurációs paramétereket fogadja el:
maxSize
: A kérelemfejléc által megengedett maximális adatméret, beleértve a kulcsot és az értéket.errorHeaderName
: A hibaüzenetet tartalmazó válaszfejléc neve. Alapértelmezés szerint a válaszfejléc neve .errorMessage
Az alábbi lista egy RequestHeaderSize
olyan gyárat konfigurál, amely akkor küld állapotot 431
, ha a kérésfejléc mérete meghaladja az 1000 bájtot:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RequestHeaderSize=1000B"
]
}
]
RewriteLocationResponseHeader
A RewriteLocationResponseHeader
gyár módosítja a válaszfejléc értékét Location
, általában a háttérspecifikus részletek eltávolításához.
Ez a gyár a következő konfigurációs paramétereket fogadja el:
stripVersionMode
: Ez a paraméter a következő lehetséges értékekkel rendelkezik:NEVER_STRIP
,AS_IN_REQUEST
ésALWAYS_STRIP
. Az alapértelmezett értékAS_IN_REQUEST
.NEVER_STRIP
: A verzió nem lesz eltávolítva, még akkor sem, ha az eredeti kérelem elérési útja nem tartalmaz verziót.AS_IN_REQUEST
: A verzió csak akkor lesz eltávolítva, ha az eredeti kérelem elérési útja nem tartalmaz verziót.ALWAYS_STRIP
: A verzió mindig le van vetve, még akkor is, ha az eredeti kérelem elérési útja tartalmazza a verziót.
hostValue
: Ez a paraméter a válaszfejlécLocation
azon részének cseréjérehost:port
szolgál, amikor meg van adva. Ha nincs megadva, a kérelem fejlécénekHost
értékét használja a rendszer.protocolsRegex
: Érvényes regexString
, amelyhez a protokoll neve egyezik. Ha nincs megfeleltetve, a szűrő nem működik. Az alapértelmezett értékhttp|https|ftp|ftps
.locationHeaderName
A következő lista egy gyárat RewriteLocationResponseHeader
konfigurál:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RewriteLocationResponseHeader=AS_IN_REQUEST, Location, ,"
]
}
]
Ebben a példában a kérelemérték POST
api.example.com/some/object/name
esetében a Location
válasz fejlécének object-service.prod.example.net/v2/some/object/id
értéke újra lesz írva api.example.com/some/object/id
.
Átírásipath
A RewritePath
gyár Java reguláris kifejezéseket használ a kérési útvonal rugalmas átírásához.
Ez a gyár a következő konfigurációs paramétereket fogadja el:
regexp
replacement
A következő lista egy gyárat RewritePath
konfigurál:
[
{
"predicates": [
"Path=/red/**"
],
"filters": [
"RewritePath=/red/?(?<segment>.*), /$\\{segment}"
]
}
]
Ebben a példában a kérelem elérési útja /red/blue
esetén ez a konfiguráció beállítja az elérési utat /blue
az alsóbb rétegbeli kérés végrehajtása előtt.
RewriteResponseHeader
A RewriteResponseHeader
gyár Java-reguláris kifejezéseket használ a válaszfejléc értékének rugalmas átírásához.
Ez a gyár a következő konfigurációs paramétereket fogadja el:
name
regexp
replacement
Az alábbi példa egy RewriteResponseHeader
gyárat konfigurál:
[
{
"predicates": [
"Path=/red/**"
],
"filters": [
"RewriteResponseHeader=X-Response-Red, , password=[^&]+, password=***"
]
}
]
Ebben a példában egy fejlécérték /42?user=ford&password=omg!what&flag=true
esetében a konfiguráció az alsóbb rétegbeli kérés végrehajtása után lesz beállítva /42?user=ford&password=***&flag=true
.
SetPath
A SetPath
gyár egyszerű módot kínál a kérelem útvonalának módosítására az elérési út sablonalapú szegmenseinek engedélyezésével. Ez a szűrő a Spring Framework URI-sablonjait használja, és több egyező szegmenst is lehetővé tesz.
Ez a gyár a következő konfigurációs paramétert fogadja el:
template
Az alábbi példa egy SetPath
gyárat konfigurál:
[
{
"predicates": [
"Path=/red/{segment}"
],
"filters": [
"SetPath=/{segment}"
]
}
]
Ebben a példában a kérelem elérési útja /red/blue
esetén ez a konfiguráció beállítja az elérési utat /blue
az alsóbb rétegbeli kérés végrehajtása előtt.
SetRequestHeader
Az SetRequestHeader
előállító az összes fejlécet lecseréli (ahelyett, hogy hozzáadja) a megadott névre.
Ez a gyár a következő konfigurációs paramétereket fogadja el:
name
value
A következő lista egy gyárat SetRequestHeader
konfigurál:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"SetRequestHeader=X-Request-Red, Blue"
]
}
]
Ebben a példában az alsóbb rétegbeli kiszolgáló a következővel X-Request-Red:1234
válaszolt:X-Request-Red:Blue
A SetRequestHeader
gyár hozzáféréssel rendelkezik az elérési útnak vagy gazdagépnek megfelelő URI-változókhoz. Az értékben URI-változók használhatók, a változók pedig futásidőben lesznek kibontva.
Az alábbi példa egy SetRequestHeader
változót használó gyárat konfigurál:
[
{
"predicates": [
"Path=/api/{segment}"
],
"filters": [
"SetRequestHeader=foo, bar-{segment}"
]
}
]
SetResponseHeader
Az SetResponseHeader
előállító az összes fejlécet lecseréli (ahelyett, hogy hozzáadja) a megadott névre.
Ez a gyár a következő konfigurációs paramétereket fogadja el:
name
value
A következő lista egy gyárat SetResponseHeader
konfigurál:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"SetResponseHeader=X-Response-Red, Blue"
]
}
]
Ebben a példában az alsóbb rétegbeli kiszolgáló a következővel X-Response-Red:1234
válaszolt:X-Response-Red:Blue
A SetResponseHeader
gyár hozzáféréssel rendelkezik az elérési útnak vagy gazdagépnek megfelelő URI-változókhoz. Az értékben URI-változók használhatók, a változók pedig futásidőben lesznek kibontva.
Az alábbi példa egy SetResponseHeader
változót használó gyárat konfigurál:
[
{
"predicates": [
"Path=/api/{segment}"
],
"filters": [
"SetResponseHeader=foo, bar-{segment}"
]
}
]
SetStatus
Az SetStatus
előállító konfigurálja a kiszolgálókérés válaszállapotát.
Ez a gyár a következő konfigurációs paramétert fogadja el:
status
: Érvényes Spring-értékHttpStatus
, amely egész szám lehet, például404
, vagy az enumerálás sztring-ábrázolása, példáulNOT_FOUND
.
A következő lista egy gyárat SetStatus
konfigurál:
[
{
"predicates": [
"Path=/experimental/**"
],
"filters": [
"SetStatus=UNAUTHORIZED"
]
},
{
"predicates": [
"Path=/unknown/**"
],
"filters": [
"SetStatus=401"
]
}
]
StripPrefix
A StripPrefix
gyár eltávolítja az előtagot a kérésből, mielőtt továbbküldené azt.
Ez a gyár a következő konfigurációs paramétert fogadja el:
parts
: Az elérési út azon részeinek száma, hogy a kérést a továbbküldés előtt eltávolítsa. Az alapértelmezett érték 1.
Az alábbi példa egy StripPrefix
gyárat konfigurál:
[
{
"predicates": [
"Path=/name/**"
],
"filters": [
"StripPrefix=2"
]
}
]
Ebben a példában a kérés az átjárón keresztül történik./name/blue/red
A kérés a nameservice
következőként nameservice/red
jelenik meg: .
Retry
A Retry
gyár határozza meg az újrapróbálkozások számát.
Ez a gyár a következő konfigurációs paramétereket fogadja el:
retries
: A megkísérlendő újrapróbálkozási kísérletek száma.statuses
: Az újrapróbálkozott HTTP-állapotkódok, amelyeket a következővel kell jelölniorg.springframework.http.HttpStatus
: .methods
: Az újrapróbálkozott HTTP-metódusok, amelyeket a következővel kell jelölniorg.springframework.http.HttpMethod
: .series
: Az újrapróbálkozott állapotkódok sorozata, amelyet a következővelorg.springframework.http.HttpStatus.Series
jelöl: .exceptions
: Az újrapróbálkozott kivételek listája.backoff
: Az újrapróbálkozáshoz konfigurált exponenciális visszalépés. Az újrapróbálkozást a rendszer a visszalépési időközfirstBackoff * (factor ^ n)
után hajtja végre, aholn
az iteráció van. HamaxBackoff
konfigurálva van, a maximálisan alkalmazott visszalépés a következőre korlátozódikmaxBackoff
: . HabasedOnPreviousValue
igaz, a számítás abackoff
következővelprevBackoff * factor
történik: .
Ha engedélyezve van, a következő alapértelmezett beállítások vannak konfigurálva a Retry
szűrőhöz:
retries
:Háromszor.series
: 5XX sorozat.methods
: GET metódus.exceptions
:IOException
ésTimeoutException
.backoff
:Tiltva.
Az alábbi példa egy Retry
gyárat konfigurál:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"Retry=3,INTERNAL_SERVER_ERROR,GET,10ms,50ms,2,false"
]
}
]
RequestSize
A RequestSize
gyár korlátozhatja, hogy a kérelem elérje az alsóbb rétegbeli szolgáltatást, ha a kérelem mérete meghaladja a megengedett korlátot.
Ez a gyár a következő konfigurációs paramétert fogadja el:
maxSize
: OlyanDataSize
típus, amelyben az értékek számként vannak definiálva, majd egy választhatóDataUnit
utótag, példáulKB
vagyMB
. Az alapértelmezett utótagérték bájtokban vanB
. Ez a kérelem bájtban definiált megengedett méretkorlátja.
Az alábbi példa egy RequestSize
gyárat konfigurál:
[
{
"predicates": [
"Path=/upload"
],
"filters": [
"RequestSize=5000000"
]
}
]
Ebben a példában, ha a kérést a méret miatt elutasítják, a RequestSize
gyár a válasz állapotát 413 Payload Too Large
egy másik fejlécre errorMessage
állítja be.
Az alábbi példa egy errorMessage
:
errorMessage : Request size is larger than permissible limit. Request size is 6.0 MB where permissible limit is 5.0 MB
TokenRelay
A TokenRelay
gyár továbbít egy hozzáférési jogkivonatot OAuth2
az alsóbb rétegbeli erőforrásoknak. Ez a szűrő az útvonaldefinícióban értékként boolean
van konfigurálva, nem pedig explicit szűrőként.
Az alábbi példa egy TokenRelay
gyárat konfigurál:
[
{
"predicates": [
"Path=/api/**"
],
"tokenRelay": true
}
]
Kereskedelmi szűrők használata
A Kuberneteshez készült Spring Cloud Gateway számos egyéni GatewayFilter
gyárat is kínál. A következő szakaszok ezeket a gyárakat írják le.
AllowedRequestCookieCount
A AllowedRequestCookieCount
gyár a cookie-k száma alapján határozza meg, hogy engedélyezett-e egy egyeztetési kérelem folytatása.
Ez a gyár a következő konfigurációs paramétert fogadja el:
amount
: Az engedélyezett cookie-k száma.
Az alábbi példa egy AllowedRequestCookieCount
gyárat konfigurál:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"AllowedRequestCookieCount=2"
]
}
]
AllowedRequestHeadersCount
A AllowedRequestHeadersCount
gyár meghatározza, hogy a fejlécek száma alapján engedélyezve van-e egy egyező kérés folytatása.
Ez a gyár a következő konfigurációs paramétert fogadja el:
amount
: Az engedélyezett fejlécek száma.
Az alábbi példa egy AllowedRequestHeadersCount
gyárat konfigurál:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"AllowedRequestHeadersCount=4"
]
}
]
AllowedRequestQueryParamsCount
A AllowedRequestQueryParamsCount
gyár meghatározza, hogy a szám lekérdezési paraméterek alapján engedélyezve van-e egy egyező kérés folytatása.
Ez a gyár a következő konfigurációs paramétert fogadja el:
amount
: Az engedélyezett paraméterek száma.
Az alábbi példa egy AllowedRequestQueryParamsCount
gyárat konfigurál:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"AllowedRequestQueryParamsCount=3"
]
}
]
BasicAuth
A BasicAuth
gyár hozzáad egy fejlécet BasicAuth
Authorization
a kérésekhez.
Ehhez a gyárhoz nincsenek paraméterek.
Az alábbi példa egy BasicAuth
gyárat konfigurál:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"BasicAuth"
]
}
]
ClaimHeader
A ClaimHeader
gyár adatokat másol egy JWT-jogcímből egy HTTP-fejlécbe.
Ez a gyár a következő konfigurációs paramétereket fogadja el:
Claim name
: Az átadandó jogcím kis- és nagybetűs neve.Header name
: A HTTP-fejléc neve.
Az alábbi példa egy ClaimHeader
gyárat konfigurál:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"ClaimHeader=sub,X-Claim-Sub"
]
}
]
ClientCertificateHeader
Az ClientCertificateHeader
előállító ellenőrzi a fejléctanúsítványt X-Forwarded-Client-Cert
.
Ez a gyár a következő konfigurációs paramétereket fogadja el:
domain pattern
: AX-Forwarded-Client-Cert
Kubernetes azon képességének megfelelő érték, amely képes felismerni az ügyféltanúsítvány hitelesítésszolgáltatóját.certificate fingerprint
(nem kötelező): A TLS/SSL-tanúsítvány ujjlenyomata.
Az alábbi példa egy ClientCertificateHeader
gyárat konfigurál:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"ClientCertificateHeader=*.example.com,sha-1:aa:bb:00:99"
]
}
]
CORS
A Cors
gyár aktiválja a CORS-érvényesítéseket egy útvonalon.
Ez a gyár az alábbi konfigurációs paramétereket fogadja el, amelyek kulcs-érték párokként vannak rendszerezve a CORS-beállításokhoz:
allowedOrigins
allowedMethods
allowedHeaders
maxAge
allowCredentials
allowedOriginPatterns
Az alábbi példa egy Cors
gyárat konfigurál:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"Cors=[allowedOrigins:https://origin-1,allowedMethods:GET;POST;DELETE,allowedHeaders:*,maxAge:400,allowCredentials:true,allowedOriginPatterns:https://*.test.com:8080]"
]
}
]
JsonToXml
A JsonToXml
gyár a JSON-válasz törzsét XML-választörzsgé alakítja át.
Ez a gyár a következő konfigurációs paramétert fogadja el:
wrapper
: Az XML-válasz gyökércímkéje, ha egy másik gyökércímke szükséges az érvényes XML létrehozásához. Az alapértelmezett értékresponse
.
Az alábbi példa egy JsonToXml
gyárat konfigurál:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"JsonToXml=custom-response"
]
}
]
RateLimit
A RateLimit
gyár határozza meg, hogy egy egyező kérés folytatható-e a kérelemkötet alapján.
Ez a gyár a következő konfigurációs paramétereket fogadja el:
request limit
: Az ablakban elfogadott kérelmek maximális száma.window duration
: Az ablak időtartama ezredmásodpercben. Másik lehetőségként azs
,m
vagyh
utótagokkal megadhatja az időtartamot másodpercben, percben vagy órában.partition source
(nem kötelező): A partíciókulcs (claim
vagyheader
IPs
) helye.partition key
(nem kötelező): A kérelemszámlálók particionálásához használt érték.
Az alábbi példa egy RateLimit
gyárat konfigurál:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RateLimit=1,10s"
]
}
]
Az alábbi példák más RateLimit
konfigurációkat mutatnak be:
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
A RestrictRequestHeaders
gyár meghatározza, hogy a fejlécek alapján engedélyezve van-e egy egyező kérés folytatása.
Ha vannak olyan HTTP-fejlécek, amelyek nem szerepelnek a kis- és nagybetűk érzéketlen headerList
konfigurációjában, a rendszer 431 Forbidden error
választ ad vissza az ügyfélnek.
Ez a gyár a következő konfigurációs paramétert fogadja el:
headerList
: Az engedélyezett fejlécek nevének kis- és nagybetűs listája.
Az alábbi példa egy RestrictRequestHeaders
gyárat konfigurál:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RestrictRequestHeaders=Content-Type,x-request-temp"
]
}
]
RewriteAllResponseHeaders
A RewriteAllResponseHeaders
gyár egyszerre több válaszfejlécet is átír.
Ez a gyár a következő konfigurációs paramétereket fogadja el:
pattern to match
: A fejlécértékekkel egyező reguláris kifejezés.replacement
: A csereérték.
Az alábbi példa egy RewriteAllResponseHeaders
gyárat konfigurál:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RewriteAllResponseHeaders=\\d,0"
]
}
]
RewriteResponseBody
A RewriteResponseBody
gyár módosítja a válasz törzsét.
Ez a gyár a következő konfigurációs paramétereket fogadja el, amelyek a kulcs-érték párok vesszővel tagolt listájaként vannak rendszerezve, ahol minden pár elfogadja az űrlapot pattern to match:replacement
:
pattern to match
: A válasz törzsének szövegével egyező reguláris kifejezés.replacement
: A csereérték.
Az alábbi példa egy RewriteResponseBody
gyárat konfigurál:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RewriteResponseBody=foo:bar,/path-one/:/path-two/"
]
}
]
RewriteJsonAttributesResponseBody
A RewriteJsonAttributesResponseBody
gyár jelöléssel JSONPath
írja át a JSON-attribútumokat.
Ez a gyár a következő konfigurációs paramétereket fogadja el, amelyek a kulcs-érték párok vesszővel tagolt listájaként vannak rendszerezve, ahol minden pár elfogadja az űrlapot jsonpath:replacement
:
jsonpath
: AJSONPath
válasz törzsével egyező kifejezés.replacement
: A csereérték.
Az alábbi példa egy RewriteJsonAttributesResponseBody
gyárat konfigurál:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"RewriteJsonAttributesResponseBody=slides[1].title:Welcome,date:11-11-2022"
]
}
]
Szerepkörök
A Roles
gyár engedélyezi azokat a kéréseket, amelyek az egyik konfigurált szerepkört tartalmazzák.
Ez a gyár a következő konfigurációs paramétert fogadja el:
roles
: Az engedélyezett szerepkörök vesszővel tagolt listája.
Az alábbi példa egy Roles
gyárat konfigurál:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"Roles=role_01,role_02"
]
}
]
Hatókörök
A Scopes
gyár engedélyezi a konfigurált OAuth
hatókörök egyikét tartalmazó kérelmeket.
Ez a gyár a következő konfigurációs paramétert fogadja el:
scopes
: Az engedélyezettOAuth
hatókörök vesszővel tagolt listája.
Az alábbi példa egy Scopes
gyárat konfigurál:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"Scopes=api.read,api.write,user"
]
}
]
StoreIpAddress
A StoreIPAddress
gyár csak bővítményfejlesztéshez és az alkalmazás kontextusában használható.
Ez a gyár a következő konfigurációs paramétert fogadja el:
attribute name
: Az IP-cím exchange attribútumként való tárolására használt név.
Az alábbi példa egy StoreIPAddress
gyárat konfigurál:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"StoreIpAddress=ip"
]
}
]
Egyszeri bejelentkezés
A SSO login
gyár átirányítja a hitelesítést, ha nincs érvényes engedélyezési jogkivonat. Ez a gyár az útvonaldefinícióban értékként boolean
van konfigurálva, nem pedig explicit szűrőként.
Az alábbi példa egy SSO login
gyárat konfigurál:
[
{
"predicates": [
"Path=/api/**"
],
"ssoEnabled": true
}
]
StoreHeader
A StoreHeader
gyár egy fejlécértéket tárol az alkalmazás kontextusában. Ez a szűrő csak bővítményfejlesztéshez használható.
Ez a gyár a következő konfigurációs paramétereket fogadja el:
headers
: Az ellenőrizni kívánt fejlécek listája. A rendszer az első találtat használja.attribute name
: A fejléc értékének exchange attribútumként való tárolására használt név.
Az alábbi példa egy StoreHeader
gyárat konfigurál:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"StoreHeader=x-tracing-header,custom-id,x-custom-id,tracingParam"
]
}
]
XmlToJson
A XmlToJson
gyár az XML-válasz törzsét JSON-választörzsgé alakítja át.
Ehhez a gyárhoz nincsenek paraméterek.
Az alábbi példa egy XmlToJson
gyárat konfigurál:
[
{
"predicates": [
"Path=/api/**"
],
"filters": [
"XmlToJson"
]
}
]