
# SLB监听配置
本章介绍通过IaC进行SLB监听配置的管理，包括监听的域名、端口、协议、证书、监听级别的高级配置，对应的资源类型为WiseCloud::LoadBalancer::SLB::ListenerGroup。
表1SLB监听配置字段说明 
| 参数名          | 类型                                                         | 是否必选 | 说明                                 |
|:---|:---|:---|:---|
| instanceName | String                                                     | 是    | 关联的SLB实例名，仅能关联同一注册中心下的SLB实例。       |
| domain       | String                                                     | 否    | 域名，多个域名不可重复，只允许数字、字母、下划线、"."和"\*"。 |
| certificate  | String                                                     | 否    | 证书名，需为领域下已录入证书。                    |
| listeners    | List\<[PortConfig]\> | 是    | 监听端口列表。                            |
| config       | GereralAndAdvancedConfigBean                               | 否    | 通用及高级配置。                           |
   
 表2PortConfig 
| 参数名           | 类型                                                              | 是否必选                | 说明                                  |
|:---|:---|:---|:---|
| port          | String                                                          | 是                   | 监听端口，整型字符串，1-65535。                 |
| protocol      | String                                                          | 是                   | 协议，取值为：http、https、http2、http2(ssl)。 |
| otherConfig   | String                                                          | 否                   | 其他配置。                               |
| elbReferences | List\<[ElbPoolConfig]\> | 当所关联SLB实例为自管理模式时非必传 | ELB关联列表。                            |
   
 表3ElbPoolConfig 
| 参数名  | 类型     | 是否必选 | 说明                     |
|:---|:---|:---|:---|
| name | String | 否    | ELB名称，ELB名称可在ENS管理台查询。 |
| pool | String | 否    | ELB后端集群。               |
   
样例：
```
- name: testListenerName                             #必传，SLB监听名称，长度<=50，不能包含-in-字符，不能以in-开头，不能以.conf结尾,不能包含特殊字符
  type: WiseCloud::LoadBalancer::SLB::ListenerGroup  #资源类型为监听配置
  properties:
    instanceName: testSlbInstanceName                #必传，关联的SLB实例名，仅能关联同一注册中心下的SLB实例
    domain: www.test1.com,www.test2.com              #非必传，域名
    certificate: testCertificateName                 #非必传，证书，需为领域下已录入证书
    listeners:                                       #必传
      - protocol: https                              #必传，协议，取值为：http、https、http2、http2(ssl)
        port: '9095'                                 #必传，整型字符串，监听端口，1-65535
        elbReferences:                               #ELB关联列表
          - name: elbName1                           #ELB名称
            pool: elbPool1                           #ELB后端集群   
          - name: elbName2
            pool: elbPool2
        otherConfig:                                 #非必传
      - protocol: https
        port: '9096'
        elbReferences:
          - name: elbName3
            pool: elbPool3
          - name: elbName4
            pool: elbPool4
    config:                                         #非必传，监听通用配置和高级配置
      $ref: 'slb_listener_config/listener_monitor_config.yaml#'
```
#### 配置监听
表4SLB监听配置config字段说明 
| 参数名                        | 类型                                                                     | 是否必选 | 说明                                                                                                                                                                         |
|:---|:---|:---|:---|
| proxyReadTimeout           | int                                                                    | 否    | 响应超时时间，不超过10位的数字。                                                                                                                                                          |
| proxySendTimeout           | int                                                                    | 否    | 转发超时时间，不超过10位的数字。                                                                                                                                                          |
| keepaliveSwitch            | String                                                                 | 否    | 启用长连接转发，是否keepalive，取值为on或off。                                                                                                                                             |
| hostSwitch                 | String                                                                 | 否    | 是否透传请求头，取值为on或off，不填或者其他字符均为off。                                                                                                                                           |
| xForwardedForSwitch        | String                                                                 | 否    | 是否追加XFF，取值为on或off。                                                                                                                                                         |
| accessLogSwitch            | String                                                                 | 否    | 是否开启access日志，取值为on或off，不填或者其他字符均为off。                                                                                                                                      |
| proxyNextUpstreamSwitch    | String                                                                 | 否    | 是否在异常时尝试下一台，取值为on或off，不填或者其他字符均为off。                                                                                                                                       |
| proxyNextUpstreamCondition | String                                                                 | 否    | 设置尝试下一台场景，"403"、"404"、"429"、"500"、"502"、"503"、"504"、"error"、"timeout"、"invalid_header"。                                                                                    |
| clientConnectionFreeTime   | int                                                                    | 否    | 客户端连接空闲时间，长度不超过10位的正整数。                                                                                                                                                    |
| proxyBuffersSwitch         | String                                                                 | 否    | 开启响应缓存，取值为on或off，不填或者其他字符均为off。                                                                                                                                            |
| proxyBuffersSize           | String                                                                 | 否    | 响应缓存大小，由数字+空格+k/m组成，默认为8 k。                                                                                                                                                |
| expiresSwitch              | String                                                                 | 否    | 高级配置中Expires开关，取值为on或off，不填或者其他字符均为off。                                                                                                                                    |
| expiresSize                | String                                                                 | 否    | 设定页面缓存时间，不缓存或一直使用缓存。可以由字母、数字、空格、$、@、+、-、冒号、逗号组成，长度不超过50位。                                                                                                                  |
| indexPage                  | String                                                                 | 否    | 静态页面场景index页面设置，长度不超过255，非中文。                                                                                                                                              |
| returnVal                  | String                                                                 | 否    | 固定返回响应码，长度不超过255，非中文。                                                                                                                                                      |
| allowMethod                | String                                                                 | 否    | 允许的http方法，对于转发策略有效，对于监听仅为参考，在界面新增转发策略时会继承监听的此项配置，其余场景无效，"GET"、"HEAD"、"POST"、"DELETE"、"PUT"、"OPTIONS"、"PATCH"、"MKCOL"、"COPY"、"MOVE"、"PROPFIND"、"PROPPATCH"、"LOCK"、"UNLOCK"。 |
| command                    | String                                                                 | 否    | nginx配置命令，非中文。                                                                                                                                                             |
| root                       | String                                                                 | 否    | 默认资源根目录，长度不超过500，非中文。                                                                                                                                                      |
| clientMaxBodySize          | String                                                                 | 否    | 最大请求体大小，数字+空格+k/m组成。                                                                                                                                                       |
| clientBodyBufferSize       | String                                                                 | 否    | 请求体buffer大小，数字+空格+k/m组成。                                                                                                                                                   |
| addHeaders                 | List\<[GeneralKeyValueConfig]\> | 否    | 响应头                                                                                                                                                                        |
| setVals                    | List\<[GeneralKeyValueConfig]\> | 否    | 对应页面set                                                                                                                                                                    |
| proxySetHeaders            | List\<[GeneralKeyValueConfig]\> | 否    | 请求头                                                                                                                                                                        |
| redirects                  | List\<[GeneralRedirectConfig]\>  | 否    | 重定向                                                                                                                                                                        |
| rewrites                   | List\<[GeneralRedirectConfig]\>  | 否    | 重写                                                                                                                                                                         |
   
 表5GeneralKeyValueConfig 
| 参数名   | 类型     | 是否必选 | 说明    |
|:---|:---|:---|:---|
| key   | String | 否    | 键，非中文 |
| value | String | 否    | 值，非中文 |
   
 表6GeneralRedirectConfig 
| 参数名    | 类型     | 是否必选 | 说明                                   |
|:---|:---|:---|:---|
| source | String | 否    | 匹配规则，非中文。                            |
| target | String | 否    | 重写/重定向目标，非中文。                        |
| option | String | 否    | 重写标记，取值为："last"、"break"、"permanent"。 |
   
slb_listener_config/listener_monitor_config.yaml
```
hostSwitch: 'on'                      #是否透传请求头,on/off,不填或者其他字符均为off
      root:                           #默认资源根目录，不超过500非中文
      clientConnectionFreeTime: 100   #客户端连接空闲时间，不超过10位的正整数
      proxyReadTimeout: 70            #响应超时时间，不超过10位的数字
      keepaliveSwitch: 'on'           #启用长连接转发是否keepalive，on/off
      proxyBuffersSize: '2 m'         #响应缓存大小，数字+空格+k/m组成，默认为8 k
      expiresSwitch: 'on'             #高级配置中Expires开关，on/off，不填或者其他字符均为off
      proxyBuffersSwitch: 'on'        #开启响应缓存，on/off，不填或者其他字符均为off
      accessLogSwitch: 'on'           #是否开启access日志，on/off，不填或者其他字符均为off
      returnVal: 200                  #固定返回响应码，不超过255非中文
      allowMethod: POST,GET,HEAD,PUT,DELETE,OPTIONS    #允许的http方法
      nuwaTraceSwitch: 'off'
      command:                        #nginx配置命令，非中文
      clientMaxBodySize:              #最大请求体大小，数字+空格+k/m组成
      clientBodyBufferSize: 10        #请求体buffer大小，数字+空格+k/m组成
      expiresSize: 10                 #设定页面缓存时间
      indexPage:                      #静态页面场景index页面设置，不超过255非中文
      proxyNextUpstreamCondition: error,timeout      #尝试下一台场景
      proxySendTimeout: 80            #转发超时时间，不超过10位的数字
      xForwardedForSwitch: 'on'       #是否追加XFF，on/off
      proxyNextUpstreamSwitch: 'on'   #是否在异常时尝试下一台，on/off，不填或者其他字符均为off
      addHeaders:                     #响应头
        - value: v1
          key: k1
        - value: v2
          key: k2
      rewrites:                       #重写
        - source: s7
          option: break
          target: t1
      setVals:                        #对应页面set
        - value: v3
          key: $k3
      proxySetHeaders:                #请求头
        - value: v5
          key: k5
      redirects:                      #重定向
        - source: s1
          target: t1
```
