Gateway Property Config
This paper mainly explains how to configure Apache ShenYu properties on the gateway side.

Property Config#
shenyu: selectorMatchCache: ## selector L1 cache cache: enabled: false initialCapacity: 10000 # initial capacity in cache maximumSize: 10000 # max size in cache ## selector L2 cache, use trie as L2 cache trie: enabled: false cacheSize: 128 # the number of plug-ins matchMode: antPathMatch ruleMatchCache: ## rule L1 cache cache: enabled: true initialCapacity: 10000 # initial capacity in cache maximumSize: 65536 # max size in cache ## rule L2 cache, use trie as L2 cache trie: enabled: false cacheSize: 1024 # the number of selectors matchMode: antPathMatch netty: http: webServerFactoryEnabled: true selectCount: 1 workerCount: 4 accessLog: false serverSocketChannel: soRcvBuf: 87380 soBackLog: 128 soReuseAddr: true connectTimeoutMillis: 30000 writeBufferHighWaterMark: 65536 writeBufferLowWaterMark: 32768 writeSpinCount: 16 autoRead: false allocType: "pooled" messageSizeEstimator: 8 singleEventExecutorPerGroup: true socketChannel: soKeepAlive: false soReuseAddr: true soLinger: -1 tcpNoDelay: true soRcvBuf: 87380 soSndBuf: 16384 ipTos: 0 allowHalfClosure: false connectTimeoutMillis: 30000 writeBufferHighWaterMark: 65536 writeBufferLowWaterMark: 32768 writeSpinCount: 16 autoRead: false allocType: "pooled" messageSizeEstimator: 8 singleEventExecutorPerGroup: true instance: enabled: false registerType: zookeeper #etcd #consul serverLists: localhost:2181 #http://localhost:2379 #localhost:8848 props:# httpclient:# strategy: webClient# connectTimeout: 45000# responseTimeout: 3000# readerIdleTime: 3000# writerIdleTime: 3000# allIdleTime: 3000# readTimeout: 3000# writeTimeout: 3000# wiretap: false# keepAlive: false# pool:# type: ELASTIC# name: proxy# maxConnections: 16# acquireTimeout: 45000# maxIdleTime: 3000# proxy:# host:# port:# username:# password:# nonProxyHostsPattern:# ssl:# useInsecureTrustManager: true# keyStoreType: PKCS12# keyStorePath: classpath:keystore.p12# keyStorePassword: 123456# keyStoreProvider: # keyPassword: 123456# trustedX509Certificates:# handshakeTimeout:# closeNotifyFlushTimeout:# closeNotifyReadTimeout:# defaultConfigurationType: sync: websocket: urls: ws://localhost:9095/websocket allowOrigin: ws://localhost:9195# zookeeper:# url: localhost:2181# sessionTimeout: 5000# connectionTimeout: 2000# http:# url: http://localhost:9095# nacos:# url: localhost:8848# namespace: 1c10d748-af86-43b9-8265-75f487d20c6c# username:# password:# acm:# enabled: false# endpoint: acm.aliyun.com# namespace:# accessKey:# secretKey:# etcd:# url: http://localhost:2379# consul:# url: http://localhost:8500# waitTime: 1000# watchDelay: 1000 cross: enabled: true allowedHeaders: allowedMethods: "*" allowedAnyOrigin: false allowedOrigin: # format : schema://prefix spacer domain # Access-Control-Allow-Origin: "http://a.apache.org,http://b.apache.org" spacer: "." domain: apache.org prefixes: - a # a.apache.org - b # b.apache.org origins: - c.apache.org - d.apache.org - http://e.apache.org originRegex: ^http(|s)://(.*\.|)abc.com$ allowedExpose: "" maxAge: "18000" allowCredentials: true switchConfig: local: true file: enabled: true maxSize : 10 exclude: enabled: false paths: - /favicon.ico fallback: enabled: false paths: - /fallback/hystrix - /fallback/resilience4j health: enabled: false paths: - /actuator/health - /health_check alert: enabled: true admins: localhost:9095 extPlugin: path: enabled: true threads: 1 scheduleTime: 300 scheduleDelay: 30 scheduler: enabled: false type: fixed threads: 16 upstreamCheck: enabled: false timeout: 3000 healthyThreshold: 1 unhealthyThreshold: 1 interval: 5000 printEnabled: true printInterval: 60000 ribbon: serverListRefreshInterval: 10000 metrics: enabled: false name : prometheus host: 127.0.0.1 port: 8090 jmxConfig: props: jvm_enabled: true sharedPool: enable: true prefix: "shenyu-shared" corePoolSize: 200 maximumPoolSize: 2000 keepAliveTime: 60000 maxWorkQueueMemory: 1073741824 # 1GB maxFreeMemory: 268435456 # 256MBProperty Detail#
shenyu.matchCache config#
- selector match cache
| Field | Type | Default | Required | Description |
|---|---|---|---|---|
| enabled | Boolean | false | No | Whether to enable selector cache. |
| initialCapacity | Integer | 10000 | No | selector initial capacity |
| maximumSize | Integer | 10000 | No | selector max size |
- selector trie cache
| Field | Type | Default | Required | Description |
|---|---|---|---|---|
| enabled | Boolean | false | No | Whether to enable selector trie cache |
| cacheSize | Integer | 512 | No | trie cache size |
| matchMode | String | antPathMatch | Yes | path match mode, shenyu support two match modes, antPathMatch and pathPattern |
- rule match cache
| Field | Type | Default | Required | Description |
|---|---|---|---|---|
| enabled | Boolean | false | No | Whether to enable rule cache. |
| initialCapacity | Integer | 10000 | No | selector initial capacity |
| maximumSize | Integer | 10000 | No | selector max size |
- rule trie cache
| Field | Type | Default | Required | Description |
|---|---|---|---|---|
| enabled | Boolean | false | No | Whether to enable rule trie cache |
| cacheSize | Integer | 512 | No | trie cache size |
| matchMode | String | antPathMatch | Yes | path match mode, shenyu support two match modes, antPathMatch and pathPattern |
shenyu trie match support two match mode, we suggest use pathPattern as default match mode
pathPattern: org.springframework.web.util.pattern.PathPatternParser antPathMatch: org.springframework.util.AntPathMatcher
when you mark matchRestful as true, we suggest mark all cache to false to avoid cache conflict.
shenyu.NettyTcpProperties config#
The apache shenyu reactor-netty config.
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| webServerFactoryEnabled | Boolean | true | No | Whether to enable custom parameters. True-enable. False-NettyReactiveWebServerFactory Can be configured by yourself. |
| selectCount | Integer | 1 | No | Number of netty selectors. |
| workerCount | Integer | 4 | No | Number of netty workers. |
| accessLog | Boolean | false | No | netty request parameters. |
| ServerSocketChannelConfig | ||||
| soRcvBuf | Integer | -- | No | Socket config, the size of the socket receive buffer. The default value is system dependent. |
| soBackLog | Integer | 128 | No | Socket config, maximum length of the accept queue. |
| soReuseAddr | Boolean | true | No | Socket config, allow reuse of local addresses. The default value in reactor-netty is true. |
| connectTimeoutMillis | Integer | 30000 | No | Netty config, the connect timeout of the channel in milliseconds. |
| writeBufferHighWaterMark | Integer | 65536 | No | Netty config, the high water mark of the write buffer. |
| writeBufferLowWaterMark | Integer | 32768 | No | Netty config, the low water mark of the write buffer. |
| writeSpinCount | Integer | 16 | No | Netty config, the maximum loop count for a write operation. |
| autoRead | Boolean | false | No | Netty config, channel read method will be invoked automatically so that a user application doesn't need to call it at all. The default value in reactor-netty is false, and can only be false. |
| allocType | String | pooled | No | Netty config, set the ByteBufAllocator which is used for the channel to allocate buffers. |
| messageSizeEstimator | Integer | 8 | No | Netty config, message size estimator, estimate ByteBuf,ByteBufHolder and FileRegion size. |
| singleEventExecutorPerGroup | Boolean | true | No | Netty config, single thread execute the event of ChannelPipeline. |
| SocketChannelConfig | ||||
| soKeepAlive | Boolean | false | No | Socket config, enable tcp keepalive. |
| soReuseAddr | Boolean | true | No | Socket config, allow reuse of local addresses. The default value in reactor-netty is true. |
| soLinger | Integer | -1 | No | Socket config, the delay time for closing the socket. |
| tcpNoDelay | Boolean | true | No | Socket config, enable Nagle algorithm. |
| soRcvBuf | Integer | -- | No | Socket config, the size of the socket receive buffer. The default value is system dependent. |
| soSndBuf | Integer | -- | No | Socket config, the size of the socket send buffer. The default value is system dependent. |
| ipTos | Integer | 0 | No | IP config, the Type of Service (ToS) octet in the Internet Protocol (IP) header. |
| allowHalfClosure | Boolean | false | No | Netty config, Sets whether the channel should not close itself when its remote peer shuts down output to make the connection half-closed. |
| connectTimeoutMillis | Integer | 30000 | No | Netty config, the connect timeout of the channel in milliseconds. |
| writeBufferHighWaterMark | Integer | 65536 | No | Netty config, the high water mark of the write buffer. |
| writeBufferLowWaterMark | Integer | 32768 | No | Netty config, the low water mark of the write buffer. |
| writeSpinCount | Integer | 16 | No | Netty config, the maximum loop count for a write operation. |
| autoRead | Boolean | false | No | Netty config, channel read method will be invoked automatically so that a user application doesn't need to call it at all. The default value in reactor-netty is false, and can only be false. |
| allocType | String | pooled | No | Netty config, set the ByteBufAllocator which is used for the channel to allocate buffers. |
| messageSizeEstimator | Integer | 8 | No | Netty config, message size estimator, estimate ByteBuf,ByteBufHolder and FileRegion size. |
| singleEventExecutorPerGroup | Boolean | true | No | Netty config, single thread execute the event of ChannelPipeline. |
shenyu.register config#
This is the relevant configuration for the ShenYu gateway to register to the registration center. For the configuration of the registration center, please refer to Register Center Instance Config.
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| enabled | boolean | false | Yes | Whether to start. |
| registerType | String | zookeeper | Yes | Which registry to use, currently supports zookeeper, etcd. |
| serverLists | String | localhost:2181 | Yes | The address of the register center. If using clusters, separate with ,. |
| props | When using different register types, the attribute values are different. |
propsconfig
When using different register center, the attribute values are different.
When the registerType is zookeeper, the supported properties are as follows.
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| sessionTimeout | int | 30000 | No | session time out(millisecond). |
| connectionTimeout | int | 3000 | No | connection time out(millisecond). |
When the registerType is etcd, the supported properties are as follows.
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| etcdTimeout | int | 30000 | No | etcd time out(millisecond). |
| etcdTTL | int | 5 | No | client lease time to live(second). |
shenyu.httpclient config#
This is the HttpClient configuration used to send proxy requests after proxying the Http and SpringCloud protocols in the ShenYu gateway.
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| strategy | String | webClient | No | Type of http client, defaults to webClient. - webClient: use by WebClientPlugin - netty: use by NettyHttpClientPlugin. |
| connectTimeout | int | 45000 | No | Connection timeout (millisecond), the default value is 45000. |
| responseTimeout | int | 3000 | No | The response timeout (millisecond), the default value is 3000. |
| readerIdleTime | int | 3000 | No | The reader idle timeout (millisecond), the default value is 3000. |
| writerIdleTime | int | 3000 | No | The writer idle timeout (millisecond), the default value is 3000. |
| allIdleTime | int | 3000 | No | The all idle timeout (millisecond), the default value is 3000. |
| readTimeout | int | 3000 | No | Read timeout (millisecond), the default value is 3000. |
| writeTimeout | int | 3000 | No | Write timeout (millisecond), the default value is 3000. |
| wiretap | Boolean | false | No | Enables wiretap debugging for Netty HttpClient, the default value is 'false'. |
| keepAlive | Boolean | false | No | Enable or Disable Keep-Alive support for the outgoing request, the default value is 'false'. |
| pool | HttpClient connection pool config. | |||
| proxy | HttpClient proxy config. | |||
| ssl | HttpClient ssl config. |
poolconfig
HttpClient connection pool configuration:
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| type | String | ELASTIC | No | Type of pool for HttpClient to use, defaults to ELASTIC. - ELASTIC: The connection pool can be cached and grown on demand - FIXED: The connection pool cache and reuse a fixed maximum The number of connections. - DISABLED: The connection pool will always create a new connection. |
| name | String | proxy | No | The channel pool map name, defaults to proxy. |
| maxConnections | int | the maximum value of 2*CPU and 16 | No | Only for type FIXED, the maximum number of connections before starting pending acquisition on existing ones. the default value is available number of processors*2. (but with a minimum value of 16). |
| acquireTimeout | int | 45000 | No | Only for type FIXED, the maximum time in millis to wait for acquiring. the default value is 45000. |
| maxIdleTime | int | NULL | No | After which the channel will be closed, if NULL there is no max idle time. |
proxyconfig
Netty HttpClient proxy configuration:
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| host | String | null | No | Hostname for proxy configuration of Netty HttpClient. |
| port | String | null | No | Port for proxy configuration of Netty HttpClient. |
| username | String | null | No | Username for proxy configuration of Netty HttpClient. |
| password | String | null | No | Password for proxy configuration of Netty HttpClient. |
| nonProxyHostsPattern | String | null | No | Regular expression (Java) for a configured list of hosts. that should be reached directly, bypassing the proxy. |
SSLconfig
Gateway routing can support routing to http and https back-end services at the same time. The following is the SSL-related configuration:
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| useInsecureTrustManager | Boolean | false | No | Installs the netty InsecureTrustManagerFactory. This is insecure and not suitable for production. |
| keyStoreType | String | PKCS12 | No | SSL key store type. |
| keyStorePath | String | No | SSL key store path. | |
| keyStorePassword | String | No | SSL key store pass word. | |
| keyStoreProvider | String | No | SSL Keystore provider for netty httpClient and webclient. | |
| keyPassword | String | No | SSL key pass word. | |
| trustedX509Certificates | String | Null | No | Trusted certificates for verifying the remote endpoint's certificate.(Use , to separate multiple values) |
| handshakeTimeout | int | 10000 | No | SSL handshake timeout. Default to 10000 ms |
| closeNotifyFlushTimeout | int | 3000 | No | SSL close_notify flush timeout. Default to 3000 ms. |
| closeNotifyReadTimeout | int | 0 | No | SSL close_notify read timeout. Default to 0 ms. |
| defaultConfigurationType | String | TCP | No | The default ssl configuration type. Defaults to TCP. - H2: SslProvider will be set depending on OpenSsl.isAlpnSupported(), SslProvider.HTTP2_CIPHERS, ALPN support, HTTP/1.1 and HTTP/2 support. - TCP: SslProvider will be set depending on OpenSsl.isAvailable().- NONE: There will be no default configuration. |
Filter Configuration#
shenyu.fileconfig
File filter properties.
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| enabled | Boolean | false | No | enable file size filtering |
| maxSize | Integer | 10 | No | upload file maxSize (MB) |
shenyu.crossconfig
Cross filter properties:
| Name | Type | Default | Required | Description | |
|---|---|---|---|---|---|
| enabled | Boolean | false | No | allow cross-domain requests | |
| allowedHeaders | String | x-requested-with, authorization, Content-Type, Authorization, credential, X-XSRF-TOKEN, token, username, client | No | allowedHeaders, Use "," split in multiple cases. the new "allowedHeaders" will append to "Access-Control-Allow-Headers" based on the default value and remove the reduplicative header. | |
| allowedMethods | String | "*" | No | allowedMethods | |
| allowedAnyOrigin | Boolean | false | No | Whether to allow any Origin, if it is true, directly set the Access-Control-Allow-Origin to the same value as the Origin, that is, request.getHeaders().getOrigin(), and discard the allowedOrigin configuration. | |
| allowedOrigin | AllowedOriginConfig | - | No | Set the allowed request sources. | |
| spacer | String | "" | No | Set the allowed subdomains, need to use with domain, prefixes. | |
| domain | String | "" | No | Set the allowed subdomains, need to use with spacer, prefixes. | |
| prefixes | Set | [] | No | Set the allowed subdomains, need to use with spacer, domain. | |
| origins | Set | null | No | Set the domain names that are allowed to be accessed, which can be used separately. | |
| originRegex | String | "" | No | Set up access to domains that allow regular matching, available separately. | |
| allowedExpose | String | "" | No | allowedExpose | |
| maxAge | String | "18000" | No | maxAge (ms) | |
| allowCredentials | Boolean | true | No | allowCredentials |
shenyu.excludeconfig
Exculde filter properties.
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| enabled | Boolean | false | No | whether to enable exclude filter and reject the specified request to pass through the gateway. |
| paths | Array | null | Yes | Requests matching this list can not pass through the gateway (support Path-Matching). |
shenyu.fallbackconfig
Related configuration of fallback response.
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| enabled | Boolean | false | No | Whether to turn on the fallback response. |
| paths | Array | [] | Yes | Address of the service fallback request. |
shenyu.healthconfig
Configuration related to service health status.
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| enabled | Boolean | false | No | Whether to turn on health detection. |
| paths | Array | "/actuator/health" 、"/health_check" | No | Set up service health monitoring paths. |
shenyu.localconfig
Local forwarding-related configuration.
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| enabled | Boolean | false | No | Whether to enable local forwarding. |
| sha512Key | String | "" | Yes | Secret key, according to the secret key to determine whether the need for local forwarding. |
shenyu.switchConfig config#
The apache shenyu switch configuration.
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| local | Boolean | true | No | Whether to open local mode, if so, local operation data, default open. |
shenyu.sync config#
The apache shenyu gateway and the Admin System use data synchronization configurations.
The following properties are configured for data synchronization using websocket :
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| urls | String | null | Yes | The websocket server address of Admin, separate multiple addresses with ,. |
| allowOrigin | String | "" | No | Set the allowed origins, with multiple parameters separated by ;. |
The following properties are configured for data synchronization using zookeeper :
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| url | String | null | Yes | zookeeper server url. |
| sessionTimeout | int | null | Yes | session timeout (millisecond). |
| connectionTimeout | int | null | Yes | connection timeout (millisecond). |
The following properties are configured for data synchronization using http long polling :
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| url | String | null | Yes | Admin server address. |
The following properties are configured for data synchronization using nacos :
| Name | Type | Default | Required | Description | |
|---|---|---|---|---|---|
| url | String | null | Yes | nacos url | |
| namespace | String | null | Yes | namespace | |
| username | String | null | No | username | |
| password | String | null | No | password | |
| acm | Object | - | No | aliyun ACM service configuration. | |
| enabled | boolean | false | No | whether to enable. | |
| endpoint | String | null | No | ACM service address. | |
| namespace | String | null | No | namespace. | |
| accessKey | String | null | No | accessKey. | |
| secretKey | String | null | No | secretKey. |
The following properties are configured for data synchronization using apollo :
| Name | Type | Default | Required | Description | |
|---|---|---|---|---|---|
| namespace | String | null | Yes | namespace | |
| appId | String | null | Yes | appId | |
| token | String | null | Yes | token | |
| clusterName | String | default | Yes | cluster | |
| portalUrl | String | null | Yes | portalUrl | |
| meta | String | null | Yes | meta | |
| env | String | null | Yes | env |
The following properties are configured for data synchronization using etcd :
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| url | String | null | Yes | etcd server url. |
The following properties are configured for data synchronization using consul :
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| url | String | null | Yes | consul server url. |
| waitTime | int | null | Yes | the timeout period for requesting consul service to pull configuration information (milliseconds). |
| watchDelay | int | null | Yes | Synchronization interval (milliseconds). |
shenyu.extPlugin config#
The apache shenyu supports dynamic loading of custom plug-ins with the following configuration
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| enabled | Boolean | true | No | open dynamic loading of custom plug-ins. |
| path | String | False | custom plugins path, if not config, the path is /ext/lib. | |
| threads | Integer | 1 | False | threads for dynamic loading custom plug-ins. |
| scheduleTime | Integer | 300 | False | schedule time (s) for dynamic loading custom plug-ins. |
| scheduleDelay | Integer | 30 | False | schedule delay when app startup. |
shenyu.scheduler config#
Scheduler config for apache shenyu scheduler thread model.
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| enabled | Boolean | false | No | Whether to turn on Scheduler Thread Model. |
| type | String | fixed | False | fixed Thread Pool or elastic Scheduler Thread Model. |
| threads | Integer | Math.max((Runtime.getRuntime().availableProcessors() << 1) + 1, 16) | False | threads for fixed Thread Pool. |
shenyu.upstreamCheck config#
UpstreamCheck config is the configuration used by apache shenyu to detect upstream.
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| enabled | Boolean | false | No | Whether to turn on upstreamCheck. |
| timeout | Integer | 3000 | No | timeout (ms). |
| healthyThreshold | Integer | 1 | No | healthyThreshold. |
| unhealthyThreshold | Integer | 1 | No | unhealthyThreshold. |
| interval | Integer | 5000 | No | schedule time (ms) for checked. |
| printEnabled | Boolean | true | No | Whether to turn on print logs. |
| printInterval | Integer | 60000 | No | schedule time (ms) for print logs. |
shenyu.ribbon config#
The apache shenyu polling interval configuration.
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| serverListRefreshInterval | Integer | 10000 | No | Adjust the refresh interval parameter, refer tocom.netflix.client.config.CommonClientConfigKey#ServerListRefreshInterval. |
shenyu.metrics config#
The apache shenyu metrics config,the gateway is used to monitor its own operational status.
| Name | Type | Default | Required | Description | |
|---|---|---|---|---|---|
| enabled | Boolean | false | No | Whether to enable metrics, true means enable. | |
| name | String | "" | No | name. | |
| host | String | "" | No | IP exposed by the gateway service to the collection service. | |
| port | Integer | Null | No | Port exposed by the gateway service to the collection service. | |
| jmxConfig | String | "" | No | jmx config. | |
| props | - | No | properties. | ||
| jvm_enabled | Boolean | Null | No | Turn on jvm's monitoring metrics. |
shenyu.sharedPool config#
The apache shenyu shared thread pool configuration.
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| enabled | Boolean | false | No | Whether to enable shared thread pooling. |
| prefix | String | "shenyu-shared" | No | Thread pool name prefix. |
| corePoolSize | Integer | 200 | No | Number of core threads in the thread pool. |
| maximumPoolSize | Integer | Integer.MAX_VALUE | No | Maximum number of threads in the thread pool. |
| keepAliveTime | Long | 60000L | No | Excess idle thread keepAlive time, in milliseconds. |
| maxWorkQueueMemory | Long | 80% of the current JVM maximum available memory | No | Maximum memory used (byte). |
| maxFreeMemory | Integer | 无 | No | Maximum remaining memory (byte). |
shenyu.alert config#
The apache shenyu alert notice configuration.
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| enabled | Boolean | false | No | Whether to enable alarm message. |
| admins | String | "localhost:9095" | No | Report alarm message to shenyu admin server list. |