Работа с заголовками в Nginx
Содержание
Введение
В данной статье рассматриваются способы получения (чтения) и изменения (записи) заголовков в Nginx.
Используемые термины
Для понимания того, как работать с заголовками, нужно знать следующие термины:
- upstream сервер — это сервер, который получает запросы и отправляет ответы;
- downstream сервер — это сервер, который отправляет запросы и получает ответы.
Способы работы с заголовками
Для чтения и записи заголовков используются переменные и директивы, представленные в таблице ниже.
Откуда | Куда | Тип | Чтение (переменная) | Запись (директива) |
---|---|---|---|---|
Клиент | Nginx | Запрос | $http_<header_name> | — |
Nginx | Сервер | Запрос | — | proxy_set_header |
Сервер | Nginx | Ответ | $upstream_http_<header_name> | — |
Nginx | Клиент | Ответ | $sent_http_<header_name> | add_header |
Для простоты восприятия данную таблицу можно представить в виде диаграммы ниже.
sequenceDiagram participant Клиент participant Nginx participant Сервер Клиент->>Nginx: чтение: $http_<header_name> Nginx->>Сервер: запись: proxy_set_header Сервер->>Nginx: чтение: $upstream_http_<header_name> Nginx->>Клиент: чтение: $sent_http_<header_name> <br/> запись: add_header
Источники
- https://stackoverflow.com/questions/12431496/nginx-read-custom-header-from-upstream-server
- https://nginx.org/en/docs/http/ngx_http_core_module.html
- https://nginx.org/en/docs/http/ngx_http_proxy_module.html
- https://nginx.org/en/docs/http/ngx_http_upstream_module.html
- http://nginx.org/en/docs/http/ngx_http_headers_module.html