How to write $upstream_trailer_{name} into access.log

Gena Makhomed gmm на csdoc.com
Вт Май 25 08:07:38 UTC 2021


On 24.05.2021 4:19, Maxim Dounin wrote:

>> add_trailer X-Response-Time $upstream_response_time always;
>> add_trailer X-Cache-Status $upstream_cache_status always;

> Чтение трейлеров от бэкендов сейчас поддерживается только для
> gRPC-бэкендов. Если хочется, чтобы работало и для HTTP/1.1
> с chunked - присылайте патчи.

У trailers есть один существенный недостаток - они отсутствуют
в ответах, состоящих из одних только заголовков, например,
в ответах на HEAD-запросы. Поэтому trailers мне не подходят.

Если использовать вариант:

add_header X-Cache-Status $upstream_cache_status always;
add_header X-Response-Time $upstream_header_time always;

$upstream_header_time примерно равно $upstream_response_time,
для большинства обычных сайтов, кроме того - эти два заголовка
будуть присутствовать в ответах бэкенда всегда, даже для ответов
на HEAD-запросы. Это есть примерно то, чего и хотелось получить.

Остается только одна небольшая проблема - если в server или в location
присутствуют свои директивы add_header, то там надо будет продублировать
вручную эти две директивы add_header с уровня http.


Можно ли добавить в nginx директиву, например, force_add_header,
которая будет почти во всем аналогична директиве add_header,
но только директива add_header не будет отменять действие
директивы force_add_header, а директива force_add_header
не будет отменять действие директивы add_header.

В случае коллизии - одно и то же имя заголовка задается
и директивой force_add_header и директивой add_header
в каком-то location - тогда пишется warning во время
тестирования конфигурации и действует только директива
force_add_header, два заголовка с одним и тем же именем
не добавляются в ответ сервера.

Тогда можно было бы всего один раз на уровне http прописать

force_add_header X-Cache-Status $upstream_cache_status always;
force_add_header X-Response-Time $upstream_header_time always;

и тогда в каждом ответе бэкенда присутствовали бы эти два заголовка,
вне зависимости от того, где в server или в location встречаются
директивы add_header и в каком количестве. Это было бы очень удобно.

-- 
Best regards,
  Gena



Подробная информация о списке рассылки nginx-ru