blob: fd6da38ba73980906c882f72e5842f7938e2f988 [file] [log] [blame]
<?xml version="1.0" ?>
<!DOCTYPE change_log SYSTEM "../../dtd/changes.dtd" >
<change_log title="nginx">
<changes ver="1.21.5" date="2021-12-28">
<change type="change">
<para lang="ru">
теперь nginx по умолчанию собирается с библиотекой PCRE2.
</para>
<para lang="en">
now nginx is built with the PCRE2 library by default.
</para>
</change>
<change type="change">
<para lang="ru">
теперь nginx всегда использует sendfile(SF_NODISKIO) на FreeBSD.
</para>
<para lang="en">
now nginx always uses sendfile(SF_NODISKIO) on FreeBSD.
</para>
</change>
<change type="feature">
<para lang="ru">
поддержка sendfile(SF_NOCACHE) на FreeBSD.
</para>
<para lang="en">
support for sendfile(SF_NOCACHE) on FreeBSD.
</para>
</change>
<change type="feature">
<para lang="ru">
переменная $ssl_curve.
</para>
<para lang="en">
the $ssl_curve variable.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании HTTP/2 без SSL вместе с директивами sendfile и aio
соединения могли зависать.
</para>
<para lang="en">
connections might hang
when using HTTP/2 without SSL with the "sendfile" and "aio" directives.
</para>
</change>
</changes>
<changes ver="1.21.4" date="2021-11-02">
<change type="change">
<para lang="ru">
поддержка NPN вместо ALPN для установления HTTP/2-соединений
упразднена.
</para>
<para lang="en">
support for NPN instead of ALPN to establish HTTP/2 connections
has been removed.
</para>
</change>
<change type="change">
<para lang="ru">
теперь nginx закрывает SSL соединение, если клиент использует ALPN,
но nginx не поддерживает ни один из присланных клиентом протоколов.
</para>
<para lang="en">
now nginx rejects SSL connections if ALPN is used by the client,
but no supported protocols can be negotiated.
</para>
</change>
<change type="change">
<para lang="ru">
в директиве sendfile_max_chunk значение по умолчанию
изменено на 2 мегабайта.
</para>
<para lang="en">
the default value of the "sendfile_max_chunk" directive
was changed to 2 megabytes.
</para>
</change>
<change type="feature">
<para lang="ru">
директива proxy_half_close в модуле stream.
</para>
<para lang="en">
the "proxy_half_close" directive in the stream module.
</para>
</change>
<change type="feature">
<para lang="ru">
директива ssl_alpn в модуле stream.
</para>
<para lang="en">
the "ssl_alpn" directive in the stream module.
</para>
</change>
<change type="feature">
<para lang="ru">
переменная $ssl_alpn_protocol.
</para>
<para lang="en">
the $ssl_alpn_protocol variable.
</para>
</change>
<change type="feature">
<para lang="ru">
поддержка SSL_sendfile() при использовании OpenSSL 3.0.
</para>
<para lang="en">
support for SSL_sendfile() when using OpenSSL 3.0.
</para>
</change>
<change type="feature">
<para lang="ru">
директива mp4_start_key_frame в модуле ngx_http_mp4_module.<br/>
Спасибо Tracey Jaquith.
</para>
<para lang="en">
the "mp4_start_key_frame" directive in the ngx_http_mp4_module.<br/>
Thanks to Tracey Jaquith.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в переменной $content_length при использовании chunked transfer encoding.
</para>
<para lang="en">
in the $content_length variable when using chunked transfer encoding.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при получении ответа некорректной длины от проксируемого бэкенда
nginx мог тем не менее закэшировать соединение.<br/>
Спасибо Awdhesh Mathpal.
</para>
<para lang="en">
after receiving a response with incorrect length from a proxied backend
nginx might nevertheless cache the connection.<br/>
Thanks to Awdhesh Mathpal.
</para>
</change>
<change type="bugfix">
<para lang="ru">
некорректные заголовки от бэкендов
логгировались на уровне info вместо error;
ошибка появилась в 1.21.1.
</para>
<para lang="en">
invalid headers from backends
were logged at the "info" level instead of "error";
the bug had appeared in 1.21.1.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании HTTP/2 и директивы aio_write
запросы могли зависать.
</para>
<para lang="en">
requests might hang
when using HTTP/2 and the "aio_write" directive.
</para>
</change>
</changes>
<changes ver="1.21.3" date="2021-09-07">
<change type="change">
<para lang="ru">
оптимизация чтения тела запроса
при использовании HTTP/2.
</para>
<para lang="en">
optimization of client request body reading
when using HTTP/2.
</para>
</change>
<change type="bugfix">
<para lang="ru">
во внутреннем API для обработки тела запроса
при использовании HTTP/2 и буферизации обрабатываемых данных.
</para>
<para lang="en">
in request body filters internal API
when using HTTP/2 and buffering of the data being processed.
</para>
</change>
</changes>
<changes ver="1.21.2" date="2021-08-31">
<change type="change">
<para lang="ru">
теперь nginx возвращает ошибку,
если в запросе по протоколу HTTP/1.0 присутствует
строка заголовка "Transfer-Encoding".
</para>
<para lang="en">
now nginx rejects HTTP/1.0 requests
with the "Transfer-Encoding" header line.
</para>
</change>
<change type="change">
<para lang="ru">
экспортные шифры больше не поддерживаются.
</para>
<para lang="en">
export ciphers are no longer supported.
</para>
</change>
<change type="feature">
<para lang="ru">
совместимость с OpenSSL 3.0.
</para>
<para lang="en">
OpenSSL 3.0 compatibility.
</para>
</change>
<change type="feature">
<para lang="ru">
теперь серверу аутентификации почтового прокси-сервера
передаются строки заголовка "Auth-SSL-Protocol" и "Auth-SSL-Cipher".<br/>
Спасибо Rob Mueller.
</para>
<para lang="en">
the "Auth-SSL-Protocol" and "Auth-SSL-Cipher" header lines
are now passed to the mail proxy authentication server.<br/>
Thanks to Rob Mueller.
</para>
</change>
<change type="feature">
<para lang="ru">
API для обработки тела запроса
теперь позволяет буферизировать обрабатываемые данные.
</para>
<para lang="en">
request body filters API
now permits buffering of the data being processed.
</para>
</change>
<change type="bugfix">
<para lang="ru">
SSL-соединения к бэкендам в модуле stream
могли зависать после SSL handshake.
</para>
<para lang="en">
backend SSL connections in the stream module
might hang after an SSL handshake.
</para>
</change>
<change type="bugfix">
<para lang="ru">
уровень безопасности, доступный в OpenSSL 1.1.0 и новее,
не учитывался при загрузке сертификатов сервера,
если был задан через "@SECLEVEL=N" в директиве ssl_ciphers.
</para>
<para lang="en">
the security level, which is available in OpenSSL 1.1.0 or newer,
did not affect loading of the server certificates
when set with "@SECLEVEL=N" in the "ssl_ciphers" directive.
</para>
</change>
<change type="bugfix">
<para lang="ru">
SSL-соединения с gRPC-бэкендами могли зависать,
если использовались методы select, poll или /dev/poll.
</para>
<para lang="en">
SSL connections with gRPC backends might hang
if select, poll, or /dev/poll methods were used.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании HTTP/2
тело запроса всегда записывалось на диск,
если в запросе не было строки заголовка "Content-Length".
</para>
<para lang="en">
when using HTTP/2
client request body was always written to disk
if the "Content-Length" header line was not present in the request.
</para>
</change>
</changes>
<changes ver="1.21.1" date="2021-07-06">
<change type="change">
<para lang="ru">
теперь nginx для метода CONNECT всегда возвращает ошибку.
</para>
<para lang="en">
now nginx always returns an error for the CONNECT method.
</para>
</change>
<change type="change">
<para lang="ru">
теперь nginx всегда возвращает ошибку,
если в запросе одновременно присутствуют строки заголовка "Content-Length"
и "Transfer-Encoding".
</para>
<para lang="en">
now nginx always returns an error
if both "Content-Length" and "Transfer-Encoding" header lines
are present in the request.
</para>
</change>
<change type="change">
<para lang="ru">
теперь nginx всегда возвращает ошибку,
если в строке запроса используются пробелы или управляющие символы.
</para>
<para lang="en">
now nginx always returns an error
if spaces or control characters are used in the request line.
</para>
</change>
<change type="change">
<para lang="ru">
теперь nginx всегда возвращает ошибку,
если в имени заголовка используются пробелы или управляющие символы.
</para>
<para lang="en">
now nginx always returns an error
if spaces or control characters are used in a header name.
</para>
</change>
<change type="change">
<para lang="ru">
теперь nginx всегда возвращает ошибку,
если в строке "Host" заголовка запроса
используются пробелы или управляющие символы.
</para>
<para lang="en">
now nginx always returns an error
if spaces or control characters
are used in the "Host" request header line.
</para>
</change>
<change type="change">
<para lang="ru">
оптимизация тестирования конфигурации
при использовании большого количества listen-сокетов.
</para>
<para lang="en">
optimization of configuration testing
when using many listening sockets.
</para>
</change>
<change type="bugfix">
<para lang="ru">
nginx не экранировал
символы """, "&lt;", ">", "\", "^", "`", "{", "|", и "}"
при проксировании с изменением URI запроса.
</para>
<para lang="en">
nginx did not escape
""", "&lt;", ">", "\", "^", "`", "{", "|", and "}" characters
when proxying with changed URI.
</para>
</change>
<change type="bugfix">
<para lang="ru">
SSL-переменные могли быть пустыми при записи в лог;
ошибка появилась в 1.19.5.
</para>
<para lang="en">
SSL variables might be empty when used in logs;
the bug had appeared in 1.19.5.
</para>
</change>
<change type="bugfix">
<para lang="ru">
keepalive-соединения с gRPC-бэкендами могли не закрываться
после получения GOAWAY-фрейма.
</para>
<para lang="en">
keepalive connections with gRPC backends might not be closed
after receiving a GOAWAY frame.
</para>
</change>
<change type="bugfix">
<para lang="ru">
уменьшено потребление памяти для долгоживущих запросов
при проксировании с использованием более 64 буферов.
</para>
<para lang="en">
reduced memory consumption for long-lived requests
when proxying with more than 64 buffers.
</para>
</change>
</changes>
<changes ver="1.21.0" date="2021-05-25">
<change type="security">
<para lang="ru">
при использовании директивы resolver
во время обработки ответа DNS-сервера
могла происходить перезапись одного байта памяти,
что позволяло атакующему,
имеющему возможность подделывать UDP-пакеты от DNS-сервера,
вызвать падение рабочего процесса
или, потенциально, выполнение произвольного кода (CVE-2021-23017).
</para>
<para lang="en">
1-byte memory overwrite might occur
during DNS server response processing
if the "resolver" directive was used,
allowing an attacker
who is able to forge UDP packets from the DNS server
to cause worker process crash
or, potentially, arbitrary code execution (CVE-2021-23017).
</para>
</change>
<change type="feature">
<para lang="ru">
директивы proxy_ssl_certificate, proxy_ssl_certificate_key,
grpc_ssl_certificate, grpc_ssl_certificate_key,
uwsgi_ssl_certificate и uwsgi_ssl_certificate_key
поддерживают переменные.
</para>
<para lang="en">
variables support
in the "proxy_ssl_certificate", "proxy_ssl_certificate_key"
"grpc_ssl_certificate", "grpc_ssl_certificate_key",
"uwsgi_ssl_certificate", and "uwsgi_ssl_certificate_key" directives.
</para>
</change>
<change type="feature">
<para lang="ru">
директива max_errors в почтовом прокси-сервере.
</para>
<para lang="en">
the "max_errors" directive in the mail proxy module.
</para>
</change>
<change type="feature">
<para lang="ru">
почтовый прокси-сервер поддерживает POP3 и IMAP pipelining.
</para>
<para lang="en">
the mail proxy module supports POP3 and IMAP pipelining.
</para>
</change>
<change type="feature">
<para lang="ru">
параметр fastopen директивы listen в модуле stream.<br/>
Спасибо Anbang Wen.
</para>
<para lang="en">
the "fastopen" parameter of the "listen" directive in the stream module.<br/>
Thanks to Anbang Wen.
</para>
</change>
<change type="bugfix">
<para lang="ru">
специальные символы не экранировались
при автоматическом перенаправлении с добавлением завершающего слэша.
</para>
<para lang="en">
special characters were not escaped
during automatic redirect with appended trailing slash.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании SMTP pipelining
соединения с клиентами в почтовом прокси-сервере
могли неожиданно закрываться.
</para>
<para lang="en">
connections with clients in the mail proxy module
might be closed unexpectedly
when using SMTP pipelining.
</para>
</change>
</changes>
<changes ver="1.19.10" date="2021-04-13">
<change type="change">
<para lang="ru">
в директиве keepalive_requests значение по умолчанию изменено на 1000.
</para>
<para lang="en">
the default value of the "keepalive_requests" directive was changed to 1000.
</para>
</change>
<change type="feature">
<para lang="ru">
директива keepalive_time.
</para>
<para lang="en">
the "keepalive_time" directive.
</para>
</change>
<change type="feature">
<para lang="ru">
переменная $connection_time.
</para>
<para lang="en">
the $connection_time variable.
</para>
</change>
<change type="workaround">
<para lang="ru">
при использовании zlib-ng
в логах появлялись сообщения "gzip filter failed to use preallocated memory".
</para>
<para lang="en">
"gzip filter failed to use preallocated memory" alerts appeared in logs
when using zlib-ng.
</para>
</change>
</changes>
<changes ver="1.19.9" date="2021-03-30">
<change type="bugfix">
<para lang="ru">
nginx не собирался с почтовым прокси-сервером,
но без модуля ngx_mail_ssl_module;
ошибка появилась в 1.19.8.
</para>
<para lang="en">
nginx could not be built with the mail proxy module,
but without the ngx_mail_ssl_module;
the bug had appeared in 1.19.8.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при работе с gRPC-бэкендами могли возникать ошибки
"upstream sent response body larger than indicated content length";
ошибка появилась в 1.19.1.
</para>
<para lang="en">
"upstream sent response body larger than indicated content length"
errors might occur when working with gRPC backends;
the bug had appeared in 1.19.1.
</para>
</change>
<change type="bugfix">
<para lang="ru">
если клиент закрывал соединение в момент отбрасывания тела запроса,
nginx мог не закрыть соединение до истечения keepalive-таймаута.
</para>
<para lang="en">
nginx might not close a connection till keepalive timeout expiration
if the connection was closed by the client while discarding the request body.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при ожидании задержки limit_req или auth_delay, а также при работе с бэкендами
nginx мог не обнаружить, что соединение уже закрыто клиентом.
</para>
<para lang="en">
nginx might not detect that a connection was already closed by the client
when waiting for auth_delay or limit_req delay, or when working with backends.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в методе обработки соединений eventport.
</para>
<para lang="en">
in the eventport method.
</para>
</change>
</changes>
<changes ver="1.19.8" date="2021-03-09">
<change type="feature">
<para lang="ru">
в директиве proxy_cookie_flags теперь
флаги можно задавать с помощью переменных.
</para>
<para lang="en">
flags in the "proxy_cookie_flags" directive
can now contain variables.
</para>
</change>
<change type="feature">
<para lang="ru">
параметр proxy_protocol в директиве listen,
директивы proxy_protocol и set_real_ip_from
в почтовом прокси-сервере.
</para>
<para lang="en">
the "proxy_protocol" parameter of the "listen" directive,
the "proxy_protocol" and "set_real_ip_from" directives
in mail proxy.
</para>
</change>
<change type="bugfix">
<para lang="ru">
HTTP/2-соединения сразу закрывались
при использовании "keepalive_timeout 0";
ошибка появилась в 1.19.7.
</para>
<para lang="en">
HTTP/2 connections were immediately closed
when using "keepalive_timeout 0";
the bug had appeared in 1.19.7.
</para>
</change>
<change type="bugfix">
<para lang="ru">
некоторые ошибки логгировались как неизвестные,
если nginx был собран с glibc 2.32.
</para>
<para lang="en">
some errors were logged as unknown
if nginx was built with glibc 2.32.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в методе обработки соединений eventport.
</para>
<para lang="en">
in the eventport method.
</para>
</change>
</changes>
<changes ver="1.19.7" date="2021-02-16">
<change type="change">
<para lang="ru">
обработка соединений в HTTP/2 была изменена
и теперь более соответствует HTTP/1.x;
директивы http2_recv_timeout, http2_idle_timeout
и http2_max_requests упразднены,
вместо них следует использовать директивы
keepalive_timeout и keepalive_requests.
</para>
<para lang="en">
connections handling in HTTP/2 has been changed
to better match HTTP/1.x;
the "http2_recv_timeout", "http2_idle_timeout",
and "http2_max_requests" directives have been removed,
the "keepalive_timeout" and "keepalive_requests" directives
should be used instead.
</para>
</change>
<change type="change">
<para lang="ru">
директивы http2_max_field_size и http2_max_header_size упразднены,
вместо них следует использовать директиву large_client_header_buffers.
</para>
<para lang="en">
the "http2_max_field_size" and "http2_max_header_size" directives
have been removed,
the "large_client_header_buffers" directive should be used instead.
</para>
</change>
<change type="feature">
<para lang="ru">
теперь при исчерпании свободных соединений
nginx закрывает не только keepalive-соединения,
но и соединения в lingering close.
</para>
<para lang="en">
now, if free worker connections are exhausted,
nginx starts closing not only keepalive connections,
but also connections in lingering close.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в логах могли появляться сообщения "zero size buf in output",
если бэкенд возвращал некорректный ответ
при небуферизированном проксировании;
ошибка появилась в 1.19.1.
</para>
<para lang="en">
"zero size buf in output" alerts might appear in logs
if an upstream server returned an incorrect response
during unbuffered proxying;
the bug had appeared in 1.19.1.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании директивы return
вместе с image_filter или xslt_stylesheet
HEAD-запросы обрабатывались некорректно.
</para>
<para lang="en">
HEAD requests were handled incorrectly
if the "return" directive was used
with the "image_filter" or "xslt_stylesheet" directives.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в директиве add_trailer.
</para>
<para lang="en">
in the "add_trailer" directive.
</para>
</change>
</changes>
<changes ver="1.19.6" date="2020-12-15">
<change type="bugfix">
<para lang="ru">
ошибки "no live upstreams",
если server в блоке upstream был помечен как down.
</para>
<para lang="en">
"no live upstreams" errors
if a "server" inside "upstream" block was marked as "down".
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании HTTPS в рабочем процессе мог произойти segmentation fault;
ошибка появилась в 1.19.5.
</para>
<para lang="en">
a segmentation fault might occur in a worker process if HTTPS was used;
the bug had appeared in 1.19.5.
</para>
</change>
<change type="bugfix">
<para lang="ru">
nginx возвращал ошибку 400 на запросы вида
<nobr>"GET http://example.com?args HTTP/1.0"</nobr>.
</para>
<para lang="en">
nginx returned the 400 response on requests like
<nobr>"GET http://example.com?args HTTP/1.0"</nobr>.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в модулях ngx_http_flv_module и ngx_http_mp4_module.<br/>
Спасибо Chris Newton.
</para>
<para lang="en">
in the ngx_http_flv_module and ngx_http_mp4_module.<br/>
Thanks to Chris Newton.
</para>
</change>
</changes>
<changes ver="1.19.5" date="2020-11-24">
<change type="feature">
<para lang="ru">
ключ -e.
</para>
<para lang="en">
the -e switch.
</para>
</change>
<change type="feature">
<para lang="ru">
при сборке дополнительных модулей
теперь можно указывать одни и те же исходные файлы в разных модулях.
</para>
<para lang="en">
the same source files can now be specified in different modules
while building addon modules.
</para>
</change>
<change type="bugfix">
<para lang="ru">
SSL shutdown не работал
при закрытии соединений с ожиданием дополнительных данных (lingering close).
</para>
<para lang="en">
SSL shutdown did not work
when lingering close was used.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при работе с gRPC-бэкендами
могли возникать ошибки "upstream sent frame for closed stream".
</para>
<para lang="en">
"upstream sent frame for closed stream" errors might occur
when working with gRPC backends.
</para>
</change>
<change type="bugfix">
<para lang="ru">
во внутреннем API для обработки тела запроса.
</para>
<para lang="en">
in request body filters internal API.
</para>
</change>
</changes>
<changes ver="1.19.4" date="2020-10-27">
<change type="feature">
<para lang="ru">
директивы ssl_conf_command, proxy_ssl_conf_command, grpc_ssl_conf_command
и uwsgi_ssl_conf_command.
</para>
<para lang="en">
the "ssl_conf_command", "proxy_ssl_conf_command", "grpc_ssl_conf_command",
and "uwsgi_ssl_conf_command" directives.
</para>
</change>
<change type="feature">
<para lang="ru">
директива ssl_reject_handshake.
</para>
<para lang="en">
the "ssl_reject_handshake" directive.
</para>
</change>
<change type="feature">
<para lang="ru">
директива proxy_smtp_auth в почтовом прокси-сервере.
</para>
<para lang="en">
the "proxy_smtp_auth" directive in mail proxy.
</para>
</change>
</changes>
<changes ver="1.19.3" date="2020-09-29">
<change type="feature">
<para lang="ru">
модуль ngx_stream_set_module.
</para>
<para lang="en">
the ngx_stream_set_module.
</para>
</change>
<change type="feature">
<para lang="ru">
директива proxy_cookie_flags.
</para>
<para lang="en">
the "proxy_cookie_flags" directive.
</para>
</change>
<change type="feature">
<para lang="ru">
директива userid_flags.
</para>
<para lang="en">
the "userid_flags" directive.
</para>
</change>
<change type="bugfix">
<para lang="ru">
расширение управления кэшированием stale-if-error
ошибочно применялось, если бэкенд возвращал ответ
с кодом 500, 502, 503, 504, 403, 404 или 429.
</para>
<para lang="en">
the "stale-if-error" cache control extension
was erroneously applied if backend returned a response
with status code 500, 502, 503, 504, 403, 404, or 429.
</para>
</change>
<change type="bugfix">
<para lang="ru">
если использовалось кэширование
и бэкенд возвращал ответы с строкой заголовка Vary,
в логах могли появляться сообщения "[crit] cache file ... has too long header".
</para>
<para lang="en">
"[crit] cache file ... has too long header" messages might appear in logs
if caching was used
and the backend returned responses with the "Vary" header line.
</para>
</change>
<change type="workaround">
<para lang="ru">
при использовании OpenSSL 1.1.1
в логах могли появляться сообщения "[crit] SSL_write() failed".
</para>
<para lang="en">
"[crit] SSL_write() failed" messages might appear in logs
when using OpenSSL 1.1.1.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в логах могли появляться сообщения
"SSL_shutdown() failed (SSL: ... bad write retry)";
ошибка появилась в 1.19.2.
</para>
<para lang="en">
"SSL_shutdown() failed (SSL: ... bad write retry)"
messages might appear in logs;
the bug had appeared in 1.19.2.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании HTTP/2
в рабочем процессе мог произойти segmentation fault,
если ошибки с кодом 400 с помощью директивы error_page
перенаправлялись в проксируемый location.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
when using HTTP/2
if errors with code 400 were redirected to a proxied location
using the "error_page" directive.
</para>
</change>
<change type="bugfix">
<para lang="ru">
утечки сокетов при использовании HTTP/2 и подзапросов в модуле njs.
</para>
<para lang="en">
socket leak when using HTTP/2 and subrequests in the njs module.
</para>
</change>
</changes>
<changes ver="1.19.2" date="2020-08-11">
<change type="change">
<para lang="ru">
теперь nginx начинает закрывать keepalive-соединения,
не дожидаясь исчерпания всех свободных соединений,
а также пишет об этом предупреждение в лог ошибок.
</para>
<para lang="en">
now nginx starts closing keepalive connections
before all free worker connections are exhausted,
and logs a warning about this to the error log.
</para>
</change>
<change type="change">
<para lang="ru">
оптимизация чтения тела запроса
при использовании chunked transfer encoding.
</para>
<para lang="en">
optimization of client request body reading
when using chunked transfer encoding.
</para>
</change>
<change type="bugfix">
<para lang="ru">
утечки памяти при использовании директивы ssl_ocsp.
</para>
<para lang="en">
memory leak if the "ssl_ocsp" directive was used.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в логах могли появляться сообщения "zero size buf in output",
если FastCGI-сервер возвращал некорректный ответ;
ошибка появилась в 1.19.1.
</para>
<para lang="en">
"zero size buf in output" alerts might appear in logs
if a FastCGI server returned an incorrect response;
the bug had appeared in 1.19.1.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если размеры large_client_header_buffers отличались
в разных виртуальных серверах.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if different large_client_header_buffers sizes were used
in different virtual servers.
</para>
</change>
<change type="bugfix">
<para lang="ru">
SSL shutdown мог не работать.
</para>
<para lang="en">
SSL shutdown might not work.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в логах могли появляться сообщения
"SSL_shutdown() failed (SSL: ... bad write retry)".
</para>
<para lang="en">
"SSL_shutdown() failed (SSL: ... bad write retry)"
messages might appear in logs.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в модуле ngx_http_slice_module.
</para>
<para lang="en">
in the ngx_http_slice_module.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в модуле ngx_http_xslt_filter_module.
</para>
<para lang="en">
in the ngx_http_xslt_filter_module.
</para>
</change>
</changes>
<changes ver="1.19.1" date="2020-07-07">
<change type="change">
<para lang="ru">
директивы lingering_close, lingering_time и lingering_timeout
теперь работают при использовании HTTP/2.
</para>
<para lang="en">
the "lingering_close", "lingering_time", and "lingering_timeout" directives
now work when using HTTP/2.
</para>
</change>
<change type="change">
<para lang="ru">
теперь лишние данные, присланные бэкендом, всегда отбрасываются.
</para>
<para lang="en">
now extra data sent by a backend are always discarded.
</para>
</change>
<change type="change">
<para lang="ru">
теперь при получении слишком короткого ответа от FastCGI-сервера
nginx пытается отправить клиенту доступную часть ответа,
после чего закрывает соединение с клиентом.
</para>
<para lang="en">
now after receiving a too short response from a FastCGI server
nginx tries to send the available part of the response to the client,
and then closes the client connection.
</para>
</change>
<change type="change">
<para lang="ru">
теперь при получении ответа некорректной длины от gRPC-бэкенда
nginx прекращает обработку ответа с ошибкой.
</para>
<para lang="en">
now after receiving a response with incorrect length from a gRPC backend
nginx stops response processing with an error.
</para>
</change>
<change type="feature">
<para lang="ru">
параметр min_free в директивах proxy_cache_path, fastcgi_cache_path,
scgi_cache_path и uwsgi_cache_path.<br/>
Спасибо Adam Bambuch.
</para>
<para lang="en">
the "min_free" parameter of the "proxy_cache_path", "fastcgi_cache_path",
"scgi_cache_path", and "uwsgi_cache_path" directives.<br/>
Thanks to Adam Bambuch.
</para>
</change>
<change type="bugfix">
<para lang="ru">
nginx не удалял unix domain listen-сокеты
при плавном завершении по сигналу SIGQUIT.
</para>
<para lang="en">
nginx did not delete unix domain listen sockets
during graceful shutdown on the SIGQUIT signal.
</para>
</change>
<change type="bugfix">
<para lang="ru">
UDP-пакеты нулевого размера не проксировались.
</para>
<para lang="en">
zero length UDP datagrams were not proxied.
</para>
</change>
<change type="bugfix">
<para lang="ru">
проксирование на uwsgi-бэкенды с использованием SSL могло не работать.<br/>
Спасибо Guanzhong Chen.
</para>
<para lang="en">
proxying to uwsgi backends using SSL might not work.<br/>
Thanks to Guanzhong Chen.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в обработке ошибок при использовании директивы ssl_ocsp.
</para>
<para lang="en">
in error handling when using the "ssl_ocsp" directive.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании файловых систем XFS и NFS
размер кэша на диске мог считаться некорректно.
</para>
<para lang="en">
on XFS and NFS file systems
disk cache size might be calculated incorrectly.
</para>
</change>
<change type="bugfix">
<para lang="ru">
если сервер memcached возвращал некорректный ответ,
в логах могли появляться сообщения "negative size buf in writer".
</para>
<para lang="en">
"negative size buf in writer" alerts might appear in logs
if a memcached server returned a malformed response.
</para>
</change>
</changes>
<changes ver="1.19.0" date="2020-05-26">
<change type="feature">
<para lang="ru">
проверка клиентских сертификатов с помощью OCSP.
</para>
<para lang="en">
client certificate validation with OCSP.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при работе с gRPC-бэкендами
могли возникать ошибки "upstream sent frame for closed stream".
</para>
<para lang="en">
"upstream sent frame for closed stream" errors might occur
when working with gRPC backends.
</para>
</change>
<change type="bugfix">
<para lang="ru">
OCSP stapling мог не работать,
если не была указана директива resolver.
</para>
<para lang="en">
OCSP stapling might not work
if the "resolver" directive was not specified.
</para>
</change>
<change type="bugfix">
<para lang="ru">
соединения с некорректным HTTP/2 preface не логгировались.
</para>
<para lang="en">
connections with incorrect HTTP/2 preface were not logged.
</para>
</change>
</changes>
<changes ver="1.17.10" date="2020-04-14">
<change type="feature">
<para lang="ru">
директива auth_delay.
</para>
<para lang="en">
the "auth_delay" directive.
</para>
</change>
</changes>
<changes ver="1.17.9" date="2020-03-03">
<change type="change">
<para lang="ru">
теперь nginx не разрешает
несколько строк "Host" в заголовке запроса.
</para>
<para lang="en">
now nginx does not allow
several "Host" request header lines.
</para>
</change>
<change type="bugfix">
<para lang="ru">
nginx игнорировал дополнительные
строки "Transfer-Encoding" в заголовке запроса.
</para>
<para lang="en">
nginx ignored additional
"Transfer-Encoding" request header lines.
</para>
</change>
<change type="bugfix">
<para lang="ru">
утечки сокетов при использовании HTTP/2.
</para>
<para lang="en">
socket leak when using HTTP/2.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если использовался OCSP stapling.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if OCSP stapling was used.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в модуле ngx_http_mp4_module.
</para>
<para lang="en">
in the ngx_http_mp4_module.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при перенаправлении ошибок с кодом 494 с помощью директивы error_page
nginx возвращал ответ с кодом 494 вместо 400.
</para>
<para lang="en">
nginx used status code 494 instead of 400
if errors with code 494 were redirected with the "error_page" directive.
</para>
</change>
<change type="bugfix">
<para lang="ru">
утечки сокетов при использовании подзапросов в модуле njs и директивы aio.
</para>
<para lang="en">
socket leak when using subrequests in the njs module and the "aio" directive.
</para>
</change>
</changes>
<changes ver="1.17.8" date="2020-01-21">
<change type="feature">
<para lang="ru">
директива grpc_pass поддерживает переменные.
</para>
<para lang="en">
variables support in the "grpc_pass" directive.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при обработке pipelined-запросов по SSL-соединению мог произойти таймаут;
ошибка появилась в 1.17.5.
</para>
<para lang="en">
a timeout might occur while handling pipelined requests in an SSL connection;
the bug had appeared in 1.17.5.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в директиве debug_points при использовании HTTP/2.<br/>
Спасибо Даниилу Бондареву.
</para>
<para lang="en">
in the "debug_points" directive when using HTTP/2.<br/>
Thanks to Daniil Bondarev.
</para>
</change>
</changes>
<changes ver="1.17.7" date="2019-12-24">
<change type="bugfix">
<para lang="ru">
на старте или во время переконфигурации мог произойти segmentation fault,
если в конфигурации использовалась
директива rewrite с пустой строкой замены.
</para>
<para lang="en">
a segmentation fault might occur on start or during reconfiguration
if the "rewrite" directive with an empty replacement string
was used in the configuration.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если директива break использовалась совместно с директивой alias
или директивой proxy_pass с URI.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if the "break" directive was used with the "alias" directive
or with the "proxy_pass" directive with a URI.
</para>
</change>
<change type="bugfix">
<para lang="ru">
строка Location заголовка ответа могла содержать мусор,
если URI запроса был изменён на URI, содержащий нулевой символ.
</para>
<para lang="en">
the "Location" response header line might contain garbage
if the request URI was rewritten to the one containing a null character.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при возврате перенаправлений с помощью директивы error_page
запросы с телом обрабатывались некорректно;
ошибка появилась в 0.7.12.
</para>
<para lang="en">
requests with bodies were handled incorrectly
when returning redirections with the "error_page" directive;
the bug had appeared in 0.7.12.
</para>
</change>
<change type="bugfix">
<para lang="ru">
утечки сокетов при использовании HTTP/2.
</para>
<para lang="en">
socket leak when using HTTP/2.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при обработке pipelined-запросов по SSL-соединению мог произойти таймаут;
ошибка появилась в 1.17.5.
</para>
<para lang="en">
a timeout might occur while handling pipelined requests in an SSL connection;
the bug had appeared in 1.17.5.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в модуле ngx_http_dav_module.
</para>
<para lang="en">
in the ngx_http_dav_module.
</para>
</change>
</changes>
<changes ver="1.17.6" date="2019-11-19">
<change type="feature">
<para lang="ru">
переменные $proxy_protocol_server_addr и $proxy_protocol_server_port.
</para>
<para lang="en">
the $proxy_protocol_server_addr and $proxy_protocol_server_port variables.
</para>
</change>
<change type="feature">
<para lang="ru">
директива limit_conn_dry_run.
</para>
<para lang="en">
the "limit_conn_dry_run" directive.
</para>
</change>
<change type="feature">
<para lang="ru">
переменные $limit_req_status и $limit_conn_status.
</para>
<para lang="en">
the $limit_req_status and $limit_conn_status variables.
</para>
</change>
</changes>
<changes ver="1.17.5" date="2019-10-22">
<change type="feature">
<para lang="ru">
теперь nginx использует вызов ioctl(FIONREAD), если он доступен,
чтобы избежать чтения из быстрого соединения в течение долгого времени.
</para>
<para lang="en">
now nginx uses ioctl(FIONREAD), if available,
to avoid reading from a fast connection for a long time.
</para>
</change>
<change type="bugfix">
<para lang="ru">
неполные закодированные символы в конце URI запроса игнорировались.
</para>
<para lang="en">
incomplete escaped characters at the end of the request URI were ignored.
</para>
</change>
<change type="bugfix">
<para lang="ru">
"/." и "/.." в конце URI запроса не нормализовывались.
</para>
<para lang="en">
"/." and "/.." at the end of the request URI were not normalized.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в директиве merge_slashes.
</para>
<para lang="en">
in the "merge_slashes" directive.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в директиве ignore_invalid_headers.<br/>
Спасибо Alan Kemp.
</para>
<para lang="en">
in the "ignore_invalid_headers" directive.<br/>
Thanks to Alan Kemp.
</para>
</change>
<change type="bugfix">
<para lang="ru">
nginx не собирался с MinGW-w64 gcc 8.1 и новее.
</para>
<para lang="en">
nginx could not be built with MinGW-w64 gcc 8.1 or newer.
</para>
</change>
</changes>
<changes ver="1.17.4" date="2019-09-24">
<change type="change">
<para lang="ru">
улучшено детектирование некорректного поведения клиентов в HTTP/2.
</para>
<para lang="en">
better detection of incorrect client behavior in HTTP/2.
</para>
</change>
<change type="change">
<para lang="ru">
в обработке непрочитанного тела запроса
при возврате ошибок в HTTP/2.
</para>
<para lang="en">
in handling of not fully read client request body
when returning errors in HTTP/2.
</para>
</change>
<change type="bugfix">
<para lang="ru">
директива worker_shutdown_timeout могла не работать
при использовании HTTP/2.
</para>
<para lang="en">
the "worker_shutdown_timeout" directive might not work
when using HTTP/2.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании HTTP/2 и директивы proxy_request_buffering
в рабочем процессе мог произойти segmentation fault.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
when using HTTP/2 and the "proxy_request_buffering" directive.
</para>
</change>
<change type="bugfix">
<para lang="ru">
на Windows при использовании SSL
уровень записи в лог ошибки ECONNABORTED был "crit" вместо "error".
</para>
<para lang="en">
the ECONNABORTED error log level was "crit" instead of "error"
on Windows when using SSL.
</para>
</change>
<change type="bugfix">
<para lang="ru">
nginx игнорировал лишние данные при использовании chunked transfer encoding.
</para>
<para lang="en">
nginx ignored extra data when using chunked transfer encoding.
</para>
</change>
<change type="bugfix">
<para lang="ru">
если использовалась директива return и
при чтении тела запроса возникала ошибка,
nginx всегда возвращал ошибку 500.
</para>
<para lang="en">
nginx always returned the 500 error
if the "return" directive was used
and an error occurred during reading client request body.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в обработке ошибок выделения памяти.
</para>
<para lang="en">
in memory allocation error handling.
</para>
</change>
</changes>
<changes ver="1.17.3" date="2019-08-13">
<change type="security">
<para lang="ru">
при использовании HTTP/2 клиент мог вызвать
чрезмерное потребление памяти и ресурсов процессора
(CVE-2019-9511, CVE-2019-9513, CVE-2019-9516).
</para>
<para lang="en">
when using HTTP/2 a client might cause
excessive memory consumption and CPU usage
(CVE-2019-9511, CVE-2019-9513, CVE-2019-9516).
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании сжатия в логах могли появляться сообщения "zero size buf";
ошибка появилась в 1.17.2.
</para>
<para lang="en">
"zero size buf" alerts might appear in logs when using gzipping;
the bug had appeared in 1.17.2.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании директивы resolver в SMTP прокси-сервере
в рабочем процессе мог произойти segmentation fault.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if the "resolver" directive was used in SMTP proxy.
</para>
</change>
</changes>
<changes ver="1.17.2" date="2019-07-23">
<change type="change">
<para lang="ru">
минимальная поддерживаемая версия zlib&mdash;1.2.0.4.<br/>
Спасибо Илье Леошкевичу.
</para>
<para lang="en">
minimum supported zlib version is 1.2.0.4.<br/>
Thanks to Ilya Leoshkevich.
</para>
</change>
<change type="change">
<para lang="ru">
метод $r->internal_redirect() встроенного перла
теперь ожидает закодированный URI.
</para>
<para lang="en">
the $r->internal_redirect() embedded perl method
now expects escaped URIs.
</para>
</change>
<change type="feature">
<para lang="ru">
теперь с помощью метода $r->internal_redirect() встроенного перла
можно перейти в именованный location.
</para>
<para lang="en">
it is now possible to switch to a named location
using the $r->internal_redirect() embedded perl method.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в обработке ошибок во встроенном перле.
</para>
<para lang="en">
in error handling in embedded perl.
</para>
</change>
<change type="bugfix">
<para lang="ru">
на старте или во время переконфигурации мог произойти segmentation fault,
если в конфигурации использовалось значение hash bucket size больше 64 килобайт.
</para>
<para lang="en">
a segmentation fault might occur on start or during reconfiguration
if hash bucket size larger than 64 kilobytes was used in the configuration.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании методов обработки соединений select, poll и /dev/poll
nginx мог нагружать процессор во время небуферизованного проксирования
и при проксировании WebSocket-соединений.
</para>
<para lang="en">
nginx might hog CPU during unbuffered proxying
and when proxying WebSocket connections
if the select, poll, or /dev/poll methods were used.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в модуле ngx_http_xslt_filter_module.
</para>
<para lang="en">
in the ngx_http_xslt_filter_module.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в модуле ngx_http_ssi_filter_module.
</para>
<para lang="en">
in the ngx_http_ssi_filter_module.
</para>
</change>
</changes>
<changes ver="1.17.1" date="2019-06-25">
<change type="feature">
<para lang="ru">
директива limit_req_dry_run.
</para>
<para lang="en">
the "limit_req_dry_run" directive.
</para>
</change>
<change type="feature">
<para lang="ru">
при использовании директивы hash в блоке upstream
пустой ключ хэширования теперь приводит к переключению
на round-robin балансировку.<br/>
Спасибо Niklas Keller.
</para>
<para lang="en">
when using the "hash" directive inside the "upstream" block
an empty hash key now triggers round-robin balancing.<br/>
Thanks to Niklas Keller.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если использовалось кэширование и директива image_filter,
а ошибки с кодом 415 перенаправлялись с помощью директивы error_page;
ошибка появилась в 1.11.10.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if caching was used along with the "image_filter" directive,
and errors with code 415 were redirected with the "error_page" directive;
the bug had appeared in 1.11.10.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если использовался встроенный перл;
ошибка появилась в 1.7.3.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if embedded perl was used;
the bug had appeared in 1.7.3.
</para>
</change>
</changes>
<changes ver="1.17.0" date="2019-05-21">
<change type="feature">
<para lang="ru">
директивы limit_rate и limit_rate_after поддерживают переменные.
</para>
<para lang="en">
variables support in the "limit_rate" and "limit_rate_after" directives.
</para>
</change>
<change type="feature">
<para lang="ru">
директивы proxy_upload_rate и proxy_download_rate в модуле stream
поддерживают переменные.
</para>
<para lang="en">
variables support
in the "proxy_upload_rate" and "proxy_download_rate" directives
in the stream module.
</para>
</change>
<change type="change">
<para lang="ru">
минимальная поддерживаемая версия OpenSSL&mdash;0.9.8.
</para>
<para lang="en">
minimum supported OpenSSL version is 0.9.8.
</para>
</change>
<change type="change">
<para lang="ru">
теперь postpone-фильтр собирается всегда.
</para>
<para lang="en">
now the postpone filter is always built.
</para>
</change>
<change type="bugfix">
<para lang="ru">
директива include не работала в блоках if и limit_except.
</para>
<para lang="en">
the "include" directive did not work inside the "if" and "limit_except" blocks.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в обработке byte ranges.
</para>
<para lang="en">
in byte ranges processing.
</para>
</change>
</changes>
<changes ver="1.15.12" date="2019-04-16">
<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если в директивах ssl_certificate или ssl_certificate_key
использовались переменные
и был включён OCSP stapling.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if variables were used
in the "ssl_certificate" or "ssl_certificate_key" directives
and OCSP stapling was enabled.
</para>
</change>
</changes>
<changes ver="1.15.11" date="2019-04-09">
<change type="bugfix">
<para lang="ru">
в директиве ssl_stapling_file на Windows.
</para>
<para lang="en">
in the "ssl_stapling_file" directive on Windows.
</para>
</change>
</changes>
<changes ver="1.15.10" date="2019-03-26">
<change type="change">
<para lang="ru">
теперь при использовании имени хоста в директиве listen
nginx создаёт listen-сокеты для всех адресов,
соответствующих этому имени
(ранее использовался только первый адрес).
</para>
<para lang="en">
when using a hostname in the "listen" directive
nginx now creates listening sockets
for all addresses the hostname resolves to
(previously, only the first address was used).
</para>
</change>
<change type="feature">
<para lang="ru">
диапазоны портов в директиве listen.
</para>
<para lang="en">
port ranges in the "listen" directive.
</para>
</change>
<change type="feature">
<para lang="ru">
возможность загрузки SSL-сертификатов и секретных ключей из переменных.
</para>
<para lang="en">
loading of SSL certificates and secret keys from variables.
</para>
</change>
<change type="workaround">
<para lang="ru">
переменная $ssl_server_name могла быть пустой
при использовании OpenSSL 1.1.1.
</para>
<para lang="en">
the $ssl_server_name variable might be empty
when using OpenSSL 1.1.1.
</para>
</change>
<change type="bugfix">
<para lang="ru">
nginx/Windows не собирался с Visual Studio 2015 и новее;
ошибка появилась в 1.15.9.
</para>
<para lang="en">
nginx/Windows could not be built with Visual Studio 2015 or newer;
the bug had appeared in 1.15.9.
</para>
</change>
</changes>
<changes ver="1.15.9" date="2019-02-26">
<change type="feature">
<para lang="ru">
директивы ssl_certificate и ssl_certificate_key
поддерживают переменные.
</para>
<para lang="en">
variables support
in the "ssl_certificate" and "ssl_certificate_key" directives.
</para>
</change>
<change type="feature">
<para lang="ru">
метод poll теперь доступен на Windows
при использовании Windows Vista и новее.
</para>
<para lang="en">
the "poll" method is now available on Windows
when using Windows Vista or newer.
</para>
</change>
<change type="bugfix">
<para lang="ru">
если при использовании метода select на Windows
происходила ошибка при установлении соединения с бэкендом,
nginx ожидал истечения таймаута на установление соединения.
</para>
<para lang="en">
if the "select" method was used on Windows
and an error occurred while establishing a backend connection,
nginx waited for the connection establishment timeout to expire.
</para>
</change>
<change type="bugfix">
<para lang="ru">
директивы proxy_upload_rate и proxy_download_rate
в модуле stream
работали некорректно при проксировании UDP-пакетов.
</para>
<para lang="en">
the "proxy_upload_rate" and "proxy_download_rate" directives
in the stream module
worked incorrectly when proxying UDP datagrams.
</para>
</change>
</changes>
<changes ver="1.15.8" date="2018-12-25">
<change type="feature">
<para lang="ru">
переменная $upstream_bytes_sent.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
the $upstream_bytes_sent variable.<br/>
Thanks to Piotr Sikora.
</para>
</change>
<change type="feature">
<para lang="ru">
новые директивы в скриптах подсветки синтаксиса для vim.<br/>
Спасибо Геннадию Махомеду.
</para>
<para lang="en">
new directives in vim syntax highlighting scripts.<br/>
Thanks to Gena Makhomed.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в директиве proxy_cache_background_update.
</para>
<para lang="en">
in the "proxy_cache_background_update" directive.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в директиве geo при использовании unix domain listen-сокетов.
</para>
<para lang="en">
in the "geo" directive when using unix domain listen sockets.
</para>
</change>
<change type="workaround">
<para lang="ru">
при использовании директивы ssl_early_data с OpenSSL
в логах могли появляться сообщения
"ignoring stale global SSL error ... bad length".
</para>
<para lang="en">
the "ignoring stale global SSL error ... bad length"
alerts might appear in logs
when using the "ssl_early_data" directive with OpenSSL.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в nginx/Windows.
</para>
<para lang="en">
in nginx/Windows.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в модуле ngx_http_autoindex_module на 32-битных платформах.
</para>
<para lang="en">
in the ngx_http_autoindex_module on 32-bit platforms.
</para>
</change>
</changes>
<changes ver="1.15.7" date="2018-11-27">
<change type="feature">
<para lang="ru">
директива proxy_requests в модуле stream.
</para>
<para lang="en">
the "proxy_requests" directive in the stream module.
</para>
</change>
<change type="feature">
<para lang="ru">
параметр "delay" директивы "limit_req".<br/>
Спасибо Владиславу Шабанову и Петру Щучкину.
</para>
<para lang="en">
the "delay" parameter of the "limit_req" directive.<br/>
Thanks to Vladislav Shabanov and Peter Shchuchkin.
</para>
</change>
<change type="bugfix">
<para lang="ru">
утечки памяти в случае ошибок при переконфигурации.
</para>
<para lang="en">
memory leak on errors during reconfiguration.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в переменных $upstream_response_time, $upstream_connect_time и
$upstream_header_time.
</para>
<para lang="en">
in the $upstream_response_time, $upstream_connect_time, and
$upstream_header_time variables.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если использовался модуль ngx_http_mp4_module на 32-битных платформах.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if the ngx_http_mp4_module was used on 32-bit platforms.
</para>
</change>
</changes>
<changes ver="1.15.6" date="2018-11-06">
<change type="security">
<para lang="ru">
при использовании HTTP/2 клиент мог вызвать
чрезмерное потреблению памяти (CVE-2018-16843)
и ресурсов процессора (CVE-2018-16844).
</para>
<para lang="en">
when using HTTP/2 a client might cause
excessive memory consumption (CVE-2018-16843)
and CPU usage (CVE-2018-16844).
</para>
</change>
<change type="security">
<para lang="ru">
при обработке специально созданного mp4-файла модулем ngx_http_mp4_module
содержимое памяти рабочего процесса могло быть отправлено клиенту
(CVE-2018-16845).
</para>
<para lang="en">
processing of a specially crafted mp4 file with the ngx_http_mp4_module
might result in worker process memory disclosure
(CVE-2018-16845).
</para>
</change>
<change type="feature">
<para lang="ru">
директивы proxy_socket_keepalive, fastcgi_socket_keepalive,
grpc_socket_keepalive, memcached_socket_keepalive,
scgi_socket_keepalive и uwsgi_socket_keepalive.
</para>
<para lang="en">
the "proxy_socket_keepalive", "fastcgi_socket_keepalive",
"grpc_socket_keepalive", "memcached_socket_keepalive",
"scgi_socket_keepalive", and "uwsgi_socket_keepalive" directives.
</para>
</change>
<change type="bugfix">
<para lang="ru">
если nginx был собран с OpenSSL 1.1.0, а использовался с OpenSSL 1.1.1,
протокол TLS 1.3 всегда был разрешён.
</para>
<para lang="en">
if nginx was built with OpenSSL 1.1.0 and used with OpenSSL 1.1.1,
the TLS 1.3 protocol was always enabled.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при работе с gRPC-бэкендами могло расходоваться большое количество памяти.
</para>
<para lang="en">
working with gRPC backends might result in excessive memory consumption.
</para>
</change>
</changes>
<changes ver="1.15.5" date="2018-10-02">
<change type="bugfix">
<para lang="ru">
при использовании OpenSSL 1.1.0h и новее
в рабочем процессе мог произойти segmentation fault;
ошибка появилась в 1.15.4.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
when using OpenSSL 1.1.0h or newer;
the bug had appeared in 1.15.4.
</para>
</change>
<change type="bugfix">
<para lang="ru">
незначительных потенциальных ошибок.
</para>
<para lang="en">
of minor potential bugs.
</para>
</change>
</changes>
<changes ver="1.15.4" date="2018-09-25">
<change type="feature">
<para lang="ru">
теперь директиву ssl_early_data можно использовать с OpenSSL.
</para>
<para lang="en">
now the "ssl_early_data" directive can be used with OpenSSL.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в модуле ngx_http_uwsgi_module.<br/>
Спасибо Chris Caputo.
</para>
<para lang="en">
in the ngx_http_uwsgi_module.<br/>
Thanks to Chris Caputo.
</para>
</change>
<change type="bugfix">
<para lang="ru">
соединения к некоторым gRPC-бэкендам могли не кэшироваться
при использовании директивы keepalive.
</para>
<para lang="en">
connections with some gRPC backends might not be cached
when using the "keepalive" directive.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании директивы error_page для перенаправления ошибок,
возникающих на ранних этапах обработки запроса,
в частности ошибок с кодом 400,
могла происходить утечка сокетов.
</para>
<para lang="en">
a socket leak might occur
when using the "error_page" directive
to redirect early request processing errors,
notably errors with code 400.
</para>
</change>
<change type="bugfix">
<para lang="ru">
директива return при возврате ошибок не изменяла код ответа,
если запрос был перенаправлен с помощью директивы error_page.
</para>
<para lang="en">
the "return" directive did not change the response code when returning errors
if the request was redirected by the "error_page" directive.
</para>
</change>
<change type="bugfix">
<para lang="ru">
стандартные сообщения об ошибках и ответы модуля ngx_http_autoindex_module
содержали атрибут bgcolor, что могло приводить к их некорректному отображению
при использовании пользовательских настроек цветов в браузерах.<br/>
Спасибо Nova DasSarma.
</para>
<para lang="en">
standard error pages and responses of the ngx_http_autoindex_module module
used the "bgcolor" attribute, and might be displayed incorrectly when using
custom color settings in browsers.<br/>
Thanks to Nova DasSarma.
</para>
</change>
<change type="change">
<para lang="ru">
уровень логгирования ошибок SSL "no suitable key share" и
"no suitable signature algorithm"
понижен с уровня crit до info.
</para>
<para lang="en">
the logging level of the "no suitable key share" and
"no suitable signature algorithm" SSL errors
has been lowered from "crit" to "info".
</para>
</change>
</changes>
<changes ver="1.15.3" date="2018-08-28">
<change type="feature">
<para lang="ru">
теперь TLSv1.3 можно использовать с BoringSSL.
</para>
<para lang="en">
now TLSv1.3 can be used with BoringSSL.
</para>
</change>
<change type="feature">
<para lang="ru">
директива ssl_early_data,
сейчас доступна при использовании BoringSSL.
</para>
<para lang="en">
the "ssl_early_data" directive,
currently available with BoringSSL.
</para>
</change>
<change type="feature">
<para lang="ru">
директивы keepalive_timeout и keepalive_requests
в блоке upstream.
</para>
<para lang="en">
the "keepalive_timeout" and "keepalive_requests" directives
in the "upstream" block.
</para>
</change>
<change type="bugfix">
<para lang="ru">
модуль ngx_http_dav_module
при копировании файла поверх существующего файла с помощью метода COPY
не обнулял целевой файл.
</para>
<para lang="en">
the ngx_http_dav_module
did not truncate destination file when copying a file over an existing one
with the COPY method.
</para>
</change>
<change type="bugfix">
<para lang="ru">
модуль ngx_http_dav_module
при перемещении файла между файловыми системами с помощью метода MOVE
устанавливал нулевые права доступа на результирующий файл
и не сохранял время изменения файла.
</para>
<para lang="en">
the ngx_http_dav_module
used zero access rights on the destination file
and did not preserve file modification time
when moving a file between different file systems with the MOVE method.
</para>
</change>
<change type="bugfix">
<para lang="ru">
модуль ngx_http_dav_module
при копировании файла с помощью метода COPY
для результирующего файла использовал права доступа по умолчанию.
</para>
<para lang="en">
the ngx_http_dav_module
used default access rights
when copying a file with the COPY method.
</para>
</change>
<change type="workaround">
<para lang="ru">
некоторые клиенты могли не работать при использовании HTTP/2;
ошибка появилась в 1.13.5.
</para>
<para lang="en">
some clients might not work when using HTTP/2;
the bug had appeared in 1.13.5.
</para>
</change>
<change type="bugfix">
<para lang="ru">
nginx не собирался с LibreSSL 2.8.0.
</para>
<para lang="en">
nginx could not be built with LibreSSL 2.8.0.
</para>
</change>
</changes>
<changes ver="1.15.2" date="2018-07-24">
<change type="feature">
<para lang="ru">
переменная $ssl_preread_protocol
в модуле ngx_stream_ssl_preread_module.
</para>
<para lang="en">
the $ssl_preread_protocol variable
in the ngx_stream_ssl_preread_module.
</para>
</change>
<change type="feature">
<para lang="ru">
теперь при использовании директивы reset_timedout_connection
nginx сбрасывает соединения, закрываемые с кодом 444.
</para>
<para lang="en">
now when using the "reset_timedout_connection" directive
nginx will reset connections being closed with the 444 code.
</para>
</change>
<change type="change">
<para lang="ru">
уровень логгирования ошибок SSL "http request", "https proxy request",
"unsupported protocol" и "version too low"
понижен с уровня crit до info.
</para>
<para lang="en">
a logging level of the "http request", "https proxy request",
"unsupported protocol", and "version too low" SSL errors
has been lowered from "crit" to "info".
</para>
</change>
<change type="bugfix">
<para lang="ru">
запросы к DNS-серверу не отправлялись повторно,
если при первой попытке отправки происходила ошибка.
</para>
<para lang="en">
DNS requests were not resent
if initial sending of a request failed.
</para>
</change>
<change type="bugfix">
<para lang="ru">
параметр reuseport директивы listen игнорировался,
если количество рабочих процессов было задано после директивы listen.
</para>
<para lang="en">
the "reuseport" parameter of the "listen" directive was ignored
if the number of worker processes was specified after the "listen" directive.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании OpenSSL 1.1.0 и новее
директиву ssl_prefer_server_ciphers нельзя было выключить
в виртуальном сервере, если она была включена в сервере по умолчанию.
</para>
<para lang="en">
when using OpenSSL 1.1.0 or newer
it was not possible to switch off "ssl_prefer_server_ciphers" in
a virtual server if it was switched on in the default server.
</para>
</change>
<change type="bugfix">
<para lang="ru">
повторное использование SSL-сессий к бэкендам
не работало с протоколом TLS 1.3.
</para>
<para lang="en">
SSL session reuse with upstream servers
did not work with the TLS 1.3 protocol.
</para>
</change>
</changes>
<changes ver="1.15.1" date="2018-07-03">
<change type="feature">
<para lang="ru">
директива random в блоке upstream.
</para>
<para lang="en">
the "random" directive inside the "upstream" block.
</para>
</change>
<change type="feature">
<para lang="ru">
улучшена производительность при использовании директив hash и ip_hash
совместно с директивой zone.
</para>
<para lang="en">
improved performance when using the "hash" and "ip_hash" directives
with the "zone" directive.
</para>
</change>
<change type="feature">
<para lang="ru">
параметр reuseport директивы listen
теперь использует SO_REUSEPORT_LB на FreeBSD 12.
</para>
<para lang="en">
the "reuseport" parameter of the "listen" directive
now uses SO_REUSEPORT_LB on FreeBSD 12.
</para>
</change>
<change type="bugfix">
<para lang="ru">
HTTP/2 server push не работал, если SSL терминировался прокси-сервером
перед nginx'ом.
</para>
<para lang="en">
HTTP/2 server push did not work if SSL was terminated by a proxy server
in front of nginx.
</para>
</change>
<change type="bugfix">
<para lang="ru">
директива tcp_nopush всегда использовалась для соединений к бэкендам.
</para>
<para lang="en">
the "tcp_nopush" directive was always used on backend connections.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при отправке сохранённого на диск тела запроса на gRPC-бэкенд
могли возникать ошибки.
</para>
<para lang="en">
sending a disk-buffered request body to a gRPC backend
might fail.
</para>
</change>
</changes>
<changes ver="1.15.0" date="2018-06-05">
<change type="change">
<para lang="ru">
директива "ssl" теперь считается устаревшей;
вместо неё следует использовать параметр ssl директивы listen.
</para>
<para lang="en">
the "ssl" directive is deprecated;
the "ssl" parameter of the "listen" directive should be used instead.
</para>
</change>
<change type="change">
<para lang="ru">
теперь при использовании директивы listen с параметром ssl
nginx определяет отсутствие SSL-сертификатов при тестировании конфигурации.
</para>
<para lang="en">
now nginx detects missing SSL certificates during configuration testing
when using the "ssl" parameter of the "listen" directive.
</para>
</change>
<change type="feature">
<para lang="ru">
теперь модуль stream умеет обрабатывать
несколько входящих UDP-пакетов от клиента в рамках одной сессии.
</para>
<para lang="en">
now the stream module can handle
multiple incoming UDP datagrams from a client within a single session.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в директиве proxy_cache_valid
можно было указать некорректный код ответа.
</para>
<para lang="en">
it was possible to specify an incorrect response code
in the "proxy_cache_valid" directive.
</para>
</change>
<change type="bugfix">
<para lang="ru">
nginx не собирался gcc 8.1.
</para>
<para lang="en">
nginx could not be built by gcc 8.1.
</para>
</change>
<change type="bugfix">
<para lang="ru">
логгирование в syslog останавливалось при изменении локального IP-адреса.
</para>
<para lang="en">
logging to syslog stopped on local IP address changes.
</para>
</change>
<change type="bugfix">
<para lang="ru">
nginx не собирался компилятором clang, если был установлен CUDA SDK;
ошибка появилась в 1.13.8.
</para>
<para lang="en">
nginx could not be built by clang with CUDA SDK installed;
the bug had appeared in 1.13.8.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании unix domain listen-сокетов на FreeBSD
в процессе обновления исполняемого файла
в логе могли появляться сообщения "getsockopt(TCP_FASTOPEN) ... failed".
</para>
<para lang="en">
"getsockopt(TCP_FASTOPEN) ... failed" messages might appear in logs
during binary upgrade
when using unix domain listen sockets on FreeBSD.
</para>
</change>
<change type="bugfix">
<para lang="ru">
nginx не собирался на Fedora 28 Linux.
</para>
<para lang="en">
nginx could not be built on Fedora 28 Linux.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании директивы limit_req
заданная скорость обработки запросов могла не соблюдаться.
</para>
<para lang="en">
request processing rate might exceed configured rate
when using the "limit_req" directive.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в обработке адресов клиентов при использовании unix domain listen-сокетов
для работы с датаграммами на Linux.
</para>
<para lang="en">
in handling of client addresses when using unix domain listen sockets
to work with datagrams on Linux.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в обработке ошибок выделения памяти.
</para>
<para lang="en">
in memory allocation error handling.
</para>
</change>
</changes>
<changes ver="1.13.12" date="2018-04-10">
<change type="bugfix">
<para lang="ru">
при возврате большого ответа
соединения с gRPC-бэкендами могли неожиданно закрываться.
</para>
<para lang="en">
connections with gRPC backends might be closed unexpectedly
when returning a large response.
</para>
</change>
</changes>
<changes ver="1.13.11" date="2018-04-03">
<change type="feature">
<para lang="ru">
параметр proxy_protocol директивы listen
теперь поддерживает протокол PROXY версии 2.
</para>
<para lang="en">
the "proxy_protocol" parameter of the "listen" directive
now supports the PROXY protocol version 2.
</para>
</change>
<change type="bugfix">
<para lang="ru">
nginx не собирался с OpenSSL 1.1.1 статически на Linux.
</para>
<para lang="en">
nginx could not be built with OpenSSL 1.1.1 statically on Linux.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в параметрах http_404, http_500 и им подобных
директивы proxy_next_upstream.
</para>
<para lang="en">
in the "http_404", "http_500", etc. parameters
of the "proxy_next_upstream" directive.
</para>
</change>
</changes>
<changes ver="1.13.10" date="2018-03-20">
<change type="feature">
<para lang="ru">
теперь параметр set в SSI-директиве include
позволяет сохранять в переменную любые ответы;
максимальный размер ответа задаётся директивой subrequest_output_buffer_size.
</para>
<para lang="en">
the "set" parameter of the "include" SSI directive now allows
writing arbitrary responses to a variable;
the "subrequest_output_buffer_size" directive defines maximum response size.
</para>
</change>
<change type="feature">
<para lang="ru">
теперь nginx использует вызов clock_gettime(CLOCK_MONOTONIC), если он доступен,
что позволяет избежать некорректного срабатывания таймаутов
при изменениях системного времени.
</para>
<para lang="en">
now nginx uses clock_gettime(CLOCK_MONOTONIC) if available,
to avoid timeouts being incorrectly triggered
on system time changes.
</para>
</change>
<change type="feature">
<para lang="ru">
параметр "escape=none" директивы log_format.<br/>
Спасибо Johannes Baiter и Calin Don.
</para>
<para lang="en">
the "escape=none" parameter of the "log_format" directive.<br/>
Thanks to Johannes Baiter and Calin Don.
</para>
</change>
<change type="feature">
<para lang="ru">
переменная $ssl_preread_alpn_protocols
в модуле ngx_stream_ssl_preread_module.
</para>
<para lang="en">
the $ssl_preread_alpn_protocols variable
in the ngx_stream_ssl_preread_module.
</para>
</change>
<change type="feature">
<para lang="ru">
модуль ngx_http_grpc_module.
</para>
<para lang="en">
the ngx_http_grpc_module.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в обработке ошибок выделения памяти в директиве geo.
</para>
<para lang="en">
in memory allocation error handling in the "geo" directive.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании переменных в директиве auth_basic_user_file
в лог мог выводиться символ '\0'.<br/>
Спасибо Вадиму Филимонову.
</para>
<para lang="en">
when using variables in the "auth_basic_user_file" directive
a null character might appear in logs.<br/>
Thanks to Vadim Filimonov.
</para>
</change>
</changes>
<changes ver="1.13.9" date="2018-02-20">
<change type="feature">
<para lang="ru">
поддержка HTTP/2 server push;
директивы http2_push и http2_push_preload.
</para>
<para lang="en">
HTTP/2 server push support;
the "http2_push" and "http2_push_preload" directives.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании кэша
в логах могли появляться сообщения "header already sent";
ошибка появилась в 1.9.13.
</para>
<para lang="en">
"header already sent" alerts might appear in logs
when using cache;
the bug had appeared in 1.9.13.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании директивы ssl_verify_client
в рабочем процессе мог произойти segmentation fault,
если в виртуальном сервере не был указан SSL-сертификат.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if the "ssl_verify_client" directive was used
and no SSL certificate was specified in a virtual server.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в модуле ngx_http_v2_module.
</para>
<para lang="en">
in the ngx_http_v2_module.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в модуле ngx_http_dav_module.
</para>
<para lang="en">
in the ngx_http_dav_module.
</para>
</change>
</changes>
<changes ver="1.13.8" date="2017-12-26">
<change type="feature">
<para lang="ru">
теперь при использовании параметра transparent директив proxy_bind,
fastcgi_bind, memcached_bind, scgi_bind и uwsgi_bind
nginx автоматически сохраняет capability CAP_NET_RAW в рабочих процессах.
</para>
<para lang="en">
now nginx automatically preserves the CAP_NET_RAW capability in worker processes
when using the "transparent" parameter of the "proxy_bind",
"fastcgi_bind", "memcached_bind", "scgi_bind", and "uwsgi_bind" directives.
</para>
</change>
<change type="feature">
<para lang="ru">
улучшения в определении размера строки кэша процессора.<br/>
Спасибо Debayan Ghosh.
</para>
<para lang="en">
improved CPU cache line size detection.<br/>
Thanks to Debayan Ghosh.
</para>
</change>
<change type="feature">
<para lang="ru">
новые директивы в скриптах подсветки синтаксиса для vim.<br/>
Спасибо Геннадию Махомеду.
</para>
<para lang="en">
new directives in vim syntax highlighting scripts.<br/>
Thanks to Gena Makhomed.
</para>
</change>
<change type="bugfix">
<para lang="ru">
процедура обновления исполняемого файла не работала,
если после завершения родительского процесса
новым родительским процессом nginx'а становился процесс с PID, отличным от 1.
</para>
<para lang="en">
binary upgrade refused to work
if nginx was re-parented to a process with PID different from 1
after its parent process has finished.
</para>
</change>
<change type="bugfix">
<para lang="ru">
модуль ngx_http_autoindex_module неправильно обрабатывал запросы с телом.
</para>
<para lang="en">
the ngx_http_autoindex_module incorrectly handled requests with bodies.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в директиве proxy_limit_rate при использовании с директивой keepalive.
</para>
<para lang="en">
in the "proxy_limit_rate" directive when used with the "keepalive" directive.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании "proxy_buffering off" часть ответа могла буферизироваться,
если клиентское соединение использовало SSL.<br/>
Спасибо Patryk Lesiewicz.
</para>
<para lang="en">
some parts of a response might be buffered when using "proxy_buffering off"
if the client connection used SSL.<br/>
Thanks to Patryk Lesiewicz.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в директиве proxy_cache_background_update.
</para>
<para lang="en">
in the "proxy_cache_background_update" directive.
</para>
</change>
<change type="bugfix">
<para lang="ru">
переменную вида "${name}" с именем в фигурных скобках
нельзя было использовать в начале параметра
не заключив весь параметр в кавычки.
</para>
<para lang="en">
it was not possible to start a parameter
with a variable in the "${name}" form with the name in curly brackets
without enclosing the parameter into single or double quotes.
</para>
</change>
</changes>
<changes ver="1.13.7" date="2017-11-21">
<change type="bugfix">
<para lang="ru">
в переменной $upstream_status.
</para>
<para lang="en">
in the $upstream_status variable.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если бэкенд возвращал ответ "101 Switching Protocols" на подзапрос.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if a backend returned a "101 Switching Protocols" response to a subrequest.
</para>
</change>
<change type="bugfix">
<para lang="ru">
если при переконфигурации изменялся размер зоны разделяемой памяти
и переконфигурация завершалась неудачно,
то в главном процессе происходил segmentation fault.
</para>
<para lang="en">
a segmentation fault occurred in a master process
if a shared memory zone size was changed during a reconfiguration
and the reconfiguration failed.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в модуле ngx_http_fastcgi_module.
</para>
<para lang="en">
in the ngx_http_fastcgi_module.
</para>
</change>
<change type="bugfix">
<para lang="ru">
nginx возвращал ошибку 500,
если в директиве xslt_stylesheet
были заданы параметры без использования переменных.
</para>
<para lang="en">
nginx returned the 500 error
if parameters without variables were specified
in the "xslt_stylesheet" directive.
</para>
</change>
<change type="workaround">
<para lang="ru">
при использовании варианта библиотеки zlib от Intel
в лог писались сообщения "gzip filter failed to use preallocated memory".
</para>
<para lang="en">
"gzip filter failed to use preallocated memory" alerts appeared in logs
when using a zlib library variant from Intel.
</para>
</change>
<change type="bugfix">
<para lang="ru">
директива worker_shutdown_timeout не работала
при использовании почтового прокси-сервера
и при проксировании WebSocket-соединений.
</para>
<para lang="en">
the "worker_shutdown_timeout" directive did not work
when using mail proxy and when proxying WebSocket connections.
</para>
</change>
</changes>
<changes ver="1.13.6" date="2017-10-10">
<change type="bugfix">
<para lang="ru">
при использовании директивы ssl_preread
в модуле stream не работало переключение на следующий бэкенд.
</para>
<para lang="en">
switching to the next upstream server in the stream module did not work
when using the "ssl_preread" directive.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в модуле ngx_http_v2_module.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
in the ngx_http_v2_module.<br/>
Thanks to Piotr Sikora.
</para>
</change>
<change type="bugfix">
<para lang="ru">
nginx не поддерживал даты после 2038 года
на 32-битных платформах с 64-битным time_t.
</para>
<para lang="en">
nginx did not support dates after the year 2038
on 32-bit platforms with 64-bit time_t.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в обработке дат до 1970 года и после 10000 года.
</para>
<para lang="en">
in handling of dates prior to the year 1970 and after the year 10000.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в модуле stream таймауты ожидания UDP-пакетов от бэкендов
не логгировались или логгировались на уровне info вместо error.
</para>
<para lang="en">
in the stream module timeouts waiting for UDP datagrams from upstream servers
were not logged or logged at the "info" level instead of "error".
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании HTTP/2 nginx мог вернуть ошибку 400,
не указав в логе причину.
</para>
<para lang="en">
when using HTTP/2 nginx might return the 400 response
without logging the reason.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в обработке повреждённых файлов кэша.
</para>
<para lang="en">
in processing of corrupted cache files.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при кэшировании ошибок, перехваченных error_page,
не учитывались заголовки управления кэшированием.
</para>
<para lang="en">
cache control headers were ignored
when caching errors intercepted by error_page.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании HTTP/2 тело запроса могло быть повреждено.
</para>
<para lang="en">
when using HTTP/2 client request body might be corrupted.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в обработке адресов клиентов при использовании unix domain сокетов.
</para>
<para lang="en">
in handling of client addresses when using unix domain sockets.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании директивы "hash ... consistent" в блоке upstream
nginx нагружал процессор, если использовались большие веса
и все или почти все бэкенды были недоступны.
</para>
<para lang="en">
nginx hogged CPU
when using the "hash ... consistent" directive in the upstream block
if large weights were used and all or most of the servers were unavailable.
</para>
</change>
</changes>
<changes ver="1.13.5" date="2017-09-05">
<change type="feature">
<para lang="ru">
переменная $ssl_client_escaped_cert.
</para>
<para lang="en">
the $ssl_client_escaped_cert variable.
</para>
</change>
<change type="bugfix">
<para lang="ru">
директива ssl_session_ticket_key и параметр include директивы geo
не работали на Windows.
</para>
<para lang="en">
the "ssl_session_ticket_key" directive and
the "include" parameter of the "geo" directive did not work on Windows.
</para>
</change>
<change type="bugfix">
<para lang="ru">
на 32-битных платформах
при запросе более 4 гигабайт с помощью нескольких диапазонов
возвращалась некорректная длина ответа.
</para>
<para lang="en">
incorrect response length was returned
on 32-bit platforms when requesting more than 4 gigabytes
with multiple ranges.
</para>
</change>
<change type="bugfix">
<para lang="ru">
директива "expires modified" и
обработка строки If-Range заголовка запроса
не учитывали время последнего изменения ответа,
если использовалось проксирование без кэширования.
</para>
<para lang="en">
the "expires modified" directive and
processing of the "If-Range" request header line
did not use the response last modification time
if proxying without caching was used.
</para>
</change>
</changes>
<changes ver="1.13.4" date="2017-08-08">
<change type="feature">
<para lang="ru">
модуль ngx_http_mirror_module.
</para>
<para lang="en">
the ngx_http_mirror_module.
</para>
</change>
<change type="bugfix">
<para lang="ru">
клиентские соединения могли сбрасываться при тестировании конфигурации,
если использовался параметр reuseport директивы listen на Linux.
</para>
<para lang="en">
client connections might be dropped during configuration testing
when using the "reuseport" parameter of the "listen" directive on Linux.
</para>
</change>
<change type="bugfix">
<para lang="ru">
тело запроса могло быть недоступно в подзапросах,
если оно было сохранено в файл и использовалось проксирование.
</para>
<para lang="en">
request body might not be available in subrequests
if it was saved to a file and proxying was used.
</para>
</change>
<change type="bugfix">
<para lang="ru">
очистка кэша по max_size не работала на Windows.
</para>
<para lang="en">
cleaning cache based on the "max_size" parameter did not work on Windows.
</para>
</change>
<change type="bugfix">
<para lang="ru">
любое выделение разделяемой памяти на Windows требовало 4096 байт памяти.
</para>
<para lang="en">
any shared memory allocation required 4096 bytes on Windows.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании директивы zone в блоке upstream на Windows
рабочий процесс мог завершаться аварийно.
</para>
<para lang="en">
nginx worker might be terminated abnormally
when using the "zone" directive inside the "upstream" block on Windows.
</para>
</change>
</changes>
<changes ver="1.13.3" date="2017-07-11">
<change type="security">
<para lang="ru">
специально созданный запрос мог вызвать целочисленное переполнение
в range-фильтре и последующую некорректную обработку запрошенных диапазонов,
что потенциально могло привести к утечке конфиденциальной информации
(CVE-2017-7529).
</para>
<para lang="en">
a specially crafted request might result in an integer overflow
and incorrect processing of ranges in the range filter,
potentially resulting in sensitive information leak
(CVE-2017-7529).
</para>
</change>
</changes>
<changes ver="1.13.2" date="2017-06-27">
<change type="change">
<para lang="ru">
теперь при запросе диапазона, начинающегося с 0, из пустого файла
nginx возвращает ответ 200 вместо 416.
</para>
<para lang="en">
nginx now returns 200 instead of 416
when a range starting with 0 is requested from an empty file.
</para>
</change>
<change type="feature">
<para lang="ru">
директива add_trailer.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
the "add_trailer" directive.<br/>
Thanks to Piotr Sikora.
</para>
</change>
<change type="bugfix">
<para lang="ru">
nginx не собирался под Cygwin и NetBSD;
ошибка появилась в 1.13.0.
</para>
<para lang="en">
nginx could not be built on Cygwin and NetBSD;
the bug had appeared in 1.13.0.
</para>
</change>
<change type="bugfix">
<para lang="ru">
nginx не собирался под MSYS2 / MinGW 64-bit.<br/>
Спасибо Orgad Shaneh.
</para>
<para lang="en">
nginx could not be built under MSYS2 / MinGW 64-bit.<br/>
Thanks to Orgad Shaneh.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании SSI с большим количеством подзапросов
и proxy_pass с переменными
в рабочем процессе мог произойти segmentation fault.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
when using SSI with many includes
and proxy_pass with variables.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в модуле ngx_http_v2_module.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
in the ngx_http_v2_module.<br/>
Thanks to Piotr Sikora.
</para>
</change>
</changes>
<changes ver="1.13.1" date="2017-05-30">
<change type="feature">
<para lang="ru">
теперь в качестве параметра директивы set_real_ip_from
можно указывать имя хоста.
</para>
<para lang="en">
now a hostname can be used
as the "set_real_ip_from" directive parameter.
</para>
</change>
<change type="feature">
<para lang="ru">
улучшения в скриптах подсветки синтаксиса для vim.
</para>
<para lang="en">
vim syntax highlighting scripts improvements.
</para>
</change>
<change type="feature">
<para lang="ru">
директива worker_cpu_affinity теперь работает на DragonFly BSD.<br/>
Спасибо Sepherosa Ziehau.
</para>
<para lang="en">
the "worker_cpu_affinity" directive now works on DragonFly BSD.<br/>
Thanks to Sepherosa Ziehau.
</para>
</change>
<change type="bugfix">
<para lang="ru">
SSL renegotiation в соединениях к бэкендам
не работал при использовании OpenSSL до 1.1.0.
</para>
<para lang="en">
SSL renegotiation on backend connections
did not work when using OpenSSL before 1.1.0.
</para>
</change>
<change type="workaround">
<para lang="ru">
nginx не собирался с Oracle Developer Studio 12.5.
</para>
<para lang="en">
nginx could not be built with Oracle Developer Studio 12.5.
</para>
</change>
<change type="workaround">
<para lang="ru">
теперь cache manager пропускает заблокированные записи
при очистке кэша по max_size.
</para>
<para lang="en">
now cache manager ignores long locked cache entries
when cleaning cache based on the "max_size" parameter.
</para>
</change>
<change type="bugfix">
<para lang="ru">
клиентские SSL-соединения сразу закрывались, если использовался
отложенный accept и параметр proxy_protocol директивы listen.
</para>
<para lang="en">
client SSL connections were immediately closed if deferred accept
and the "proxy_protocol" parameter of the "listen" directive were used.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в директиве proxy_cache_background_update.
</para>
<para lang="en">
in the "proxy_cache_background_update" directive.
</para>
</change>
<change type="workaround">
<para lang="ru">
теперь директива tcp_nodelay
устанавливает опцию TCP_NODELAY перед SSL handshake.
</para>
<para lang="en">
now the "tcp_nodelay" directive
sets the TCP_NODELAY option before an SSL handshake.
</para>
</change>
</changes>
<changes ver="1.13.0" date="2017-04-25">
<change type="change">
<para lang="ru">
теперь SSL renegotiation допускается в соединениях к бэкендам.
</para>
<para lang="en">
SSL renegotiation is now allowed on backend connections.
</para>
</change>
<change type="feature">
<para lang="ru">
параметры rcvbuf и sndbuf директив listen
в почтовом прокси-сервере и модуле stream.
</para>
<para lang="en">
the "rcvbuf" and "sndbuf" parameters of the "listen" directives
of the mail proxy and stream modules.
</para>
</change>
<change type="feature">
<para lang="ru">
директивы return и error_page теперь могут использоваться для возврата
перенаправлений с кодом 308.<br/>
Спасибо Simon Leblanc.
</para>
<para lang="en">
the "return" and "error_page" directives can now be used to return 308
redirections.<br/>
Thanks to Simon Leblanc.
</para>
</change>
<change type="feature">
<para lang="ru">
параметр TLSv1.3 в директиве ssl_protocols.
</para>
<para lang="en">
the "TLSv1.3" parameter of the "ssl_protocols" directive.
</para>
</change>
<change type="feature">
<para lang="ru">
при логгировании сигналов теперь указывается PID отправившего сигнал процесса.
</para>
<para lang="en">
when logging signals nginx now logs PID of the process which sent the signal.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в обработке ошибок выделения памяти.
</para>
<para lang="en">
in memory allocation error handling.
</para>
</change>
<change type="bugfix">
<para lang="ru">
если сервер в модуле stream слушал на wildcard-адресе,
исходящий адрес ответного UDP-пакета
мог отличаться от адреса назначения исходного пакета.
</para>
<para lang="en">
if a server in the stream module listened on a wildcard address,
the source address of a response UDP datagram could differ
from the original datagram destination address.
</para>
</change>
</changes>
<changes ver="1.11.13" date="2017-04-04">
<change type="feature">
<para lang="ru">
параметр http_429 в директивах proxy_next_upstream, fastcgi_next_upstream,
scgi_next_upstream и uwsgi_next_upstream.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
the "http_429" parameter of the "proxy_next_upstream", "fastcgi_next_upstream",
"scgi_next_upstream", and "uwsgi_next_upstream" directives.<br/>
Thanks to Piotr Sikora.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в обработке ошибок выделения памяти.
</para>
<para lang="en">
in memory allocation error handling.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании директив sendfile и timer_resolution на Linux
запросы могли зависать.
</para>
<para lang="en">
requests might hang
when using the "sendfile" and "timer_resolution" directives on Linux.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании с подзапросами директив sendfile и aio_write
запросы могли зависать.
</para>
<para lang="en">
requests might hang
when using the "sendfile" and "aio_write" directives with subrequests.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в модуле ngx_http_v2_module.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
in the ngx_http_v2_module.<br/>
Thanks to Piotr Sikora.
</para>
</change>
<change type="bugfix">
<para lang="ru">