网关属性配置

本篇主要讲解如何在 Apache Shenyu 网关配置 ShenYu 的相关属性。

网关属性配置 - 图1

属性配置

  1. shenyu:
  2. # httpclient:
  3. # strategy: webClient
  4. # connectTimeout: 45000
  5. # readTimeout: 3000
  6. # writeTimeout: 3000
  7. # wiretap: false
  8. # pool:
  9. # type: ELASTIC
  10. # name: proxy
  11. # maxConnections: 16
  12. # acquireTimeout: 45000
  13. # proxy:
  14. # host:
  15. # port:
  16. # username:
  17. # password:
  18. # nonProxyHostsPattern:
  19. # ssl:
  20. # useInsecureTrustManager: false
  21. # trustedX509Certificates:
  22. # handshakeTimeout:
  23. # closeNotifyFlushTimeout:
  24. # closeNotifyReadTimeout:
  25. # defaultConfigurationType:
  26. file:
  27. enabled: true
  28. cross:
  29. enabled: true
  30. exclude:
  31. enabled: false
  32. paths:
  33. - /favicon.ico
  34. sync:
  35. websocket:
  36. urls: ws://localhost:9095/websocket
  37. # zookeeper:
  38. # url: localhost:2181
  39. # sessionTimeout: 5000
  40. # connectionTimeout: 2000
  41. # http:
  42. # url: http://localhost:9095
  43. # nacos:
  44. # url: localhost:8848
  45. # namespace: 1c10d748-af86-43b9-8265-75f487d20c6c
  46. # username:
  47. # password:
  48. # acm:
  49. # enabled: false
  50. # endpoint: acm.aliyun.com
  51. # namespace:
  52. # accessKey:
  53. # secretKey:
  54. # etcd:
  55. # url: http://localhost:2379
  56. # consul:
  57. # url: http://localhost:8500
  58. # waitTime: 1000
  59. # watchDelay: 1000

属性详解

shenyu.httpclient 配置

这是 ShenYu 网关中代理Http及SpringCloud协议后,用于发送代理请求的HttpClient配置。

NameTypeDefaultRequiredDescription
strategyStringwebcwebClientNoHttpClientPlugin实现策略(默认使用webClietn):
- webClient:使用WebClientPlugin
- netty:使用NettyHttpClientPlugin
connectTimeoutint45000No连接超时时间 (毫秒),默认值为 45000.
readTimeoutint3000No读取超时 (毫秒),默认值为 3000.
writeTimeoutint3000No输出超时 (millisecond),默认值为 3000.
wiretapBooleanfalseNo启用 Netty HttpClient 的窃听调试,默认值为 false
poolHttpClient连接池配置
proxyHttpClient代理配置
sslHttpClient SSL配置
  • pool config

HttpClient连接池配置:

NameTypeDefaultRequiredDescription
typeStringELASTICNoHttpClient连接池类型,默认值为ELASTIC
- ELASTIC: 连接池可以按需缓存和增长。
- FIXED: 连接池缓存并重用,有固定的最大连接数。
- DISABLED: 连接池总是会创建一个新的连接。
nameStringproxyNo连接池映射名称,默认为proxy
maxConnectionsint2可用处理器数,最小值为16No仅适用于 FIXED 类型,在现有连接上开始挂起获取之前的最大连接数。
默认值为可用处理器数2。
(最小值为 16)
acquireTimeoutint45000No仅适用于 FIXED 类型,等待获取连接的最长时间(毫秒)。默认值为 45000
  • Proxy config

Netty HttpClient 代理的相关配置:

NameTypeDefaultRequiredDescription
hostStringnullNoNetty HttpClient 代理配置的主机名。
portStringnullNoNetty HttpClient 的代理配置端口。
usernameStringnullNoNetty HttpClient 代理配置的用户名。
passwordStringnullNoNetty HttpClient 代理配置的密码。
nonProxyHostsPatternStringnullNo直连的主机列表的正则表达式 (Java)。
  • SSL config

网关路由可以同时支持路由到http和https的后端服务,以下为SSL相关配置:

NameTypeDefaultRequiredDescription
useInsecureTrustManagerBooleanfalseNo是否信任所有下游证书,默认false
trustedX509CertificatesArrayNullNo配置自己的信任的证书列表。
handshakeTimeoutint10000NoSSL握手超时时间(毫秒),默认值为10000
closeNotifyFlushTimeoutint3000NoSSL close_notify 刷新超时(毫秒)默认值为 3000.
closeNotifyReadTimeoutint0NoSSL close_notify 读取超时(毫秒)默认值为 0.
defaultConfigurationTypeStringTCPNoSslContextBuilder 的默认配置, 默认为 TCP.
- H2: SslProvider 将根据 OpenSsl.isAlpnSupported()、SslProvider.HTTP2_CIPHERS、ALPN 支持、HTTP/1.1 和 HTTP/2 支持进行设置
- TCP: SslProvider 将根据 OpenSsl.isAvailable() 设置
- NONE: 不会有默认配置
过滤器相关配置
  • shenyu.file 配置

文件过滤器的相关配置。

名称类型默认值是否必填说明
enabledBooleanfalse是否开启文件大小过滤
  • shenyu.cross 配置

跨域相关配置。

名称类型默认值是否必填说明
enabledBooleanfalse是否支持跨域请求
  • shenyu.exclude 配置

拒绝指定请求经过网关的相关配置

名称类型默认值是否必填说明
enabledBooleanfalse是否拒绝指定请求经过网关
pathsArray匹配该列表的请求不经过网关(支持路径匹配)
shenyu.sync 配置

网关和Admin端使用数据同步的相关配置。

使用websocket进行数据同步的属性配置如下:

名称类型默认值是否必填说明
urlsStringAdmin的websocket服务地址,多个地址用 , 分开 。

使用zookeeper进行数据同步的属性配置如下:

名称类型默认值是否必填说明
urlStringzookeeper的连接地址
sessionTimeoutintsession的超时时间(毫秒)
connectionTimeoutint连接超时时间(毫秒)

使用http长轮询进行数据同步的属性配置如下:

名称类型默认值是否必填说明
urlStringAdmin的服务地址

使用nacos进行数据同步的属性配置如下:

名称类型默认值是否必填说明
urlStringnacos连接地址
namespaceString命名空间
usernameString用户名
passwordString密码
acm阿里云ACM服务配置
  • acm配置
名称类型默认值是否必填说明
enabledbooleanfalse是否启用
endpointStringACM服务地址
namespaceStringnamespace
accessKeyStringaccessKey
secretKeyStringsecretKey

使用etcd进行数据同步的属性配置如下:

名称类型默认值是否必填说明
urlStringetcd连接地址

使用consul进行数据同步的属性配置如下:

名称类型默认值是否必填说明
urlStringconsul连接地址
waitTimeint请求consul服务拉取配置信息的超时时间(毫秒)
watchDelayint同步间隔(毫秒)