配置请求头和响应头字段转发
云模式-CNAME接入或独享模式接入场景下,WAF作为客户端和源站服务器之间的反向代理,具备请求和响应的中转能力。配置请求头和响应头字段转发后,WAF可在中转过程中,将自定义标识信息注入请求头和响应头Header字段。
- 请求头字段转发
当客户端发起请求时,WAF先接收请求,按配置的 “请求头字段” 规则注入Key-Value信息,再将携带新字段的请求转发给源站服务器(注入过程不修改原始请求的其他内容)。
给源站服务器传递WAF层面的关键上下文(例如请求来源IP、会话ID),可解决源站无法直接获取真实客户端信息、WAF转发轨迹的问题。
- 响应头字段转发
当源站返回响应时,WAF同样先接收响应,注入 “响应头字段” 后,再转发给客户端,便于您区分不同来源的请求,更好的统计分析网站运营情况。
给客户端返回业务自定义标识(例如服务节点、防护标识),便于前端排查问题、统计不同渠道访问效果。
典型应用场景
- 电商平台需统计 “通过 WAF 防护的访问量”,在请求头添加“X-WAF-Access: yes”,源站通过该字段筛选 WAF 渠道流量,独立统计转化效果。
- 企业API服务需记录请求的真实客户端IP(WAF转发后源站默认获取WAF节点IP),在请求头配置“X-Real-IP: $remote_addr”($remote_addr 为客户端真实IP变量),源站直接读取该字段即可获取真实IP。
- SaaS 服务商需区分不同租户的请求,在请求头添加“X-Tenant-ID: $tenant_id”($tenant_id 为华为云租户 ID 变量),源站通过该字段隔离租户数据。
- 前端排查 “访问延迟” 问题,在响应头添加“X-WAF-Request-ID: $request_id”,通过请求ID关联WAF日志与源站日志,快速定位延迟节点。
约束条件
| 功能 | 约束说明 |
|---|---|
| 接入方式限制 |
|
| 地域限制 | 以控制台实际为准。 |
| Key值限制 | Key值会附加在原有头字段之后,不会覆盖Nginx原生字段。用户可以任意配置,但是不能跟Nginx原生字段重复。 |
| Value值限制 | Value值可以自定义一个字符串,也可以配置为以$开头的变量。以$开头的变量是WAF在请求处理过程中动态获取的实时数据(例如请求时间、会话信息),配置后会自动替换为实际值,无需手动填充。 以$开头的变量仅支持配置如下字段:$time_local、$request_id、$connection_requests、$tenant_id、$project_id、$remote_addr、$remote_port、$scheme、$request_method、$http_host、$origin_uri、$request_length、$ssl_server_name、$ssl_protocol、$ssl_curves$ssl_session_reused。 |
| 其他 | 不支持请求头和响应头带“.”转发。 |
前提条件
已添加防护网站且部署模式为“云模式-CNAME接入”或“独享模式”。
配置请求头和响应头字段转发
- 登录Web应用防火墙控制台。
- 在控制台左上角,单击
图标,选择区域或项目。 - (可选) 如果您已开通企业项目,在左侧导航栏上方单击“按企业项目筛选”下拉框,选择您所在的企业项目。完成后,页面将为您展示该企业项目下的相关数据。
- 在左侧导航栏,单击“网站设置”。
- 在“网站设置”页面,单击目标网站域名。
- 在“高级配置”区域,单击“请求头字段转发”或“响应头字段转发”后的“修改”。
- 在弹出的对话框中,输入Key/Value值,并单击“添加”,可添加多个字段。 图1 请求头字段转发
图2 响应头字段转发
- 确认字段添加完成后,单击“确定”。 实现效果验证:
- 在源站服务器,验证请求头转发字段:
以源站为Linux服务器为例,执行命令curl -I -H "Host: 目标域名" 源站IP,查看返回的Request Headers是否包含配置的字段。
- 在客户端,验证响应头转发字段:
打开浏览器开发者工具(F12),在“网络”页签, 访问目标域名,发送任意请求后,在“标头”页签,查看Response Headers是否包含配置的字段。
- 在源站服务器,验证请求头转发字段: