Re: Пустая переменная $upstream status при 499

Maxim Dounin mdounin на mdounin.ru
Вт Янв 14 12:47:16 UTC 2020


Hello!

On Mon, Jan 13, 2020 at 03:07:20PM -0500, yanda.a wrote:

> Maxim Dounin Wrote:
> -------------------------------------------------------
> > Hello!
> > 
> > Где-то тут общение с бекендом завершено, однако ответ ещё не 
> > полностью отправлен клиенту.  В процессе отправки клиенте 
> > закрывает HTTP/2 stream:
> Кстати да, я немного не досмотрел. В этом server {} не используется listen
> http2. Но, в логах наблюдается именно http/2.0 и в хроме видно h2 в консоли
> разработчика. Не могли бы вы подсказать, насколько это адекватно? 

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

Соответственно если у вас написано в одном сервере:

    listen 443 ssl http2;

а в другом

    listen 443;

то для соединений, принятых на порту 443 будет использоваться SSL 
и HTTP/2.

Нюанс - сейчас одном сервере можно написать

    listen 443 ssl http2;

а в другом

    listen 443 ssl;

то есть без "http2", и будет работать так же, как если бы 
параметров не было написано вообще - то есть будет использоваться 
и SSL, и HTTP/2.  Это, безусловно, вводит в заблуждение, и такое 
мы, видимо, в ближайшем будущем просто запретим.

[...]

> Постараюсь описать ситуацию. Мы пытаемся выгружать эти логи в clickhouse для
> анализа latency и работы бекендов в целом, и сбора разнообразной статистики.
> Для этого на выходе у нас ожидается, что переменные (после парсинга это
> массивы в нашем случае) $upstream_addr, $upstream_response_time и
> $upstream_status имеют одну длину. Но, как показала практика, это не всегда
> так. В связи с этим ещё один, вероятно последний, вопрос. Есть ли
> возможность сделать это поведение более предсказуемым? Или проще добавлять
> недостающие элементы массива в процессе обработки (по сути угадывая, что там
> должно быть)?

Элемент массива там есть, в соответствующей позиции $upstream_status указан "-".

-- 
Maxim Dounin
http://mdounin.ru/


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