常见应用程序属性

可以在 `application.properties` 文件、`application.yml` 文件中或作为命令行开关指定各种属性。本附录列出了常见的 Spring Cloud Gateway 属性以及引用这些属性的底层类。

属性贡献可能来自 classpath 中的其他 jar 文件,因此不应将此列表视为详尽列表。此外,您可以定义自己的属性。
名称 默认值 描述

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

将 predicates 和 filters 中的 serviceId 转换为小写的选项,默认为 false。在使用 eureka 时很有用,因为它会自动将 serviceId 转换为大写。因此 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

启用 add-request-parameter 过滤器。

spring.cloud.gateway.filter.add-response-header.enabled

true

启用 add-response-header 过滤器。

spring.cloud.gateway.filter.circuit-breaker.enabled

true

启用 circuit-breaker 过滤器。

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.json-to-grpc.enabled

true

启用 JSON 到 gRPC 过滤器。

spring.cloud.gateway.filter.local-response-cache.enabled

false

启用 local-response-cache 过滤器。

spring.cloud.gateway.filter.local-response-cache.request.no-cache-strategy

skip-update-cache-entry

spring.cloud.gateway.filter.local-response-cache.size

该路由缓存的最大大小,用于逐出条目(以 KB、MB 和 GB 为单位)。

spring.cloud.gateway.filter.local-response-cache.time-to-live

5m

缓存条目的过期时间(以 s 代表秒,m 代表分钟,h 代表小时)。

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

启用 prefix-path 过滤器。

spring.cloud.gateway.filter.preserve-host-header.enabled

true

启用 preserve-host-header 过滤器。

spring.cloud.gateway.filter.redirect-to.enabled

true

启用 redirect-to 过滤器。

spring.cloud.gateway.filter.remove-hop-by-hop.headers

spring.cloud.gateway.filter.remove-hop-by-hop.order

0

spring.cloud.gateway.filter.remove-request-header.enabled

true

启用 remove-request-header 过滤器。

spring.cloud.gateway.filter.remove-request-parameter.enabled

true

启用 remove-request-parameter 过滤器。

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.default-key-resolver

spring.cloud.gateway.filter.request-rate-limiter.default-rate-limiter

spring.cloud.gateway.filter.request-rate-limiter.enabled

true

启用 request-rate-limiter 过滤器。

spring.cloud.gateway.filter.request-size.enabled

true

启用 request-size 过滤器。

spring.cloud.gateway.filter.retry.enabled

true

启用 retry 过滤器。

spring.cloud.gateway.filter.rewrite-location-response-header.enabled

true

启用 rewrite-location-response-header 过滤器。

spring.cloud.gateway.filter.rewrite-location.enabled

true

启用 rewrite-location 过滤器。

spring.cloud.gateway.filter.rewrite-path.enabled

true

启用 rewrite-path 过滤器。

spring.cloud.gateway.filter.rewrite-request-parameter.enabled

true

启用 rewrite-request-parameter 过滤器。

spring.cloud.gateway.filter.rewrite-response-header.enabled

true

启用 rewrite-response-header 过滤器。

spring.cloud.gateway.filter.save-session.enabled

true

启用 save-session 过滤器。

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

启用 secure-headers 过滤器。

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

启用 set-path 过滤器。

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

启用 set-status 过滤器。

spring.cloud.gateway.filter.strip-prefix.enabled

true

启用 strip-prefix 过滤器。

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

启用 forward-path 全局过滤器。

spring.cloud.gateway.global-filter.forward-routing.enabled

true

启用 forward-routing 全局过滤器。

spring.cloud.gateway.global-filter.load-balancer-client.enabled

true

启用 load-balancer-client 全局过滤器。

spring.cloud.gateway.global-filter.local-response-cache.enabled

true

为所有路由启用 local-response-cache 过滤器,允许使用 LocalResponseCache 过滤器在路由级别添加特定配置。

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.handler-mapping.order

1

RoutePredicateHandlerMapping 的顺序。

spring.cloud.gateway.httpclient.compression

false

为 Netty HttpClient 启用压缩。

spring.cloud.gateway.httpclient.connect-timeout

连接超时时间(毫秒),默认为 30 秒。

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.leasing-strategy

fifo

配置池的租赁策略(fifo 或 lifo),默认为 FIFO,这是 Netty 的默认设置。

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

通道池映射名称,默认为 proxy。

spring.cloud.gateway.httpclient.pool.type

elastic

HttpClient 使用的池类型(elastic、fixed 或 disabled)。

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

http

Netty HttpClient 代理配置的代理类型 (http, socks4 或 socks5)。

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 flush 超时时间。默认为 3000 毫秒。

spring.cloud.gateway.httpclient.ssl.close-notify-read-timeout

0

SSL close_notify read 超时时间。默认为 0 毫秒。

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.ssl-bundle

要使用的 SSL 捆绑包名称。

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 启用 wiretap 调试。

spring.cloud.gateway.httpserver.wiretap

false

为 Netty HttpServer 启用 wiretap 调试。

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.mvc.form-filter.enabled

true

启用 form-filter。

spring.cloud.gateway.mvc.forwarded-request-headers-filter.enabled

true

启用 forwarded-request-headers-filter。

spring.cloud.gateway.mvc.http-client.connect-timeout

HttpClient 连接超时时间。

spring.cloud.gateway.mvc.http-client.read-timeout

HttpClient 读取超时时间。

spring.cloud.gateway.mvc.http-client.ssl-bundle

要使用的 SSL 捆绑包名称。

spring.cloud.gateway.mvc.http-client.type

jdk

HttpClient 类型。默认为 JDK。

spring.cloud.gateway.mvc.remove-content-length-request-headers-filter.enabled

true

启用 remove-content-length-request-headers-filter。

spring.cloud.gateway.mvc.remove-hop-by-hop-request-headers-filter.enabled

true

启用 forwarded-request-headers-filter。

spring.cloud.gateway.mvc.remove-hop-by-hop-response-headers-filter.enabled

true

启用 forwarded-request-headers-filter。

spring.cloud.gateway.mvc.routes

路由列表。

spring.cloud.gateway.mvc.routes-map

路由映射。

spring.cloud.gateway.mvc.streaming-buffer-size

16384

流媒体 mime-type 的缓冲区大小。

spring.cloud.gateway.mvc.streaming-media-types

流媒体的 mime-type。

spring.cloud.gateway.mvc.transfer-encoding-normalization-request-headers-filter.enabled

true

启用 transfer-encoding-normalization-request-headers-filter。

spring.cloud.gateway.mvc.weight-calculator-filter.enabled

true

启用 weight-calculator-filter。

spring.cloud.gateway.mvc.x-forwarded-request-headers-filter.enabled

true

是否启用 XForwardedHeadersFilter。

spring.cloud.gateway.mvc.x-forwarded-request-headers-filter.for-append

true

是否启用将 X-Forwarded-For 作为列表附加。

spring.cloud.gateway.mvc.x-forwarded-request-headers-filter.for-enabled

true

是否启用 X-Forwarded-For。

spring.cloud.gateway.mvc.x-forwarded-request-headers-filter.host-append

true

是否启用将 X-Forwarded-Host 作为列表附加。

spring.cloud.gateway.mvc.x-forwarded-request-headers-filter.host-enabled

true

是否启用 X-Forwarded-Host。

spring.cloud.gateway.mvc.x-forwarded-request-headers-filter.order

0

XForwardedHeadersFilter 的顺序。

spring.cloud.gateway.mvc.x-forwarded-request-headers-filter.port-append

true

是否启用将 X-Forwarded-Port 作为列表附加。

spring.cloud.gateway.mvc.x-forwarded-request-headers-filter.port-enabled

true

是否启用 X-Forwarded-Port。

spring.cloud.gateway.mvc.x-forwarded-request-headers-filter.prefix-append

true

是否启用将 X-Forwarded-Prefix 作为列表附加。

spring.cloud.gateway.mvc.x-forwarded-request-headers-filter.prefix-enabled

true

是否启用 X-Forwarded-Prefix。

spring.cloud.gateway.mvc.x-forwarded-request-headers-filter.proto-append

true

是否启用将 X-Forwarded-Proto 作为列表附加。

spring.cloud.gateway.mvc.x-forwarded-request-headers-filter.proto-enabled

true

是否启用 X-Forwarded-Proto。

spring.cloud.gateway.observability.enabled

true

是否应启用 Micrometer Observability 支持。

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

启用 header 断言。

spring.cloud.gateway.predicate.host.enabled

true

启用 host 断言。

spring.cloud.gateway.predicate.host.include-port

true

匹配主机名时是否包含端口。

spring.cloud.gateway.predicate.method.enabled

true

启用 method 断言。

spring.cloud.gateway.predicate.path.enabled

true

启用 path 断言。

spring.cloud.gateway.predicate.query.enabled

true

启用 query 断言。

spring.cloud.gateway.predicate.read-body.enabled

true

启用 read-body 断言。

spring.cloud.gateway.predicate.remote-addr.enabled

true

启用 remote-addr 断言。

spring.cloud.gateway.predicate.weight.enabled

true

启用 weight 断言。

spring.cloud.gateway.predicate.xforwarded-remote-addr.enabled

true

启用 xforwarded-remote-addr 断言。

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.redis-route-definition-repository.enabled

true

是否应启用 RedisRouteDefinitionRepository。

spring.cloud.gateway.restrictive-property-accessor.enabled

true

限制 SpEL 中的方法和属性访问。

spring.cloud.gateway.route-filter-cache-enabled

false

启用路由过滤器缓存,默认为 false。

spring.cloud.gateway.route-refresh-listener.enabled

true

是否应开启 RouteRefreshListener。

spring.cloud.gateway.routes

路由列表。

spring.cloud.gateway.set-status.original-status-header-name

包含代理请求 HTTP 状态码的头部名称。

spring.cloud.gateway.streaming-media-types

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。

可观察性元数据

可观察性 - 指标

下方列出了本项目声明的所有指标。

网关 HTTP 客户端可观察性

通过网关发送请求时创建的可观察性。

指标名称 `http.client.requests` (由约定类 `org.springframework.cloud.gateway.filter.headers.observation.DefaultGatewayObservationConvention` 定义)。类型 `timer`。

指标名称 `http.client.requests.active` (由约定类 `org.springframework.cloud.gateway.filter.headers.observation.DefaultGatewayObservationConvention` 定义)。类型 `long task timer`。

在启动可观察性后添加的 KeyValues 可能不会出现在 *.active 指标中。
Micrometer 内部使用 `nanoseconds` 作为基本单位。但是,实际的基本单位由每个后端确定。(例如 Prometheus 使用秒)

包含类 `org.springframework.cloud.gateway.filter.headers.observation.GatewayDocumentedObservation` 的完全限定名称。

表 1. 低基数键

名称

描述

`http.method` (必需)

HTTP 方法。

`http.status_code` (必需)

HTTP 状态码。

`spring.cloud.gateway.route.id` (必需)

路由 ID。

`spring.cloud.gateway.route.uri` (必需)

从路由获取的 HTTP URI。

表 2. 高基数键

名称

描述

`http.uri` (必需)

完整 HTTP URI。

可观察性 - Span

下方列出了本项目声明的所有 span。

网关 HTTP 客户端可观察性 Span

通过网关发送请求时创建的可观察性。

Span 名称 `http.client.requests` (由约定类 `org.springframework.cloud.gateway.filter.headers.observation.DefaultGatewayObservationConvention` 定义)。

包含类 `org.springframework.cloud.gateway.filter.headers.observation.GatewayDocumentedObservation` 的完全限定名称。

表 3. 标签键

名称

描述

`http.method` (必需)

HTTP 方法。

`http.status_code` (必需)

HTTP 状态码。

`http.uri` (必需)

完整 HTTP URI。

`spring.cloud.gateway.route.id` (必需)

路由 ID。

`spring.cloud.gateway.route.uri` (必需)

从路由获取的 HTTP URI。

可观察性 - 约定

下方列出了本项目声明的所有 `GlobalObservationConvention` 和 `ObservationConvention`。

表 4. ObservationConvention 实现

ObservationConvention 类名

适用的 ObservationContext 类名

org.springframework.cloud.gateway.filter.headers.observation.DefaultGatewayObservationConvention

GatewayContext

org.springframework.cloud.gateway.filter.headers.observation.GatewayObservationConvention

GatewayContext