HTTP头字段

如果您需要自定义HTTP头字段,并希望通过ALB监听的附加HTTP头字段实现部分特定功能,您可以通过本文查看ALB支持的附加头字段及如何添加附加HTTP头字段。

ALB支持的附加头字段

HTTP头字段是指在超文本传输协议(HTTP)的请求和响应消息中的消息头部分。HTTP头字段可以根据需求自定义,因此在Web服务器和浏览器上可能存在非标准的HTTP头字段。下表列出了ALB支持的附加头字段及相关说明。

字段名

说明

适用监听协议

X-Forwarded-For

在您创建监听时,X-Forwarded-For头字段可以获取来访者客户端IP地址。

  • 开启X-Forwarded-For头字段:

    ALB将请求发送至后端服务器之前附加、删除请求中的X-Forwarded-For头字段。

    • 附加(默认)

      默认情况下,ALB会将客户端IP地址保存到X-Forwarded-For头字段中,并将该头字段信息发送至后端服务器。如果原始请求中未包含X-Forwarded-For头字段,ALB会创建以客户端IP地址为请求值的X-Forwarded-For头字段。否则,ALB会将客户端IP地址附加到现有X-Forwarded-For头字段中,然后将头字段发送至后端服务器。X-Forwarded-For 请求头字段可能包含多个以逗号分隔的 IP 地址。

    • 删除

      ALB将请求发送至后端服务器之前,会删除请求中的X-Forwarded-For头字段。

  • 关闭X-Forwarded-For头字段:

    ALB将请求发送至后端服务器之前,不会对请求中的X-Forwarded-For头字段进行任何修改。

字段格式:

X-Forwarded-For: <client-ip-address>, <proxy1>, <proxy2>, …

当您选择开启附加、删除或关闭时,后端服务器收到的X-Forwarded-For头字段示例如下。此示例中最后一跳IP127.0.0.1

请求描述

请求示例

开启X-Forwarded-For头字段

关闭X-Forwarded-For头字段

附加

删除

发送请求时没有X-Forwarded-For头字段

GET /index.html HTTP/1.1

Host: example.com

X-Forwarded-For: 127.0.0.1

发送请求时包含一个X-Forwarded-For头字段和一个客户端IP地址

GET /index.html HTTP/1.1

Host: example.com

X-Forwarded-For: 127.0.0.2

X-Forwarded-For: 127.0.0.2, 127.0.0.1

X-Forwarded-For: 127.0.0.2

发送请求时包含一个X-Forwarded-For头字段和多个客户端IP地址

GET /index.html HTTP/1.1

Host: example.com

X-Forwarded-For: 127.0.0.2, 127.0.0.3

X-Forwarded-For: 127.0.0.2, 127.0.0.3, 127.0.0.1

X-Forwarded-For: 127.0.0.2, 127.0.0.3

ALB如何获取客户端真实IP教程,请参见通过ALB获取客户端真实IP

  • HTTP

  • HTTPS

SLB-ID

在您创建监听时,可以通过开启SLB-ID头字段来获取负载均衡实例ID。

  • HTTP

  • HTTPS

  • QUIC

X-Forwarded-Proto

在您创建监听时,可以通过开启X-Forwarded-Proto头字段来获取客户端与负载均衡监听连接时所用的协议。您的应用可以使用存储在X-Forwarded-Proto头字段中的协议来重定向至目标URL。

字段格式:

X-Forwarded-Proto: <originatingProtocol>
  • HTTP

  • HTTPS

  • QUIC

X-Forwarded-Port

在您创建监听时,可以通过开启X-Forwarded-Port头字段来获取客户端与负载均衡监听连接时所用的端口。

字段格式:

X-Forwarded-Port: <port>
  • HTTP

  • HTTPS

  • QUIC

X-Forwarded-Host

在您创建监听时,可以通过开启X-Forwarded-Host头字段获取访问负载均衡实例客户端的域名。

字段格式:

X-Forwarded-Host: <host>
  • HTTP

  • HTTPS

  • QUIC

X-Forwarded-Client-srcport

在您创建监听时,可以通过开启X-Forwarded-Client-srcport头字段获取访问负载均衡实例客户端的端口。

字段格式:

X-Forwarded-Client-srcport: <port>
  • HTTP

  • HTTPS

X-Forwarded-Clientcert-subjectdn

在您创建监听时,可以通过开启X-Forwarded-Clientcert-subjectdn头字段获取访问负载均衡实例客户端证书的所有者信息。

开启该头字段后,您需输入自定义的HTTP头名称。

HTTPS

X-Forwarded-Clientcert-issuerdn

在您创建监听时,可以通过开启X-Forwarded-Clientcert-issuerdn头字段获取访问负载均衡实例客户端证书的发行者信息。

开启该头字段后,您需输入自定义的HTTP头名称。

HTTPS

X-Forwarded-Clientcert-fingerprint

在您创建监听时,可以通过开启X-Forwarded-Clientcert-fingerprint头字段获取访问负载均衡实例客户端证书的指纹取值。

开启该头字段后,您需输入自定义的HTTP头名称。

HTTPS

X-Forwarded-Clientcert-clientverify

在您创建监听时,可以通过开启X-Forwarded-Clientcert-clientverify头字段获取对访问负载均衡实例客户端证书的校验结果。

开启该头字段后,您需输入自定义的HTTP头名称。

HTTPS

说明
  • 建议您的后端服务器在获取HTTP头字段时,遵循HTTP协议规范,不区分HTTP头字段键值的大小写。

    • ALB向后端服务器传递X-Forwarded-For附加头字段的首字母始终保持大写。

    • 针对其他附加HTTP头字段,如果客户端请求中携带某个头字段,ALB会按照客户端请求中头字段格式向后端服务器传递。否则,ALB会根据上表所示附加头字段的字段名格式向后端服务器传递。

  • 开启X-Forwarded-Clientcert-subjectdnX-Forwarded-Clientcert-issuerdnX-Forwarded-Clientcert-fingerprintX-Forwarded-Clientcert-clientverify时,不允许将自定义的HTTP头名称设置为以下字段:slb-idslb-ipx-forwarded-forx-forwarded-protox-forwarded-eipx-forwarded-portx-forwarded-client-srcportx-forwarded-hostconnectionupgradecontent-lengthtransfer-encodingkeep-alivetehostcookieremoteipauthority

在控制台附加HTTP头字段

在创建监听时附加HTTP头字段

  1. 登录应用型负载均衡ALB控制台

  2. 在顶部菜单栏,选择ALB实例所属的地域。

  3. 选择以下一种方法,打开监听配置向导。

    • 实例页面,在目标实例操作列单击创建监听

    • 实例页面,单击目标实例ID。单击监听页签,然后单击创建监听

  4. 配置监听配置向导,完成以下配置,然后单击下一步

    监听配置

    说明

    选择监听协议

    选择监听的协议类型。

    高级配置

    单击修改展开高级配置。

    附加HTTP头字段

    根据您的业务需求,选择您需要开启的自定义HTTP头字段。

    说明

    此处只罗列头字段相关的配置信息,更多配置参数,请参见:

  5. 根据界面提示,完成创建监听后续的配置步骤。

为已创建的监听附加HTTP头字段

  1. 登录应用型负载均衡ALB控制台

  2. 在顶部菜单栏,选择ALB实例所属的地域。

  3. 实例页面,单击目标实例ID。

  4. 单击监听页签,在目标监听操作列选择更多>编辑监听

  5. 编辑监听对话框,单击高级配置右侧单击修改

  6. 附加HTTP头字段区域添加、保留或移除头字段,然后单击保存

使用API附加HTTP头字段

您可以在创建监听时附加头字段,也可以为已创建的监听添加、保留或移除头字段。

相关文档

控制台操作文档

API文档

  • CreateListener:在创建HTTP、HTTPSQUIC监听时通过设置XForwardedForConfig来添加HTTP头字段。

  • UpdateListenerAttribute:在更新监听的配置时通过更新XForwardedForConfig参数来添加、保留或移除头字段。