# 为ELB Ingress配置HTTP/HTTPS头字段
HTTP头字段是指在超文本传输协议（HTTP）的请求和响应消息中的消息头部分。HTTP头部字段可以根据需要自定义，本文介绍可通过HTTP和HTTPS监听器支持的非标准头字段实现的功能特性。
![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
- 配置HTTP/HTTPS头字段依赖ELB能力，使用该功能前请确认当前区域是否支持使用HTTP/HTTPS头字段，详情请参见[HTTP/HTTPS头字段](https://support.huaweicloud.com/usermanual-elb/zh-cn_topic_0118147668.html)。
- 配置HTTP/HTTPS头字段后，如果您在CCE控制台删除HTTP/HTTPS头字段配置或在YAML中删除对应的annotation，ELB侧的配置将会保留。
 
 表1头字段开关 
| 头字段                          | 功能开关              | 功能说明                                                                   | 支持的集群版本                                                                                   |
|:---|:---|:---|:---|
| X-Forwarded-Port           | 获取监听器端口号           | 开启获取监听器端口号开关，ELB可通过X-Forwarded-Port头字段获取监听器的端口号，传输到后端服务器的报文中。         | v1.23.13-r0、v1.25.8-r0、v1.27.5-r0、v1.28.3-r0及以上版本                                            |
| X-Forwarded-For-Port          | 获取客户端请求端口号         | 开启获取客户端请求端口号开关，ELB可通过X-Forwarded-For-Port头字段获取客户端请求的端口号，传输到后端服务器的报文中。 | v1.23.13-r0、v1.25.8-r0、v1.27.5-r0、v1.28.3-r0及以上版本                                            |
| X-Forwarded-Host              | 重写X-Forwarded-Host | 开启后将以客户端请求头的Host重写X-Forwarded-Host传递到后端云服务器。                         | v1.23.13-r0、v1.25.8-r0、v1.27.5-r0、v1.28.3-r0及以上版本                                            |
| X-Real-IP                     | 重写X-Real-IP       | 开启后将以客户端的源IP地址重写X-Real-IP传递到后端服务器。                                   | v1.25.16-r30、v1.27.16-r30、v1.28.15-r20、v1.29.13-r0、v1.30.10-r0、v1.31.6-r0、v1.32.1-r0及以上版本 |
| X-Forwarded-ELB-IP           | 获取ELB实例的EIP地址       | 开启后，ELB会将ELB实例的EIP地址通过HTTP请求头传递给后端服务器。仅支持独享型ELB，且仅支持HTTP和HTTPS协议。      | v1.30.14-r100、v1.31.14-r60、v1.32.13-r30、v1.33.12-r10、v1.34.8-r10、v1.35.5-r10、v1.36.2-r0及以上版本  |
| X-Forwarded-ELB-ID            | 获取负载均衡器实例的ID         | 开启后，ELB会将ELB实例的监听端口通过HTTP请求头传递给后端服务器。仅支持独享型ELB，且仅支持HTTP和HTTPS协议。        | v1.30.14-r100、v1.31.14-r60、v1.32.13-r30、v1.33.12-r10、v1.34.8-r10、v1.35.5-r10、v1.36.2-r0及以上版本  |
| X-Forwarded-Proto             | 获取负载均衡器实例的监听协议    | 开启后，ELB会将负载均衡器实例的监听协议通过HTTP请求头传递给后端服务器。仅支持独享型ELB，且仅支持HTTP和HTTPS协议。    | v1.30.14-r100、v1.31.14-r60、v1.32.13-r30、v1.33.12-r10、v1.34.8-r10、v1.35.5-r10、v1.36.2-r0及以上版本  |
| X-Forwarded-TLS-Certificate-ID | 获取负载均衡器实例的证书ID      | 开启后，ELB会将负载均衡器实例的证书ID通过HTTP请求头传递给后端服务器。仅支持独享型ELB，且仅支持HTTPS协议。           | v1.30.14-r100、v1.31.14-r60、v1.32.13-r30、v1.33.12-r10、v1.34.8-r10、v1.35.5-r10、v1.36.2-r0及以上版本  |
| X-Forwarded-TLS-Protocol       | 获取负载均衡器实例的算法协议      | 开启后，ELB会将负载均衡器实例的算法协议通过HTTP请求头传递给后端服务器。仅支持独享型ELB，且仅支持HTTPS协议。        | v1.30.14-r100、v1.31.14-r60、v1.32.13-r30、v1.33.12-r10、v1.34.8-r10、v1.35.5-r10、v1.36.2-r0及以上版本  |
| X-Forwarded-TLS-Cipher          | 获取负载均衡器实例的算法套件      | 开启后，ELB会将负载均衡器实例的算法套件通过HTTP请求头传递给后端服务器。仅支持独享型ELB，且仅支持HTTPS协议。           | v1.30.14-r100、v1.31.14-r60、v1.32.13-r30、v1.33.12-r10、v1.34.8-r10、v1.35.5-r10、v1.36.2-r0及以上版本  |
   
#### 前提条件
- 已创建一个CCE Standard或CCE Turbo集群，且集群版本满足[表1]要求：
- 集群中需提前部署可用的工作负载用于对外提供访问。若您无可用工作负载，可参见[创建无状态负载（Deployment）](https://support.huaweicloud.com/usermanual-cce/cce_10_0047.html)、[创建有状态负载（StatefulSet）](https://support.huaweicloud.com/usermanual-cce/cce_10_0048.html)或[创建守护进程集（DaemonSet）](https://support.huaweicloud.com/usermanual-cce/cce_10_0216.html)部署工作负载。
- 为提供对外访问的工作负载配置Service，ELB Ingress支持的Service类型请参见[ELB Ingress支持的Service类型](https://support.huaweicloud.com/usermanual-cce/cce_10_0094.html#cce_10_0094__section3565202819276)。
 
#### 约束与限制
- 仅使用独享型ELB时，Ingress支持配置HTTP/HTTPS头字段。
- 多个Ingress使用同一个ELB实例的同一个对外端口时，建议每个Ingress的HTTP/HTTPS头字段配置相同，否则将以第一个创建的Ingress配置为准。详情请参见[同一集群中多个Ingress使用同一个ELB的配置说明](https://support.huaweicloud.com/usermanual-cce/cce_10_0954.html)。
 
#### 配置HTTP/HTTPS头字段
您可以使用以下方式为Ingress配置HTTP/HTTPS头字段。
- [通过控制台配置]
  1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，单击集群名称进入集群。
  
  2. 在左侧导航栏中选择"服务"，切换至"路由"页签，在右上角单击"创建路由"。
  
  3. 设置Ingress参数。 
     ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
     本示例中展示配置HTTP/HTTPS头字段的关键参数，其余参数可按需配置，详情请参见[通过控制台创建ELB Ingress](https://support.huaweicloud.com/usermanual-cce/cce_10_0251.html)。
     表2关键参数说明 
     | 参数     | 配置说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | 示例                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
     |:---|:---|:---|
     | 名称      | 自定义Ingress名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | ingress-test                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
     | 负载均衡器 | 选择对接的ELB实例或自动创建ELB实例。本例中仅支持选择"独享型"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | 独享型ELB                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
     | 监听器配置 | - 前端协议：支持"HTTP"和"HTTPS"。  - 对外端口：ELB监听器的端口。  - 高级配置： - 获取监听器端口号：开启后可以将ELB实例的监听端口从报文的HTTP头中带到后端云服务器。  - 获取客户端请求端口号：开启后可以将客户端的源端口从报文的HTTP头中带到后端云服务器。  - 重写X-Forwarded-Host：开启后将以客户端请求头的Host重写X-Forwarded-Host传递到后端云服务器。  - 重写X-Real-IP：开启后将以客户端的源IP地址重写X-Real-IP传递到后端服务器。  - 获取ELB实例的EIP地址：开启后，ELB会将ELB实例的EIP地址通过HTTP请求头传递给后端服务器。仅支持独享型ELB，且仅支持HTTP和HTTPS协议。  - 获取负载均衡器实例的ID：开启后，ELB会将ELB实例的监听端口通过HTTP请求头传递给后端服务器。仅支持独享型ELB，且仅支持HTTP和HTTPS协议。  - 获取负载均衡器实例的监听协议：开启后，ELB会将负载均衡器实例的监听协议通过HTTP请求头传递给后端服务器。仅支持独享型ELB，且仅支持HTTP和HTTPS协议。  - 获取负载均衡器实例的证书ID：开启后，ELB会将负载均衡器实例的证书ID通过HTTP请求头传递给后端服务器。仅支持独享型ELB，且仅支持HTTPS协议。  - 获取负载均衡器实例的算法协议：开启后，ELB会将负载均衡器实例的算法协议通过HTTP请求头传递给后端服务器。仅支持独享型ELB，且仅支持HTTPS协议。  - 获取负载均衡器实例的算法套件：开启后，ELB会将负载均衡器实例的算法套件通过HTTP请求头传递给后端服务器。仅支持独享型ELB，且仅支持HTTPS协议。     | - 前端协议："HTTP"  - 对外端口：80  - 高级配置： - 获取监听器端口号：开启  - 获取客户端请求端口号：开启  - 重写X-Forwarded-Host：开启  - 获取ELB实例的EIP地址：开启  - 获取负载均衡器实例的ID：开启  - 获取负载均衡器实例的监听协议：开启  - 获取负载均衡器实例的证书ID：开启  - 获取负载均衡器实例的算法协议：开启  - 获取负载均衡器实例的算法套件：开启     |
     | 转发策略配置  | - 域名：实际访问的域名地址，不配置时可通过IP地址访问Ingress。请确保所填写的域名已注册并备案，一旦配置了域名规则后，必须使用域名访问。  - 路径匹配规则：支持前缀匹配、精确匹配、正则匹配，请按需选择。  - 路径：后端应用对外提供访问的路径，此处添加的访问路径要求后端应用内存在相同的路径，否则转发无法生效。  - 目标服务名称：请选择已有Service，页面列表中的查询结果已自动过滤不符合要求的Service。如果没有满足要求的Service请根据[Ingress支持的Service类型](https://support.huaweicloud.com/usermanual-cce/cce_10_0094.html#cce_10_0094__section1674954315446)新建。  - 目标服务访问端口：可选择目标Service的访问端口。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | - 域名：无需填写  - 路径匹配规则：前缀匹配  - 路径：/  - 目标服务名称：nginx  - 目标服务访问端口：80                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
        
     图1配置HTTP/HTTPS头字段   
     ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001834099570.png "点击放大")
     
     
  
  4. 单击"确定"，创建Ingress。
   
- [通过kubectl命令行配置]
  1. 请参见[通过kubectl连接集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html)，使用kubectl连接集群。
  
  2. 创建名为"**ingress-test.yaml** "的YAML文件，此处文件名可自定义。
     
     ```
     vi ingress-test.yaml
     ```
     以关联已有ELB为例，YAML文件配置如下：
     ```
     apiVersion: networking.k8s.io/v1
     kind: Ingress 
     metadata: 
       name: ingress-test
       annotations: 
         kubernetes.io/elb.id: <your_elb_id>                 #替换为您已有的ELB ID
         kubernetes.io/elb.class: performance                #ELB类型
         kubernetes.io/elb.port: '80'
         kubernetes.io/elb.x-forwarded-port: 'true'         # 获取监听器端口号
         kubernetes.io/elb.x-forwarded-for-port: 'true'     # 获取客户端请求端口号
         kubernetes.io/elb.x-forwarded-host: 'true'         # 重写X-Forwarded-Host
         kubernetes.io/elb.x-real-ip: 'true'                # 重写X-Real-IP
         kubernetes.io/elb.x-forwarded-proto: 'true'              # 获取负载均衡器实例的监听协议
         kubernetes.io/elb.x-forwarded-elb-ip: 'true'             # 获取ELB实例的eip地址
         kubernetes.io/elb.x-forwarded-elb-id: 'true'             # 获取负载均衡器实例的ID
         kubernetes.io/elb.x-forwarded-tls-certificate-id: 'true' # 获取负载均衡器实例的证书ID
         kubernetes.io/elb.x-forwarded-tls-protocol: 'true'       # 获取负载均衡器实例的算法协议
         kubernetes.io/elb.x-forwarded-tls-cipher: 'true'         # 获取负载均衡器实例的算法套件
         kubernetes.io/elb.tls-certificate-ids: 6cfb43c9de1a41a18478b868e3******       # HTTPS监听器服务端证书
     spec:
       rules: 
       - host: ''
         http: 
           paths: 
           - path: '/'
             backend: 
               service:
                 name: <your_service_name>  #替换为您的目标服务名称
                 port: 
                   number: 80             #替换为您的目标服务端口
             property:
               ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
             pathType: ImplementationSpecific
       ingressClassName: cce
     ```
     表3关键参数说明 
     | 参数                                               | 参数类型     | 描述                                                                                                                                                                                                                                                                                                                              |
     |:---|:---|:---|
     | kubernetes.io/elb.x-forwarded-port                 | String    | ELB可通过X-Forwarded-Port头字段获取监听器的端口号，传输到后端服务器的报文中。 - true：开启获取监听器端口号开关。  - false：关闭获取监听器端口号开关。              |
     | kubernetes.io/elb.x-forwarded-for-port            | String   | ELB可通过X-Forwarded-For-Port头字段获取客户端请求的端口号，传输到后端服务器的报文中。 - true：开启获取客户端请求端口号开关。  - false：关闭获取客户端请求端口号开关。   |
     | kubernetes.io/elb.x-forwarded-host                | String    | - true：开启重写X-Forwarded-Host开关，ELB以客户端请求头的Host重写X-Forwarded-Host传递到后端服务器。  - false：关闭重写X-Forwarded-Host开关，ELB透传客户端的X-Forwarded-Host到后端服务器。      |
     | kubernetes.io/elb.x-real-ip                       | String    | - true：开启重写X-Real-IP开关，ELB以客户端的源IP地址重写X-Real-IP传递到后端服务器  - false：关闭重写X-Real-IP开关，ELB透传客户端的X-Real-IP到后端服务器。                                              |
     | kubernetes.io/elb.x-forwarded-elb-ip              | String   | ELB可通过x-forwarded-elb-ip头字段获取监听器eip地址，传输到后端服务器的报文中。仅支持HTTP和HTTPS协议。 ● true：开启获取监听器eip地址开关。 ● false（默认）：关闭获取监听器eip地址开关。                                                                                                                   |
     | kubernetes.io/elb.x-forwarded-elb-id             | String   | ELB可通过x-forwarded-elb-id头字段获取负载均衡器实例的ID，传输到后端服务器的报文中。仅支持HTTP和HTTPS协议。 ● true：开启获取负载均衡器实例的ID开关。 ● false（默认）：关闭获取负载均衡器实例的ID开关。                                                                                                                  |
     | kubernetes.io/elb.x-forwarded-proto               | String  | ELB可通过x-forwarded-proto头字段获取负载均衡器实例的监听协议，传输到后端服务器的报文中。仅支持HTTP和HTTPS协议。 ● true（默认）：开启获取负载均衡器实例的监听协议开关。 ● false：关闭获取负载均衡器实例的监听协议开关。                                                                                                            |
     | kubernetes.io/elb.x-forwarded-tls-certificate-id | String | ELB可通过x-forwarded-tls-certificate-id头字段获取负载均衡器实例的证书ID，传输到后端服务器的报文中。仅支持HTTPS协议。 ● true：开启获取负载均衡器实例的证书ID开关。 ● false（默认）：关闭获取负载均衡器实例的证书ID开关。                                                                                                 |
     | kubernetes.io/elb.x-forwarded-tls-protocol      | String    | ELB可通过x-forwarded-tls-protocol头字段获取负载均衡器实例的算法协议，传输到后端服务器的报文中。仅支持HTTPS协议。 ● true（默认）：开启获取负载均衡器实例的算法协议开关。 ● false：关闭获取负载均衡器实例的算法协议开关。                                                                                                       |
     | kubernetes.io/elb.x-forwarded-tls-cipher        | String     | ELB可通过x-forwarded-tls-cipher头字段获取负载均衡器实例的算法套件，传输到后端服务器的报文中。仅支持HTTPS协议。 ● true：开启获取负载均衡器实例的算法套件开关。 ● false（默认）：关闭获取负载均衡器实例的算法套件开关。                                                                                                        |
        
     
     
  
  3. 创建Ingress。 
     ```
     kubectl create -f ingress-test.yaml
     ```
     回显类似如下，表示Ingress服务已创建。
     ```
     ingress.networking.k8s.io/ingress-test created
     ```
     
     
  
  4. 查看已创建的Ingress。 
     ```
     kubectl get ingress
     ```
     回显如下，表示Ingress服务创建成功。
     ```
     NAME          CLASS    HOSTS     ADDRESS          PORTS   AGE
     ingress-test  cce      *         121.**.**.**     80      10s
     ```
     
     
   
