blob: a65987666f2239c72d840547494e0ba7118c6ce5 [file] [log] [blame]
<?xml version="1.0" ?>
<!DOCTYPE change_log SYSTEM "../../dtd/changes.dtd" >
<change_log title="nginx">
<changes ver="1.20.0" date="2021-04-20">
<change>
<para lang="ru">
Стабильная ветка 1.20.x.
</para>
<para lang="en">
1.20.x stable branch.
</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">
при использовании HTTP/2 в рабочем процессе мог произойти segmentation fault.
</para>
<para lang="en">
a segmentation fault might occur in a worker process when using HTTP/2.
</para>
</change>
<change type="bugfix">
<para lang="ru">
запросы могли зависать
при использовании с подзапросами директив limit_rate, sendfile_max_chunk,
limit_req или метода $r->sleep() встроенного перла.
</para>
<para lang="en">
requests might hang
when using the "limit_rate", "sendfile_max_chunk", "limit_req" directives,
or the $r->sleep() embedded perl method with subrequests.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в модуле ngx_http_slice_module.
</para>
<para lang="en">
in the ngx_http_slice_module.
</para>
</change>
</changes>
<changes ver="1.11.12" date="2017-03-24">
<change type="bugfix">
<para lang="ru">
nginx мог нагружать процессор;
ошибка появилась в 1.11.11.
</para>
<para lang="en">
nginx might hog CPU;
the bug had appeared in 1.11.11.
</para>
</change>
</changes>
<changes ver="1.11.11" date="2017-03-21">
<change type="feature">
<para lang="ru">
директива worker_shutdown_timeout.
</para>
<para lang="en">
the "worker_shutdown_timeout" directive.
</para>
</change>
<change type="feature">
<para lang="ru">
улучшения в скриптах подсветки синтаксиса для vim.<br/>
Спасибо Wei-Ko Kao.
</para>
<para lang="en">
vim syntax highlighting scripts improvements.<br/>
Thanks to Wei-Ko Kao.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при попытке установить переменную $limit_rate в пустую строку
в рабочем процессе мог произойти segmentation fault.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if the $limit_rate variable was set to an empty string.
</para>
</change>
<change type="bugfix">
<para lang="ru">
директивы proxy_cache_background_update, fastcgi_cache_background_update,
scgi_cache_background_update и uwsgi_cache_background_update
могли работать некорректно, если использовалась директива if.
</para>
<para lang="en">
the "proxy_cache_background_update", "fastcgi_cache_background_update",
"scgi_cache_background_update", and "uwsgi_cache_background_update" directives
might work incorrectly if the "if" directive was used.
</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 number of large_client_header_buffers in a virtual server
was different from the one in the default server.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в почтовом прокси-сервере.
</para>
<para lang="en">
in the mail proxy server.
</para>
</change>
</changes>
<changes ver="1.11.10" date="2017-02-14">
<change type="change">
<para lang="ru">
формат заголовка кэша был изменен,
ранее закэшированные ответы будут загружены заново.
</para>
<para lang="en">
cache header format has been changed,
previously cached responses will be invalidated.
</para>
</change>
<change type="feature">
<para lang="ru">
поддержка расширений stale-while-revalidate и stale-if-error
в строке "Cache-Control" в заголовке ответа бэкенда.
</para>
<para lang="en">
support of "stale-while-revalidate" and "stale-if-error" extensions
in the "Cache-Control" backend response header line.
</para>
</change>
<change type="feature">
<para lang="ru">
директивы proxy_cache_background_update, fastcgi_cache_background_update,
scgi_cache_background_update и uwsgi_cache_background_update.
</para>
<para lang="en">
the "proxy_cache_background_update", "fastcgi_cache_background_update",
"scgi_cache_background_update", and "uwsgi_cache_background_update" directives.
</para>
</change>
<change type="feature">
<para lang="ru">
теперь nginx может кэшировать ответы
со строкой Vary заголовка длиной до 128 символов
(вместо 42 символов в предыдущих версиях).
</para>
<para lang="en">
nginx is now able to cache responses
with the "Vary" header line up to 128 characters long
(instead of 42 characters in previous versions).
</para>
</change>
<change type="feature">
<para lang="ru">
параметр build директивы server_tokens.<br/>
Спасибо Tom Thorogood.
</para>
<para lang="en">
the "build" parameter of the "server_tokens" directive.<br/>
Thanks to Tom Thorogood.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при обработке запросов со строкой "Expect: 100-continue" в заголовке запроса
в логах могли появляться сообщения "[crit] SSL_write() failed".
</para>
<para lang="en">
"[crit] SSL_write() failed" messages might appear in logs
when handling requests with the "Expect: 100-continue" request header line.
</para>
</change>
<change type="bugfix">
<para lang="ru">
модуль ngx_http_slice_module не работал в именованных location'ах.
</para>
<para lang="en">
the ngx_http_slice_module did not work in named locations.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании AIO после перенаправления запроса с помощью X-Accel-Redirect
в рабочем процессе мог произойти segmentation fault.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
when using AIO after an "X-Accel-Redirect" redirection.
</para>
</change>
<change type="bugfix">
<para lang="ru">
уменьшено потребление памяти для долгоживущих запросов, использующих сжатие.
</para>
<para lang="en">
reduced memory consumption for long-lived requests using gzipping.
</para>
</change>
</changes>
<changes ver="1.11.9" date="2017-01-24">
<change type="bugfix">
<para lang="ru">
при использовании модуля stream nginx мог нагружать процессор;
ошибка появилась в 1.11.5.
</para>
<para lang="en">
nginx might hog CPU when using the stream module;
the bug had appeared in 1.11.5.
</para>
</change>
<change type="bugfix">
<para lang="ru">
метод аутентификации EXTERNAL в почтовом прокси-сервере
можно было использовать, даже если он не был разрешён в конфигурации.
</para>
<para lang="en">
EXTERNAL authentication mechanism in mail proxy
was accepted even if it was not enabled in the configuration.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании директивы ssl_verify_client модуля stream
в рабочем процессе мог произойти segmentation fault.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if the "ssl_verify_client" directive of the stream module was used.
</para>
</change>
<change type="bugfix">
<para lang="ru">
директива ssl_verify_client модуля stream могла не работать.
</para>
<para lang="en">
the "ssl_verify_client" directive of the stream module might not work.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при исчерпании рабочим процессом свободных соединений
keepalive-соединения могли закрываться излишне агрессивно.<br/>
Спасибо Joel Cunningham.
</para>
<para lang="en">
closing keepalive connections due to no free worker connections
might be too aggressive.<br/>
Thanks to Joel Cunningham.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании директивы sendfile на FreeBSD и macOS
мог возвращаться некорректный ответ;
ошибка появилась в 1.7.8.
</para>
<para lang="en">
an incorrect response might be returned
when using the "sendfile" directive on FreeBSD and macOS;
the bug had appeared in 1.7.8.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании директивы aio_write
ответ мог сохраняться в кэш не полностью.
</para>
<para lang="en">
a truncated response might be stored in cache
when using the "aio_write" directive.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании директивы aio_write
могла происходить утечка сокетов.
</para>
<para lang="en">
a socket leak might occur
when using the "aio_write" directive.
</para>
</change>
</changes>
<changes ver="1.11.8" date="2016-12-27">
<change type="feature">
<para lang="ru">
директива absolute_redirect.
</para>
<para lang="en">
the "absolute_redirect" directive.
</para>
</change>
<change type="feature">
<para lang="ru">
параметр escape директивы log_format.
</para>
<para lang="en">
the "escape" parameter of the "log_format" directive.
</para>
</change>
<change type="feature">
<para lang="ru">
проверка клиентских SSL-сертификатов в модуле stream.
</para>
<para lang="en">
client SSL certificates verification in the stream module.
</para>
</change>
<change type="feature">
<para lang="ru">
директива ssl_session_ticket_key поддерживает
шифрование TLS session tickets с помощью AES256
при использовании с 80-байтными ключами.
</para>
<para lang="en">
the "ssl_session_ticket_key" directive supports
AES256 encryption of TLS session tickets
when used with 80-byte keys.
</para>
</change>
<change type="feature">
<para lang="ru">
поддержка vim-commentary в скриптах для vim.<br/>
Спасибо Armin Grodon.
</para>
<para lang="en">
vim-commentary support in vim scripts.<br/>
Thanks to Armin Grodon.
</para>
</change>
<change type="bugfix">
<para lang="ru">
рекурсия при получении значений переменных не ограничивалась.
</para>
<para lang="en">
recursion when evaluating variables was not limited.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в модуле ngx_stream_ssl_preread_module.
</para>
<para lang="en">
in the ngx_stream_ssl_preread_module.
</para>
</change>
<change type="bugfix">
<para lang="ru">
если сервер, описанный в блоке upstream в модуле stream,
был признан неработающим, то после истечения fail_timeout он
признавался работающим только после завершения тестового соединения;
теперь достаточно, чтобы соединение было успешно установлено.
</para>
<para lang="en">
if a server in an upstream in the stream module failed,
it was considered alive only when a test connection sent
to it after fail_timeout was closed;
now a successfully established connection is enough.
</para>
</change>
<change type="bugfix">
<para lang="ru">
nginx/Windows не собирался с 64-битным Visual Studio.
</para>
<para lang="en">
nginx/Windows could not be built with 64-bit Visual Studio.
</para>
</change>
<change type="bugfix">
<para lang="ru">
nginx/Windows не собирался с OpenSSL 1.1.0.
</para>
<para lang="en">
nginx/Windows could not be built with OpenSSL 1.1.0.
</para>
</change>
</changes>
<changes ver="1.11.7" date="2016-12-13">
<change type="change">
<para lang="ru">
переменная $ssl_client_verify теперь
в случае ошибки проверки клиентского сертификата
содержит строку с описанием ошибки,
например, "FAILED:certificate has expired".
</para>
<para lang="en">
now in case of a client certificate verification error
the $ssl_client_verify variable contains a string with the failure reason,
for example, "FAILED:certificate has expired".
</para>
</change>
<change type="feature">
<para lang="ru">
переменные $ssl_ciphers, $ssl_curves,
$ssl_client_v_start, $ssl_client_v_end и $ssl_client_v_remain.
</para>
<para lang="en">
the $ssl_ciphers, $ssl_curves,
$ssl_client_v_start, $ssl_client_v_end, and $ssl_client_v_remain variables.
</para>
</change>
<change type="feature">
<para lang="ru">
параметр volatile директивы map.
</para>
<para lang="en">
the "volatile" parameter of the "map" directive.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при сборке динамических модулей
не учитывались заданные для модуля зависимости.
</para>
<para lang="en">
dependencies specified for a module
were ignored while building dynamic modules.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании HTTP/2 и директив limit_req или auth_request
тело запроса могло быть повреждено;
ошибка появилась в 1.11.0.
</para>
<para lang="en">
when using HTTP/2 and the "limit_req" or "auth_request" directives
client request body might be corrupted;
the bug had appeared in 1.11.0.
</para>
</change>
<change type="bugfix">
<para lang="ru">
при использовании HTTP/2 в рабочем процессе мог произойти segmentation fault;
ошибка появилась в 1.11.3.
</para>
<para lang="en">
a segmentation fault might occur in a worker process when using HTTP/2;
the bug had appeared in 1.11.3.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в модуле ngx_http_mp4_module.<br/>
Спасибо Congcong Hu.
</para>
<para lang="en">
in the ngx_http_mp4_module.<br/>
Thanks to Congcong Hu.
</para>
</change>
<change type="bugfix">
<para lang="ru">
в модуле ngx_http_perl_module.
</para>
<para lang="en">
in the ngx_http_perl_module.
</para>
</change>
</changes>