Header 修改

基本概念

收到请求时,Header 修改功能允许在将请求转发到后端之前调整请求 Header。 同样,收到响应时,该功能允许在将响应返回给客户端之前调整响应 Header。

使用 annotations

目标annotation key
ingressalb.ingress.cpaas.io/rewrite-request,alb.ingress.cpaas.io/rewrite-response
rulealb.rule.cpaas.io/rewrite-request, alb.rule.cpaas.io/rewrite-response

annotation 值是包含配置的 JSON 字符串。

type RewriteRequestConfig struct {
	Headers       map[string]string   `json:"headers,omitempty"`         // set header
	HeadersVar    map[string]string   `json:"headers_var,omitempty"`     // set header, which values are variable name
	HeadersRemove []string            `json:"headers_remove,omitempty"`  // remove header
	HeadersAdd    map[string][]string `json:"headers_add,omitempty"`     // add header, which values could be multiple
	HeadersAddVar map[string][]string `json:"headers_add_var,omitempty"` // add header, which values could be multiple and which values are variable name
}
type RewriteResponseConfig struct {
	Headers       map[string]string   `json:"headers,omitempty"`         // set header
	HeadersRemove []string            `json:"headers_remove,omitempty"`  // remove header
	HeadersAdd    map[string][]string `json:"headers_add,omitempty"`     // add header, which values could be multiple
}

注意:在 *_var 映射中,键是 Header 名称,值是 ALB context 变量名称。 例如,向 Ingress 添加以下 annotation:

alb.ingress.cpaas.io/rewrite-request: '{
    "headers_var": {
        "x-my-host": "http_host"
    }
}'

将把键 x-my-host 和请求 Host Header 的值添加到请求 Header 中。 变量名称请参阅 nginx 变量。

ALB 还提供其他变量:

变量名称描述
first_forward_or_remote_addr第一个转发地址或远程地址,默认值为 remote_addr
first_forward第一个转发地址,默认值为空字符串

示例

要从 Cookie 添加 Authorization Header,可以使用:

alb.ingress.cpaas.io/rewrite-request: '{"headers_var":{"Authorization":"cookie_auth_token"}}'

要设置 HSTS,可以使用:

alb.rule.cpaas.io/rewrite-response: |
  { "headers": { "Strict-Transport-Security": "max-age=63072000; includeSubDomains; preload"} }

商标声明

NGINX® 是 F5, Inc. 在美国及其他国家/地区的注册商标。

Alauda 是独立供应商。本产品与 F5, Inc. 无关联,也未获得其认可或赞助。所有商标均为其各自所有者的财产,在此仅用于标识目的。