nginx-1.23.0 changes draft

Sergey Kandaurov pluknet at
Tue Jun 21 11:20:31 UTC 2022

> On 21 Jun 2022, at 05:27, Maxim Dounin <mdounin at> wrote:
> Hello!
> Changes with nginx 1.23.0                                        21 Jun 2022
>    *) Change in internal API: now header lines are represented as linked
>       lists.
>    *) Change: now nginx combines arbitrary header lines with identical
>       names when sending to FastCGI, SCGI, and uwsgi backends, in the
>       $r->header_in() method of the ngx_http_perl_module, and during lookup
>       of the "$http_...", "$sent_http_...", "$sent_trailer_...",
>       "$upstream_http_...", and "$upstream_trailer_..." variables.
>    *) Bugfix: if there were multiple "Vary" header lines in the backend
>       response, nginx only used the last of them when caching.
>    *) Bugfix: if there were multiple "WWW-Authenticate" header lines in the
>       backend response and errors with code 401 were intercepted or the
>       "auth_request" directive was used, nginx only sent the first of the
>       header lines to the client.
>    *) Change: the logging level of the "application data after close
>       notify" SSL errors has been lowered from "crit" to "info".
>    *) Bugfix: connections might hang if nginx was build on Linux 2.6.17 or
>       newer, but was used on systems without EPOLLRDHUP support, notably
>       with epoll emulation layers; the bug had appeared in 1.17.5.
>       Thanks to Marcus Ball.

Just wonder how such emulation layer is widespread enough to step on
the bug and to deserve an entry in changes, comparing to the bugfix for
"ignore long locked" alert with two cache managers that's not there.

>    *) Bugfix: nginx did not cache the response if the "Expires" response
>       header line disabled caching, but following "Cache-Control" header
>       line enabled caching.
> Изменения в nginx 1.23.0                                          21.06.2022
>    *) Изменение во внутреннем API: теперь строки заголовков представлены
>       связными списками.
>    *) Изменение: теперь nginx объединяет произвольные строки заголовков с
>       одинаковыми именами при отправке на FastCGI-, SCGI- и uwsgi- бэкенды,

a stray space in "uwsgi- "?

>       в методе $r->header_in() модуля ngx_http_perl_module, и при доступе
>       через переменные "$http_...", "$sent_http_...", "$sent_trailer_...",
>       "$upstream_http_..." и "$upstream_trailer_...".
>    *) Исправление: если в заголовке ответа бэкенда было несколько строк
>       "Vary", при кэшировании nginx учитывал только последнюю из них.
>    *) Исправление: если в заголовке ответа бэкенда было несколько строк
>       "WWW-Authenticate" и использовался перехват ошибок с кодом 401 от
>       бэкенда или директива auth_request, nginx пересылал клиенту только
>       первую из этих строк.
>    *) Изменение: уровень логгирования ошибок SSL "application data after
>       close notify" понижен с уровня crit до info.
>    *) Исправление: соединения могли зависать, если nginx был собран на
>       Linux 2.6.17 и новее, а использовался на системах без поддержки
>       EPOLLRDHUP, в частности, на системах с эмуляцией epoll; ошибка
>       появилась в 1.17.5.
>       Спасибо Marcus Ball.
>    *) Исправление: nginx не кэшировал ответ, если строка заголовка ответа
>       "Expires" запрещала кэширование, а последующая строка заголовка
>       "Cache-Control" разрешала кэширование.

Otherwise, looks good.

Sergey Kandaurov

More information about the nginx-devel mailing list