简介
- Spring Cloud Gateway 建立在Spring Boot 2.x、Spring WebFlux和Project Reactor之上。因此,当您使用 Spring Cloud Gateway 时,您所知道的许多熟悉的同步库(例如 Spring Data 和 Spring Security)和模式可能并不适用。如果您不熟悉这些项目,我们建议您在使用 Spring Cloud Gateway 之前先阅读他们的文档以熟悉一些新概念。
- Spring Cloud Gateway 需要 Spring Boot 和 Spring Webflux 提供的 Netty 运行时。它不适用于传统的 Servlet 容器或构建为 WAR 时。
词汇表
- Route:网关的基本构建块。它由 ID、目标 URI、谓词集合和过滤器集合定义。如果聚合谓词为真,则匹配路由。
- Predicate:这是一个Java 8 函数谓词。输入类型是Spring Framework
ServerWebExchange。这使您可以匹配来自 HTTP 请求的任何内容,例如标头或参数。 - Filter
GatewayFilter:这些是使用特定工厂构建的实例。在这里,您可以在发送下游请求之前或之后修改请求和响应。
它是如何工作的
下图提供了 Spring Cloud Gateway 如何工作的:
客户端向 Spring Cloud Gateway 发出请求。如果网关处理程序映射确定请求与路由匹配,则将其发送到网关 Web 处理程序。此处理程序通过特定于请求的过滤器链运行请求。过滤器用虚线划分的原因是过滤器可以在发送代理请求之前和之后运行逻辑。执行所有“预”过滤器逻辑。然后发出代理请求。发出代理请求后,将运行“发布”过滤器逻辑。
路由过滤器
- 路由过滤器允许以某种方式修改传入的 HTTP 请求或传出的 HTTP 响应。路由过滤器的范围是特定的路由。Spring Cloud Gateway 包含许多内置的 GatewayFilter 工厂。
- AddRequestHeader
- AddRequestParameter
- AddResponseHeader
- DedupeResponseHeader
- PrefixPath
- PreserveHostHeader
- RemoveRequestHeader
- RemoveResponseHeader
- RemoveRequestParameter
- RewritePath
- SecureHeaders
- SetPath
- SetRequestHeader
- SetResponseHeader
- SetStatus
- StripPrefix
- ModifyRequestBody
- ModifyResponseBody
- CacheRequestBody
默认过滤器配置
要添加过滤器并将其应用于所有路由,您可以使用spring.cloud.gateway.default-filters. 此属性采用过滤器列表。以下清单定义了一组默认过滤器:
spring:
cloud:
gateway:
default-filters:
- AddResponseHeader=X-Response-Default-Red, Default-Blue
- PrefixPath=/httpbin
全局过滤器
该
GlobalFilter接口具有与 相同的签名GatewayFilter。这些是有条件地应用于所有路由的特殊过滤器。 当请求与路由匹配时,过滤 Web 处理程序会将 的所有实例GlobalFilter和所有特定于路由的实例添加GatewayFilter到过滤器链中。这个组合的过滤器链是按org.springframework.core.Ordered接口排序的,你可以通过实现getOrder()方法来设置。由于 Spring Cloud Gateway 区分过滤器逻辑执行的“前”和“后”阶段(请参阅它的工作原理),具有最高优先级的过滤器是“前”阶段的第一个和“后”阶段的最后一个 -阶段。
- ForwardRoutingFilter
- ReactiveLoadBalancerClientFilter
- NettyRoutingFilter
- NettyWriteResponseFilter
- RouteToRequestUrlFilter
- WebsocketRoutingFilter
Route Metadata 配置
spring:
cloud:
gateway:
routes:
- id: route_with_metadata
uri: https://example.org
metadata:
optionName: "OptionValue"
compositeObject:
name: "value"
iAmNumber: 1
Route route = exchange.getAttribute(GATEWAY_ROUTE_ATTR);
// get all metadata properties
route.getMetadata();
// get a single metadata property
route.getMetadata(someKey);
http client 超时配置
spring:
cloud:
gateway:
httpclient:
connect-timeout: 10000
response-timeout: 5s
服务发现 Route Definition Locator
-
您可以将网关配置为基于在
DiscoveryClient兼容服务注册表中注册的服务创建路由。要启用此功能,请设置spring.cloud.gateway.discovery.locator.enabled=true并确保DiscoveryClient实现在类路径上并启用。 -
默认情况下,网关为使用
DiscoveryClient. -
默认谓词是使用模式定义的路径谓词
/serviceId/**,其中serviceId是来自DiscoveryClient. -
默认过滤器是带有正则表达式
/serviceId/?(?<remaining>.*)和替换的重写路径过滤器/${remaining}。这会在请求被发送到下游之前从路径中去除服务ID。 -
如果要自定义
DiscoveryClient路由使用的谓词或过滤器,请设置spring.cloud.gateway.discovery.locator.predicates[x]和spring.cloud.gateway.discovery.locator.filters[y]。这样做时,如果要保留该功能,则需要确保包含前面显示的默认谓词和过滤器。以下示例显示了它的外观:
spring.cloud.gateway.discovery.locator.predicates[0].name: Path
spring.cloud.gateway.discovery.locator.predicates[0].args[pattern]: "'/'+serviceId+'/**'"
spring.cloud.gateway.discovery.locator.predicates[1].name: Host
spring.cloud.gateway.discovery.locator.predicates[1].args[pattern]: "'**.foo.com'"
spring.cloud.gateway.discovery.locator.filters[0].name: CircuitBreaker
spring.cloud.gateway.discovery.locator.filters[0].args[name]: serviceId
spring.cloud.gateway.discovery.locator.filters[1].name: RewritePath
spring.cloud.gateway.discovery.locator.filters[1].args[regexp]: "'/' + serviceId + '/?(?<remaining>.*)'"
spring.cloud.gateway.discovery.locator.filters[1].args[replacement]: "'/${remaining}'"
CORS 配置
配置网关来控制 CORS 行为。“全局” CORS 配置是 URL 模式到Spring FrameworkCorsConfiguration的映射。以下示例配置 CORS:
spring:
cloud:
gateway:
globalcors:
cors-configurations:
'[/**]':
allowedOrigins: "https://docs.spring.io"
allowedMethods:
- GET
要为某些网关路由谓词未处理的请求提供相同的 CORS 配置,请将
spring.cloud.gateway.globalcors.add-to-simple-url-handler-mapping属性设置为true. 当您尝试支持 CORS 预检请求并且您的路由谓词未评估为时,这很有用,true因为 HTTP 方法是options.
故障排除
- 日志级别调整为
DEBUG和TRACE org.springframework.cloud.gatewayorg.springframework.http.server.reactiveorg.springframework.web.reactiveorg.springframework.boot.autoconfigure.webreactor.nettyredisratelimiter
Reactor Netty
HttpClient可以HttpServer启用窃听。与将reactor.netty日志级别设置为DEBUG或结合使用时TRACE,它可以记录信息,例如通过网络发送和接收的标头和正文。要启用窃听,请分别为和设置spring.cloud.gateway.httpserver.wiretap=true或。spring.cloud.gateway.httpclient.wiretap=true``HttpServer``HttpClient
编写自定义 GatewayFilter 工厂
要编写GatewayFilter,您必须将其实现GatewayFilterFactory为 bean。您可以扩展一个名为AbstractGatewayFilterFactory. 以下示例显示了如何执行此操作:
@Component
public class PreGatewayFilterFactory extends AbstractGatewayFilterFactory<PreGatewayFilterFactory.Config> {
public PreGatewayFilterFactory() {
super(Config.class);
}
@Override
public GatewayFilter apply(Config config) {
// grab configuration from Config object
return (exchange, chain) -> {
//If you want to build a "pre" filter you need to manipulate the
//request before calling chain.filter
ServerHttpRequest.Builder builder = exchange.getRequest().mutate();
//use builder to manipulate the request
return chain.filter(exchange.mutate().request(builder.build()).build());
};
}
public static class Config {
//Put the configuration properties for your filter here
}
}
@Component
public class PostGatewayFilterFactory extends AbstractGatewayFilterFactory<PostGatewayFilterFactory.Config> {
public PostGatewayFilterFactory() {
super(Config.class);
}
@Override
public GatewayFilter apply(Config config) {
// grab configuration from Config object
return (exchange, chain) -> {
return chain.filter(exchange).then(Mono.fromRunnable(() -> {
ServerHttpResponse response = exchange.getResponse();
//Manipulate the response in some way
}));
};
}
public static class Config {
//Put the configuration properties for your filter here
}
}
编写自定义全局过滤器
要编写自定义全局过滤器,您必须GlobalFilter将接口实现为 bean。这会将过滤器应用于所有请求。
@Bean
public GlobalFilter customGlobalFilter() {
return (exchange, chain) -> exchange.getPrincipal()
.map(Principal::getName)
.defaultIfEmpty("Default User")
.map(userName -> {
//adds header to proxied request
exchange.getRequest().mutate().header("CUSTOM-REQUEST-HEADER", userName).build();
return exchange;
})
.flatMap(chain::filter);
}
@Bean
public GlobalFilter customGlobalPostFilter() {
return (exchange, chain) -> chain.filter(exchange)
.then(Mono.just(exchange))
.map(serverWebExchange -> {
//adds header to response
serverWebExchange.getResponse().getHeaders().set("CUSTOM-RESPONSE-HEADER",
HttpStatus.OK.equals(serverWebExchange.getResponse().getStatusCode()) ? "It worked": "It did not work");
return serverWebExchange;
})
.then();
}
附录 A:常见应用程序属性
可以在application.properties文件内、文件内application.yml或作为命令行开关指定各种属性。本附录提供了常见 Spring Cloud Gateway 属性的列表以及对使用它们的底层类的引用。
| 名称 | 默认 | 描述 | ||
|---|---|---|---|---|
| spring.cloud.gateway.default-filters | 应用于每个路由的过滤器定义列表。 | |||
| spring.cloud.gateway.discovery.locator.enabled | false | 启用 DiscoveryClient 网关集成的标志。 | ||
| spring.cloud.gateway.discovery.locator.filters | ||||
| spring.cloud.gateway.discovery.locator.include-expression | true | SpEL 表达式将评估是否在网关集成中包含服务,默认为:true。 | ||
| spring.cloud.gateway.discovery.locator.lower-case-service-id | false | 在谓词和过滤器中小写 serviceId 的选项,默认为 false。当它自动将 serviceId 大写时,它对 eureka 很有用。所以 MYSERIVCE,将匹配 /myservice/** | ||
| spring.cloud.gateway.discovery.locator.predicates | ||||
| spring.cloud.gateway.discovery.locator.route-id-prefix | routeId 的前缀,默认为 discoveryClient.getClass().getSimpleName() + "_"。将附加服务 ID 以创建 routeId。 | |||
| spring.cloud.gateway.discovery.locator.url-expression | 'lb://'+serviceId | 为每个路由创建 uri 的 SpEL 表达式,默认为:'lb://'+serviceId。 | ||
| spring.cloud.gateway.enabled | true | 启用网关功能。 | ||
| spring.cloud.gateway.fail-on-route-definition-error | true | 路由定义错误失败的选项,默认为 true。否则,将记录警告。 | ||
| spring.cloud.gateway.filter.add-request-header.enabled | true | 启用 add-request-header 过滤器。 | ||
| spring.cloud.gateway.filter.add-request-parameter.enabled | true | 启用添加请求参数过滤器。 | ||
| spring.cloud.gateway.filter.add-response-header.enabled | true | 启用 add-response-header 过滤器。 | ||
| spring.cloud.gateway.filter.circuit-breaker.enabled | true | 启用断路器滤波器。 | ||
| spring.cloud.gateway.filter.dedupe-response-header.enabled | true | 启用 dedupe-response-header 过滤器。 | ||
| spring.cloud.gateway.filter.fallback-headers.enabled | true | 启用 fallback-headers 过滤器。 | ||
| spring.cloud.gateway.filter.hystrix.enabled | true | 启用 hystrix 过滤器。 | ||
| spring.cloud.gateway.filter.map-request-header.enabled | true | 启用 map-request-header 过滤器。 | ||
| spring.cloud.gateway.filter.modify-request-body.enabled | true | 启用 modify-request-body 过滤器。 | ||
| spring.cloud.gateway.filter.modify-response-body.enabled | true | 启用 modify-response-body 过滤器。 | ||
| spring.cloud.gateway.filter.prefix-path.enabled | true | 启用前缀路径过滤器。 | ||
| spring.cloud.gateway.filter.preserve-host-header.enabled | true | 启用 preserve-host-header 过滤器。 | ||
| spring.cloud.gateway.filter.redirect-to.enabled | true | 启用重定向到过滤器。 | ||
| spring.cloud.gateway.filter.remove-hop-by-hop.headers | ||||
| spring.cloud.gateway.filter.remove-hop-by-hop.order | ||||
| spring.cloud.gateway.filter.remove-request-header.enabled | true | 启用 remove-request-header 过滤器。 | ||
| spring.cloud.gateway.filter.remove-request-parameter.enabled | true | 启用删除请求参数过滤器。 | ||
| spring.cloud.gateway.filter.remove-response-header.enabled | true | 启用 remove-response-header 过滤器。 | ||
| spring.cloud.gateway.filter.request-header-size.enabled | true | 启用 request-header-size 过滤器。 | ||
| spring.cloud.gateway.filter.request-header-to-request-uri.enabled | true | 启用 request-header-to-request-uri 过滤器。 | ||
| spring.cloud.gateway.filter.request-rate-limiter.deny-empty-key | true | 如果 Key Resolver 返回一个空键,则切换到拒绝请求,默认为 true。 | ||
| spring.cloud.gateway.filter.request-rate-limiter.empty-key-status-code | 当 denyEmptyKey 为 true 时返回 HttpStatus,默认为 FORBIDDEN。 | |||
| spring.cloud.gateway.filter.request-rate-limiter.enabled | true | 启用请求速率限制器过滤器。 | ||
| spring.cloud.gateway.filter.request-size.enabled | true | 启用请求大小过滤器。 | ||
| spring.cloud.gateway.filter.retry.enabled | true | 启用重试过滤器。spring.cloud.gateway.filter.rewrite-location-response-header.enabled | true | 启用 rewrite-location-response-header 过滤器。 |
| spring.cloud.gateway.filter.rewrite-location.enabled | true | 启用重写位置过滤器。 | ||
| spring.cloud.gateway.filter.rewrite-path.enabled | true | 启用重写路径过滤器。 | ||
| spring.cloud.gateway.filter.rewrite-response-header.enabled | true | 启用 rewrite-response-header 过滤器。 | ||
| spring.cloud.gateway.filter.save-session.enabled | true | 启用保存会话过滤器。 | ||
| spring.cloud.gateway.filter.secure-headers.content-security-policy | default-src 'self' https:; font-src 'self' https: data:; img-src 'self' https: data:; object-src 'none'; script-src https:; style-src 'self' https: 'unsafe-inline' | |||
| spring.cloud.gateway.filter.secure-headers.content-type-options | nosniff | |||
| spring.cloud.gateway.filter.secure-headers.disable | ||||
| spring.cloud.gateway.filter.secure-headers.download-options | noopen | |||
| spring.cloud.gateway.filter.secure-headers.enabled | true | 启用安全标头过滤器。 | ||
| spring.cloud.gateway.filter.secure-headers.frame-options | DENY | |||
| spring.cloud.gateway.filter.secure-headers.permitted-cross-domain-policies | none | |||
| spring.cloud.gateway.filter.secure-headers.referrer-policy | no-referrer | |||
| spring.cloud.gateway.filter.secure-headers.strict-transport-security | max-age=631138519 | |||
| spring.cloud.gateway.filter.secure-headers.xss-protection-header | 1 ; mode=block | |||
| spring.cloud.gateway.filter.set-path.enabled | true | 启用设置路径过滤器。 | ||
| spring.cloud.gateway.filter.set-request-header.enabled | true | 启用 set-request-header 过滤器。 | ||
| spring.cloud.gateway.filter.set-request-host-header.enabled | true | 启用 set-request-host-header 过滤器。 | ||
| spring.cloud.gateway.filter.set-response-header.enabled | true | 启用 set-response-header 过滤器。 | ||
| spring.cloud.gateway.filter.set-status.enabled | true | 启用设置状态过滤器。 | ||
| spring.cloud.gateway.filter.strip-prefix.enabled | true | 启用带前缀过滤器。 | ||
| spring.cloud.gateway.forwarded.enabled | true | 启用 ForwardedHeadersFilter。 | ||
| spring.cloud.gateway.global-filter.adapt-cached-body.enabled | true | 启用 adapt-cached-body 全局过滤器。 | ||
| spring.cloud.gateway.global-filter.forward-path.enabled | true | 启用正向路径全局过滤器。spring.cloud.gateway.global-filter.forward-routing.enabled | true | 启用转发路由全局过滤器。 |
| spring.cloud.gateway.global-filter.load-balancer-client.enabled | true | 启用负载平衡器客户端全局过滤器。 | ||
| spring.cloud.gateway.global-filter.netty-routing.enabled | true | 启用 netty-routing 全局过滤器。 | ||
| spring.cloud.gateway.global-filter.netty-write-response.enabled | true | 启用 netty-write-response 全局过滤器。 | ||
| spring.cloud.gateway.global-filter.reactive-load-balancer-client.enabled | true | 启用 reactive-load-balancer-client 全局过滤器。 | ||
| spring.cloud.gateway.global-filter.remove-cached-body.enabled | true | 启用 remove-cached-body 全局过滤器。 | ||
| spring.cloud.gateway.global-filter.route-to-request-url.enabled | true | 启用 route-to-request-url 全局过滤器。 | ||
| spring.cloud.gateway.global-filter.websocket-routing.enabled | true | 启用 websocket-routing 全局过滤器。 | ||
| spring.cloud.gateway.globalcors.add-to-simple-url-handler-mapping | false | 如果应将全局 CORS 配置添加到 URL 处理程序。 | ||
| spring.cloud.gateway.globalcors.cors-configurations | ||||
| spring.cloud.gateway.httpclient.compression | false | 为 Netty HttpClient 启用压缩。 | ||
| spring.cloud.gateway.httpclient.connect-timeout | 以毫秒为单位的连接超时,默认为 45 秒。 | |||
| spring.cloud.gateway.httpclient.max-header-size | 最大响应标头大小。 | |||
| spring.cloud.gateway.httpclient.max-initial-line-length | 最大初始行长度。 | |||
| spring.cloud.gateway.httpclient.pool.acquire-timeout | 仅对于 FIXED 类型,等待获取的最长时间(以毫秒为单位)。 | |||
| spring.cloud.gateway.httpclient.pool.eviction-interval | 0 | 以指定的时间间隔在后台执行定期驱逐检查。默认禁用({@link Duration#ZERO}) | ||
| spring.cloud.gateway.httpclient.pool.max-connections | 仅对于 FIXED 类型,在开始对现有连接进行挂起获取之前的最大连接数。 | |||
| spring.cloud.gateway.httpclient.pool.max-idle-time | 通道关闭之前的毫秒时间。如果为 NULL,则没有最大空闲时间。 | |||
| spring.cloud.gateway.httpclient.pool.max-life-time | 通道关闭的持续时间。如果为 NULL,则没有最大生命周期。 | |||
| spring.cloud.gateway.httpclient.pool.metrics | false | 允许在 Micrometer 中收集和注册通道池指标。默认禁用。 | ||
| spring.cloud.gateway.httpclient.pool.name | proxy | 通道池映射名称,默认为代理。 | ||
| spring.cloud.gateway.httpclient.pool.type | HttpClient 使用的池类型,默认为 ELASTIC。 | |||
| spring.cloud.gateway.httpclient.proxy.host | Netty HttpClient 的代理配置的主机名。 | |||
| spring.cloud.gateway.httpclient.proxy.non-proxy-hosts-pattern | 配置的主机列表的正则表达式 (Java)。应该直接到达,绕过代理 | |||
| spring.cloud.gateway.httpclient.proxy.password | Netty HttpClient 的代理配置密码。 | |||
| spring.cloud.gateway.httpclient.proxy.port | Netty HttpClient 的代理配置端口。 | |||
| spring.cloud.gateway.httpclient.proxy.type | 用于 Netty HttpClient 的代理配置的 proxyType。 | |||
| spring.cloud.gateway.httpclient.proxy.username | Netty HttpClient 的代理配置用户名。 | |||
| spring.cloud.gateway.httpclient.response-timeout | 响应超时。 | |||
| spring.cloud.gateway.httpclient.ssl.close-notify-flush-timeout | 3000ms | SSL close_notify 刷新超时。默认为 3000 毫秒。 | ||
| spring.cloud.gateway.httpclient.ssl.close-notify-read-timeout | 0 | SSL close_notify 读取超时。默认为 0 毫秒。 | ||
| spring.cloud.gateway.httpclient.ssl.default-configuration-type | 默认的 ssl 配置类型。默认为 TCP。 | |||
| spring.cloud.gateway.httpclient.ssl.handshake-timeout | 10000ms | SSL 握手超时。默认为 10000 毫秒 | ||
| spring.cloud.gateway.httpclient.ssl.key-password | 密钥密码,默认与 keyStorePassword 相同。 | |||
| spring.cloud.gateway.httpclient.ssl.key-store | Netty HttpClient 的密钥库路径。 | |||
| spring.cloud.gateway.httpclient.ssl.key-store-password | 密钥库密码。 | |||
| spring.cloud.gateway.httpclient.ssl.key-store-provider | Netty HttpClient 的密钥库提供程序,可选字段。spring.cloud.gateway.httpclient.ssl.key-store-type | JKS | Netty HttpClient 的密钥库类型,默认为 JKS。 | |
| spring.cloud.gateway.httpclient.ssl.trusted-x509-certificates | 用于验证远程端点证书的可信证书。 | |||
| spring.cloud.gateway.httpclient.ssl.use-insecure-trust-manager | false | 安装 netty InsecureTrustManagerFactory。这是不安全的,不适合生产。 | ||
| spring.cloud.gateway.httpclient.websocket.max-frame-payload-length | 最大帧有效载荷长度。 | |||
| spring.cloud.gateway.httpclient.websocket.proxy-ping | true | 代理 ping 帧到下游服务,默认为 true。 | ||
| spring.cloud.gateway.httpclient.wiretap | false | 为 Netty HttpClient 启用窃听调试。 | ||
| spring.cloud.gateway.httpserver.wiretap | false | 启用 Netty HttpServer 的窃听调试。 | ||
| spring.cloud.gateway.loadbalancer.use404 | false | |||
| spring.cloud.gateway.metrics.enabled | false | 启用指标数据的收集。 | ||
| spring.cloud.gateway.metrics.prefix | spring.cloud.gateway | 网关发出的所有指标的前缀。 | ||
| spring.cloud.gateway.metrics.tags | 添加到指标的标签映射。 | |||
| spring.cloud.gateway.predicate.after.enabled | true | 启用 after 谓词。 | ||
| spring.cloud.gateway.predicate.before.enabled | true | 启用 before 谓词。 | ||
| spring.cloud.gateway.predicate.between.enabled | true | 启用 between 谓词。 | ||
| spring.cloud.gateway.predicate.cloud-foundry-route-service.enabled | true | 启用 cloud-foundry-route-service 谓词。 | ||
| spring.cloud.gateway.predicate.cookie.enabled | true | 启用 cookie 谓词。 | ||
| spring.cloud.gateway.predicate.header.enabled | true | 启用标头谓词。 | ||
| spring.cloud.gateway.predicate.host.enabled | true | 启用主机谓词。 | ||
| spring.cloud.gateway.predicate.method.enabled | true | 启用方法谓词。 | ||
| spring.cloud.gateway.predicate.path.enabled | true | 启用路径谓词。 | ||
| spring.cloud.gateway.predicate.query.enabled | true | 启用查询谓词。 | ||
| spring.cloud.gateway.predicate.read-body.enabled | true | 启用读取正文谓词。 | ||
| spring.cloud.gateway.predicate.remote-addr.enabled | true | 启用 remote-addr 谓词。 | ||
| spring.cloud.gateway.predicate.weight.enabled | true | 启用权重谓词。 | ||
| spring.cloud.gateway.redis-rate-limiter.burst-capacity-header | X-RateLimit-Burst-Capacity | 返回突增容量配置的标头名称。 | ||
| spring.cloud.gateway.redis-rate-limiter.config | ||||
| spring.cloud.gateway.redis-rate-limiter.include-headers | true | 是否包含包含速率限制器信息的标头,默认为 true。 | ||
| spring.cloud.gateway.redis-rate-limiter.remaining-header | X-RateLimit-Remaining | 返回当前秒内剩余请求数的标头的名称。 | ||
| spring.cloud.gateway.redis-rate-limiter.replenish-rate-header | X-RateLimit-Replenish-Rate | 返回补货率配置的标头名称。 | ||
| spring.cloud.gateway.redis-rate-limiter.requested-tokens-header | X-RateLimit-Requested-Tokens | 返回请求的令牌配置的标头的名称。 | ||
| spring.cloud.gateway.routes | 路线列表。spring.cloud.gateway.set-status.original-status-header-name | 包含代理请求的 http 代码的标头的名称。 | ||
| spring.cloud.gateway.streaming 媒体类型 | ||||
| spring.cloud.gateway.x-forwarded.enabled | true | 如果启用了 XForwardedHeadersFilter。 | ||
| spring.cloud.gateway.x-forwarded.for-append | true | 如果启用将 X-Forwarded-For 作为列表附加。 | ||
| spring.cloud.gateway.x-forwarded.for-enabled | true | 如果启用了 X-Forwarded-For。 | ||
| spring.cloud.gateway.x-forwarded.host-append | true | 如果启用将 X-Forwarded-Host 作为列表附加。 | ||
| spring.cloud.gateway.x-forwarded.host-enabled | true | 如果启用了 X-Forwarded-Host。 | ||
| spring.cloud.gateway.x-forwarded.order | 0 | XForwardedHeadersFilter 的顺序。 | ||
| spring.cloud.gateway.x-forwarded.port-append | true | 如果启用将 X-Forwarded-Port 作为列表附加。 | ||
| spring.cloud.gateway.x-forwarded.port-enabled | true | 如果启用了 X-Forwarded-Port。 | ||
| spring.cloud.gateway.x-forwarded.prefix-append | true | 如果启用将 X-Forwarded-Prefix 作为列表附加。 | ||
| spring.cloud.gateway.x-forwarded.prefix-enabled | true | 如果启用了 X-Forwarded-Prefix。 | ||
| spring.cloud.gateway.x-forwarded.proto-append | true | 如果启用将 X-Forwarded-Proto 作为列表附加。 | ||
| spring.cloud.gateway.x-forwarded.proto-enabled | true | 如果启用了 X-Forwarded-Proto。 |