Zuul网关之路由配置

API网关
01 Spring Cloud Gateway网关之快速上手
02 Spring Cloud Gateway网关之两种路由配置方式
03 Spring Cloud Gateway网关之跨域支持
04 Spring Cloud Gateway网关之自定义全局过滤器
05 Spring Cloud Gateway网关之自定义路由过滤器
06 Spring Cloud Gateway网关之自定义路由谓词工厂
07 Spring Cloud Gateway网关之超时时间配置
08 Spring Cloud Gateway网关之配置说明
09 Zuul网关之快速上手
10 Zuul网关之路由配置
11 Zuul网关之跨域支持
12 Zuul网关之自定义过滤器
13 Zuul网关之超时时间配置

一 路由配置

1 方法一:通过配置文件配置,在resources/application.yaml中配置

具体的配置方法如下:

1
2
3
4
5
6
7
8
zuul:
ignored-services: "*" # 去掉服务发现的服务,避免暴露出去
routes:
business-api:
path: /business/** # 路由路径
customSensitiveHeaders: true # 是否去除敏感头 true为去除
sensitiveHeaders: Cookie,Set-Cookie # 需要去除的敏感头 去除了 即不会往下游转发
url: http://localhost:9999/api # 需要转发的url

以上只是配置的一个示例,更多的配置,请参考以下,根据需要选择一些配置以满足自己的业务需要:

配置名称默认值描述说明
zuul.prefix空字符所有路由公共的前缀
zuul.stripPrefixtrue标识是否在转发之前从路径中删除前缀
zuul.retryablefalse默认情况下是否支持重试(如果网关能支持重试的话)
zuul.addProxyHeaderstrue用于确定代理是否添加X-Forwarded- *头的标志。
zuul.addHostHeaderfalse用于确定代理是否转发Host头的标志。
zuul.ignoredServices需要忽略自动代理的服务名称集Set。默认情况下,将代理服务发现客户端中的所有服务。
zuul.ignoredPatterns需要忽略的path的正则。
zuul.ignoredHeaders可以完全忽略的Http头集合Set,包括下发下游的请求或者下游的响应的头中删除
zuul.ignoreSecurityHeaderstrue是否忽略Spring Security安全相关的header头。主要包含”Pragma”, “Cache-Control”, “X-Frame-Options”, “X-Content-Type-Options”, “X-XSS-Protection”, “Expires”
zuul.forceOriginalQueryStringEncodingfalse在SimpleHostRoutingFilter中构建后端URI时,强制使用原始查询字符串编码的标志。激活后,将使用HttpServletRequest getQueryString()方法而非UriTemplate构建查询字符串。请注意,在RibbonRoutingFilter中,此标志不适用于通过DiscoveryClient找到的服务(例如Eureka)。
zuul.servletPath/zuul将Zuul安装为servlet的路径(不是Spring MVC的一部分)。对于具有较大主体的请求,例如,servlet的内存效率更高。文件上传。
zuul.ignoreLocalServicetrue是否忽略当前服务
zuul.host控制默认连接池属性的Host属性。
zuul.host.maxTotalConnections200代理可以向后端开放的最大总连接数。
zuul.host.maxPerRouteConnections20单个路由可以使用的最大连接数。
zuul.host.socketTimeoutMillis10000Socket超时(毫秒)。默认为10000。
zuul.host.connectTimeoutMillis2000连接超时(以毫秒为单位)。默认为2000
zuul.host.connectionRequestTimeoutMillis-1向连接管理器请求连接时使用的超时(以毫秒为单位)。默认为-1,未定义使用系统默认值。
zuul.host.timeToLive-1连接池的生存期。
zuul.host.timeUnitTimeUnit.MILLISECONDSzuul.host.timeToLive的时间单位。
zuul.traceRequestBodyfalse可以跟踪请求body的标识
zuul.removeSemicolonContenttrue标识是否可以删除通过第一个分号“;”的路径元素
zuul.decodeUrltrue标识是否解码url
zuul.sensitiveHeaders“Cookie”, “Set-Cookie”, “Authorization”不传递到下游请求的敏感头的列表。默认为通常包含用户凭据的“安全”header头集Set。如果下游服务与代理服务器属于同一系统,则可以从列表中删除它们,因此它们共享身份验证数据。如果在您自己的域之外使用物理URL,则通常不建议泄露用户凭据。
zuul.sslHostnameValidationEnabledtrue标记以表明是否应该验证ssl连接的主机名。默认为true。仅应在测试设置中使用!
zuul.ribbonIsolationStrategyExecutionIsolationStrategy.SEMAPHOREribbon隔离策略
zuul.semaphoreHystrix Sempahores
zuul.semaphore.maxSemaphores100Hystrix的最大总信号量数。
zuul.threadPoolHystrix ThreadPool
zuul.threadPool.useSeparateThreadPoolsfalse用于确定RibbonCommands是否应为hystrix使用单独的线程池的标志。通过设置为true,RibbonCommands将在与其关联的hystrix的线程池中执行。每个RibbonCommand将根据其commandKey(serviceId)与一个线程池关联。默认情况下,所有命令将在单个线程池中执行,该线程池的threadPoolKey为“ RibbonCommand”。此属性仅在将THREAD用作RibbonIsolationStrategy时适用
zuul.threadPool.threadPoolKeyPrefix空字符串hystrix线程池的HystrixThreadPoolKey的前缀,分配给每个服务ID。仅当将THREAD用作RibbonIsolationStrategy且useSeparateThreadPools = true时,此属性才适用
zuul.setContentLengthfalse设置SendResponseFilter有条件地设置Content-Length标头。
zuul.includeDebugHeaderfalse设置SendResponseFilter有条件地包括X-Zuul-Debug-Header头。
zuul.initialStreamBufferSize8192为SendResponseFilter设置初始流缓冲区大小。
zuul.routes路由名称和属性的映射
zuul.routes.【路由key】.id路由的ID(默认情况下与其map的key相同)。
zuul.routes.【路由key】.path路由的pattern(样式),例如/ foo/**。
zuul.routes.【路由key】.serviceId映射到此路由的服务ID(如果有)。您可以指定物理URL或服务,但不能两者都指定。
zuul.routes.【路由key】.url完整的物理URL以映射到路线。一种替代方法是使用服务ID和服务发现来查找物理地址。
zuul.routes.【路由key】.stripPrefixtrue标识是否在转发之前是否应删除此路由的前缀
zuul.routes.【路由key】.retryable此路由应可重试的标志(如果支持)。通常,重试需要服务ID和ribbon。
zuul.routes.【路由key】.sensitiveHeaders不传递到下游请求的敏感头的列表。默认为通常包含用户凭据的“安全”标头集。如果下游服务与代理服务器属于同一系统,则可以从列表中删除它们,因此它们共享身份验证数据。如果在您自己的域之外使用物理URL,则通常不建议泄露用户凭据。
zuul.routes.【路由key】.customSensitiveHeadersfalse配合路由的sensitiveHeaders一起使用,设置为true则路由配置的sensitiveHeaders会被忽略