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