Модификация заголовков
Содержание
Основные понятия
При получении запроса модификация заголовков позволяет изменить заголовки запроса перед его пересылкой на backend.
Аналогично, при получении ответа она позволяет изменить заголовки ответа перед их возвратом клиенту.
Использование аннотаций
target | annotation key |
---|
ingress | alb.ingress.cpaas.io/rewrite-request ,alb.ingress.cpaas.io/rewrite-response |
rule | alb.rule.cpaas.io/rewrite-request , alb.rule.cpaas.io/rewrite-response |
Значения аннотаций — это JSON-строки, содержащие конфигурацию.
type RewriteRequestConfig struct {
Headers map[string]string `json:"headers,omitempty"` // установить заголовок
HeadersVar map[string]string `json:"headers_var,omitempty"` // установить заголовок, значения которого — имена переменных
HeadersRemove []string `json:"headers_remove,omitempty"` // удалить заголовок
HeadersAdd map[string][]string `json:"headers_add,omitempty"` // добавить заголовок, значения которого могут быть множественными
HeadersAddVar map[string][]string `json:"headers_add_var,omitempty"` // добавить заголовок, значения которого могут быть множественными и являются именами переменных
}
type RewriteResponseConfig struct {
Headers map[string]string `json:"headers,omitempty"` // установить заголовок
HeadersRemove []string `json:"headers_remove,omitempty"` // удалить заголовок
HeadersAdd map[string][]string `json:"headers_add,omitempty"` // добавить заголовок, значения которого могут быть множественными
}
Примечание: в картах *_var
ключ — имя заголовка, а значение — имя переменной контекста ALB.
Например, добавьте следующую аннотацию в Ingress:
alb.ingress.cpaas.io/rewrite-request: '{
"headers_var": {
"x-my-host": "http_host"
}
}'
добавит ключ x-my-host
со значением заголовка host запроса в заголовки запроса.
Вы можете обратиться к nginx variable для имен переменных.
ALB предоставляет дополнительные переменные:
имя переменной | описание |
---|
first_forward_or_remote_addr | первый адрес из заголовка Forwarded или удалённый адрес, по умолчанию remote_addr |
first_forward | первый адрес из заголовка Forwarded, по умолчанию пустая строка |
Примеры
Чтобы добавить заголовок Authorization из cookie, можно использовать:
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"} }