view docs/xml/nginx/changes.xml @ 7733:dc0cc425fa63 release-1.19.4

nginx-1.19.4-RELEASE
author Maxim Dounin <mdounin@mdounin.ru>
date Tue, 27 Oct 2020 18:09:20 +0300
parents 3cbc2602325f
children 8e5b068f761c
line wrap: on
line source

<?xml version="1.0" ?>
<!DOCTYPE change_log SYSTEM "../../dtd/changes.dtd" >


<change_log title="nginx">


<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>


<changes ver="1.11.6" date="2016-11-15">

<change type="change">
<para lang="ru">
формат переменных $ssl_client_s_dn и $ssl_client_i_dn
изменён на соответствующий RFC 2253 (RFC 4514);
значения в старом формате доступны через переменные
$ssl_client_s_dn_legacy и $ssl_client_i_dn_legacy.
</para>
<para lang="en">
format of the $ssl_client_s_dn and $ssl_client_i_dn variables
has been changed to follow RFC 2253 (RFC 4514);
values in the old format are available in
the $ssl_client_s_dn_legacy and $ssl_client_i_dn_legacy variables.
</para>
</change>

<change type="change">
<para lang="ru">
при сохранении временных файлов в каталоге кэша
они теперь располагаются не в отдельном подкаталоге для временных файлов,
а в том же подкаталоге, что и соответствующие файлы в кэше.
</para>
<para lang="en">
when storing temporary files in a cache directory
they will be stored in the same subdirectories as corresponding cache files
instead of a separate subdirectory for temporary files.
</para>
</change>

<change type="feature">
<para lang="ru">
поддержка метода аутентификации EXTERNAL
в почтовом прокси-сервере.<br/>
Спасибо Robert Norris.
</para>
<para lang="en">
EXTERNAL authentication mechanism support
in mail proxy.<br/>
Thanks to Robert Norris.
</para>
</change>

<change type="feature">
<para lang="ru">
поддержка WebP в модуле ngx_http_image_filter_module.
</para>
<para lang="en">
WebP support in the ngx_http_image_filter_module.
</para>
</change>

<change type="feature">
<para lang="ru">
директива proxy_method поддерживает переменные.<br/>
Спасибо Дмитрию Лазуркину.
</para>
<para lang="en">
variables support in the "proxy_method" directive.<br/>
Thanks to Dmitry Lazurkin.
</para>
</change>

<change type="feature">
<para lang="ru">
директива http2_max_requests в модуле ngx_http_v2_module.
</para>
<para lang="en">
the "http2_max_requests" directive in the ngx_http_v2_module.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы proxy_cache_max_range_offset, fastcgi_cache_max_range_offset,
scgi_cache_max_range_offset и uwsgi_cache_max_range_offset.
</para>
<para lang="en">
the "proxy_cache_max_range_offset", "fastcgi_cache_max_range_offset",
"scgi_cache_max_range_offset", and "uwsgi_cache_max_range_offset" directives.
</para>
</change>

<change type="bugfix">
<para lang="ru">
плавное завершение старых рабочих процессов могло занимать бесконечное время
при использовании HTTP/2.
</para>
<para lang="en">
graceful shutdown of old worker processes might require infinite time
when using HTTP/2.
</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">
при проксировании WebSocket-соединений и включённом кэшировании
в логах могли появляться сообщения "ignore long locked inactive cache entry".
</para>
<para lang="en">
"ignore long locked inactive cache entry" alerts might appear in logs
when proxying WebSocket connections with caching enabled.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если во время SSL handshake с бэкендом происходил таймаут,
nginx ничего не писал в лог
и возвращал ответ с кодом 502 вместо 504.
</para>
<para lang="en">
nginx did not write anything to log
and returned a response with code 502 instead of 504
when a timeout occurred during an SSL handshake to a backend.
</para>
</change>

</changes>


<changes ver="1.11.5" date="2016-10-11">

<change type="change">
<para lang="ru">
параметр configure --with-ipv6 упразднён,
поддержка IPv6 теперь собирается автоматически.
</para>
<para lang="en">
the --with-ipv6 configure option was removed,
now IPv6 support is configured automatically.
</para>
</change>

<change type="change">
<para lang="ru">
теперь, если в блоке upstream не оказалось доступных серверов,
nginx не сбрасывает статистику ошибок всех серверов, как делал ранее,
а ожидает истечения fail_timeout.
</para>
<para lang="en">
now if there are no available servers in an upstream,
nginx will not reset number of failures of all servers as it previously did,
but will wait for fail_timeout to expire.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_stream_ssl_preread_module.
</para>
<para lang="en">
the ngx_stream_ssl_preread_module.
</para>
</change>

<change type="feature">
<para lang="ru">
директива server в блоке upstream поддерживает параметр max_conns.
</para>
<para lang="en">
the "server" directive in the "upstream" context supports
the "max_conns" parameter.
</para>
</change>

<change type="feature">
<para lang="ru">
параметр configure --with-compat.
</para>
<para lang="en">
the --with-compat configure option.
</para>
</change>

<change type="feature">
<para lang="ru">
параметры manager_files, manager_threshold и manager_sleep
директив proxy_cache_path, fastcgi_cache_path, scgi_cache_path и
uwsgi_cache_path.
</para>
<para lang="en">
"manager_files", "manager_threshold", and "manager_sleep" parameters
of the "proxy_cache_path", "fastcgi_cache_path", "scgi_cache_path", and
"uwsgi_cache_path" directives.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при сборке perl-модуля не использовались флаги,
заданные с помощью параметра configure --with-ld-opt.
</para>
<para lang="en">
flags passed by the --with-ld-opt configure option
were not used while building perl module.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве add_after_body при использовании совместно с директивой sub_filter.
</para>
<para lang="en">
in the "add_after_body" directive when used with the "sub_filter" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в переменной $realip_remote_addr.
</para>
<para lang="en">
in the $realip_remote_addr variable.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директивы dav_access, proxy_store_access, fastcgi_store_access,
scgi_store_access и uwsgi_store_access
игнорировали права, заданные для пользователя.
</para>
<para lang="en">
the "dav_access", "proxy_store_access", "fastcgi_store_access",
"scgi_store_access", and "uwsgi_store_access" directives
ignored permissions specified for user.
</para>
</change>

<change type="bugfix">
<para lang="ru">
unix domain listen-сокеты могли не наследоваться
при обновлении исполняемого файла на Linux.
</para>
<para lang="en">
unix domain listen sockets might not be inherited
during binary upgrade on Linux.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx возвращал ошибку 400 на запросы
с символом "-" в HTTP-методе.
</para>
<para lang="en">
nginx returned the 400 response on requests
with the "-" character in the HTTP method.
</para>
</change>

</changes>


<changes ver="1.11.4" date="2016-09-13">

<change type="feature">
<para lang="ru">
переменная $upstream_bytes_received.
</para>
<para lang="en">
the $upstream_bytes_received variable.
</para>
</change>

<change type="feature">
<para lang="ru">
переменные $bytes_received, $session_time, $protocol, $status,
$upstream_addr, $upstream_bytes_sent, $upstream_bytes_received,
$upstream_connect_time, $upstream_first_byte_time
и $upstream_session_time в модуле stream.
</para>
<para lang="en">
the $bytes_received, $session_time, $protocol, $status,
$upstream_addr, $upstream_bytes_sent, $upstream_bytes_received,
$upstream_connect_time, $upstream_first_byte_time,
and $upstream_session_time variables in the stream module.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_stream_log_module.
</para>
<para lang="en">
the ngx_stream_log_module.
</para>
</change>

<change type="feature">
<para lang="ru">
параметр proxy_protocol в директиве listen,
переменные $proxy_protocol_addr и $proxy_protocol_port
в модуле stream.
</para>
<para lang="en">
the "proxy_protocol" parameter of the "listen" directive,
the $proxy_protocol_addr and $proxy_protocol_port variables
in the stream module.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_stream_realip_module.
</para>
<para lang="en">
the ngx_stream_realip_module.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался с модулем stream и модулем ngx_http_ssl_module,
но без модуля ngx_stream_ssl_module;
ошибка появилась в 1.11.3.
</para>
<para lang="en">
nginx could not be built with the stream module and the ngx_http_ssl_module,
but without ngx_stream_ssl_module;
the bug had appeared in 1.11.3.
</para>
</change>

<change type="feature">
<para lang="ru">
опция сокета IP_BIND_ADDRESS_NO_PORT не использовалась;
ошибка появилась в 1.11.2.
</para>
<para lang="en">
the IP_BIND_ADDRESS_NO_PORT socket option was not used;
the bug had appeared in 1.11.2.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в параметре ranges директивы geo.
</para>
<para lang="en">
in the "ranges" parameter of the "geo" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директив "aio threads" и sendfile
мог возвращаться некорректный ответ; ошибка появилась в 1.9.13.
</para>
<para lang="en">
an incorrect response might be returned
when using the "aio threads" and "sendfile" directives;
the bug had appeared in 1.9.13.
</para>
</change>

</changes>


<changes ver="1.11.3" date="2016-07-26">

<change type="change">
<para lang="ru">
теперь accept_mutex по умолчанию выключен.
</para>
<para lang="en">
now the "accept_mutex" directive is turned off by default.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь nginx использует EPOLLEXCLUSIVE на Linux.
</para>
<para lang="en">
now nginx uses EPOLLEXCLUSIVE on Linux.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_stream_geo_module.
</para>
<para lang="en">
the ngx_stream_geo_module.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_stream_geoip_module.
</para>
<para lang="en">
the ngx_stream_geoip_module.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_stream_split_clients_module.
</para>
<para lang="en">
the ngx_stream_split_clients_module.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы proxy_pass и proxy_ssl_name в модуле stream
поддерживают переменные.
</para>
<para lang="en">
variables support
in the "proxy_pass" and "proxy_ssl_name" directives in the stream module.
</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">
в configure.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
in configure tests.<br/>
Thanks to Piotr Sikora.
</para>
</change>

</changes>


<changes ver="1.11.2" date="2016-07-05">

<change type="change">
<para lang="ru">
теперь nginx всегда использует внутренние реализации MD5 и SHA1;
параметры configure --with-md5 и --with-sha1 упразднены.
</para>
<para lang="en">
now nginx always uses internal MD5 and SHA1 implementations;
the --with-md5 and --with-sha1 configure options were canceled.
</para>
</change>

<change type="feature">
<para lang="ru">
поддержка переменных в модуле stream.
</para>
<para lang="en">
variables support in the stream module.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_stream_map_module.
</para>
<para lang="en">
the ngx_stream_map_module.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_stream_return_module.
</para>
<para lang="en">
the ngx_stream_return_module.
</para>
</change>

<change type="feature">
<para lang="ru">
в директивах proxy_bind, fastcgi_bind, memcached_bind, scgi_bind и uwsgi_bind
теперь можно указывать порт.
</para>
<para lang="en">
a port can be specified in the "proxy_bind", "fastcgi_bind",
"memcached_bind", "scgi_bind", and "uwsgi_bind" directives.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь nginx использует опцию сокета IP_BIND_ADDRESS_NO_PORT, если она доступна.
</para>
<para lang="en">
now nginx uses the IP_BIND_ADDRESS_NO_PORT socket option when available.
</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">
при использовании HTTP/2
к запросам, передаваемым на бэкенд,
всегда добавлялась строка заголовка "Content-Length",
даже если у запроса не было тела.
</para>
<para lang="en">
the "Content-Length" request header line
was always added to requests passed to backends,
including requests without body,
when using HTTP/2.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании HTTP/2
в логах могли появляться сообщения "http request count is zero".
</para>
<para lang="en">
"http request count is zero" alerts might appear in logs
when using HTTP/2.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директивы sub_filter
могло буферизироваться больше данных, чем это необходимо;
проблема появилась в 1.9.4.
</para>
<para lang="en">
unnecessary buffering might occur
when using the "sub_filter" directive;
the issue had appeared in 1.9.4.
</para>
</change>

</changes>


<changes ver="1.11.1" date="2016-05-31">

<change type="security">
<para lang="ru">
при записи тела специально созданного запроса во временный файл
в рабочем процессе мог происходить segmentation fault
(CVE-2016-4450);
ошибка появилась в 1.3.9.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
while writing a specially crafted request body to a temporary file
(CVE-2016-4450);
the bug had appeared in 1.3.9.
</para>
</change>

</changes>


<changes ver="1.11.0" date="2016-05-24">

<change type="feature">
<para lang="ru">
параметр transparent директив proxy_bind, fastcgi_bind,
memcached_bind, scgi_bind и uwsgi_bind.
</para>
<para lang="en">
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">
переменная $request_id.
</para>
<para lang="en">
the $request_id variable.
</para>
</change>

<change type="feature">
<para lang="ru">
директива map поддерживает комбинации нескольких переменных
в качестве результирующих значений.
</para>
<para lang="en">
the "map" directive supports combinations of multiple variables
as resulting values.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь при использовании метода epoll
nginx проверяет, поддерживает ли ядро события EPOLLRDHUP,
и соответственно оптимизирует обработку соединений.
</para>
<para lang="en">
now nginx checks if EPOLLRDHUP events are supported by kernel,
and optimizes connection handling accordingly
if the "epoll" method is used.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы ssl_certificate и ssl_certificate_key
теперь можно указывать несколько раз
для загрузки сертификатов разных типов (например, RSA и ECDSA).
</para>
<para lang="en">
the "ssl_certificate" and "ssl_certificate_key" directives
can be specified multiple times
to load certificates of different types (for example, RSA and ECDSA).
</para>
</change>

<change type="feature">
<para lang="ru">
при использовании OpenSSL 1.0.2 и новее
с помощью директивы ssl_ecdh_curve теперь можно задать список кривых;
по умолчанию используется встроенный в OpenSSL список кривых.
</para>
<para lang="en">
the "ssl_ecdh_curve" directive now allows specifying a list of curves
when using OpenSSL 1.0.2 or newer;
by default a list built into OpenSSL is used.
</para>
</change>

<change type="change">
<para lang="ru">
для использования DHE-шифров теперь надо явно задавать файл параметров
с помощью директивы ssl_dhparam.
</para>
<para lang="en">
to use DHE ciphers it is now required to specify parameters
using the "ssl_dhparam" directive.
</para>
</change>

<change type="feature">
<para lang="ru">
переменная $proxy_protocol_port.
</para>
<para lang="en">
the $proxy_protocol_port variable.
</para>
</change>

<change type="feature">
<para lang="ru">
переменная $realip_remote_port в модуле ngx_http_realip_module.
</para>
<para lang="en">
the $realip_remote_port variable in the ngx_http_realip_module.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_http_realip_module теперь позволяет устанавливать
не только адрес, но и порт клиента.
</para>
<para lang="en">
the ngx_http_realip_module is now able to set the client port
in addition to the address.
</para>
</change>

<change type="change">
<para lang="ru">
при попытке запросить виртуальный сервер,
отличающийся от согласованного в процессе SSL handshake,
теперь возвращается ответ "421 Misdirected Request";
это улучшает совместимость с некоторыми HTTP/2-клиентами
в случае использования клиентских сертификатов.
</para>
<para lang="en">
the "421 Misdirected Request" response now used
when rejecting requests to a virtual server
different from one negotiated during an SSL handshake;
this improves interoperability with some HTTP/2 clients
when using client certificates.
</para>
</change>

<change type="change">
<para lang="ru">
HTTP/2-клиенты теперь могут сразу присылать тело запроса;
директива http2_body_preread_size позволяет указать размер буфера, который
будет использоваться до того, как nginx начнёт читать тело.
</para>
<para lang="en">
HTTP/2 clients can now start sending request body immediately;
the "http2_body_preread_size" directive controls size of the buffer used
before nginx will start reading client request body.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директивы proxy_cache_bypass
не обновлялись закэшированные ошибочные ответы.
</para>
<para lang="en">
cached error responses were not updated
when using the "proxy_cache_bypass" directive.
</para>
</change>

</changes>


<changes ver="1.9.15" date="2016-04-19">

<change type="bugfix">
<para lang="ru">
при использовании HHVM в качестве FastCGI-сервера
могли возникать ошибки "recv() failed".
</para>
<para lang="en">
"recv() failed" errors might occur
when using HHVM as a FastCGI server.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании HTTP/2 и директив limit_req или auth_request
при чтении тела запроса мог произойти таймаут
или ошибка "client violated flow control";
ошибка появилась в 1.9.14.
</para>
<para lang="en">
when using HTTP/2 and the "limit_req" or "auth_request" directives
a timeout or a "client violated flow control" error
might occur while reading client request body;
the bug had appeared in 1.9.14.
</para>
</change>

<change type="workaround">
<para lang="ru">
при использовании HTTP/2 ответ мог не показываться некоторыми браузерами,
если тело запроса было прочитано не целиком;
ошибка появилась в 1.9.14.
</para>
<para lang="en">
a response might not be shown by some browsers
if HTTP/2 was used and client request body was not fully read;
the bug had appeared in 1.9.14.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директивы "aio threads" соединения могли зависать.<br/>
Спасибо Mindaugas Rasiukevicius.
</para>
<para lang="en">
connections might hang when using the "aio threads" directive.<br/>
Thanks to Mindaugas Rasiukevicius.
</para>
</change>

</changes>


<changes ver="1.9.14" date="2016-04-05">

<change type="feature">
<para lang="ru">
совместимость с OpenSSL 1.1.0.
</para>
<para lang="en">
OpenSSL 1.1.0 compatibility.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы proxy_request_buffering, fastcgi_request_buffering,
scgi_request_buffering и uwsgi_request_buffering
теперь работают при использовании HTTP/2.
</para>
<para lang="en">
the "proxy_request_buffering", "fastcgi_request_buffering",
"scgi_request_buffering", and "uwsgi_request_buffering" directives
now work with HTTP/2.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании HTTP/2
в логах могли появляться сообщения "zero size buf in output".
</para>
<para lang="en">
"zero size buf in output" alerts might appear in logs
when using HTTP/2.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании HTTP/2
директива client_max_body_size могла работать неверно.
</para>
<para lang="en">
the "client_max_body_size" directive might work incorrectly
when using HTTP/2.
</para>
</change>

<change type="bugfix">
<para lang="ru">
незначительных ошибок логгирования.
</para>
<para lang="en">
of minor bugs in logging.
</para>
</change>

</changes>


<changes ver="1.9.13" date="2016-03-29">

<change type="change">
<para lang="ru">
неидемпотентные запросы (POST, LOCK, PATCH)
теперь по умолчанию не передаются на другой сервер,
если запрос уже был отправлен на бэкенд;
параметр non_idempotent директивы proxy_next_upstream
явно разрешает повторять такие запросы.
</para>
<para lang="en">
non-idempotent requests (POST, LOCK, PATCH)
are no longer passed to the next server by default
if a request has been sent to a backend;
the "non_idempotent" parameter of the "proxy_next_upstream" directive
explicitly allows retrying such requests.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_http_perl_module теперь можно собрать динамически.
</para>
<para lang="en">
the ngx_http_perl_module can be built dynamically.
</para>
</change>

<change type="feature">
<para lang="ru">
поддержка UDP в модуле stream.
</para>
<para lang="en">
UDP support in the stream module.
</para>
</change>

<change type="feature">
<para lang="ru">
директива aio_write.
</para>
<para lang="en">
the "aio_write" directive.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь cache manager следит за количеством элементов в кэше
и старается не допускать переполнений зоны разделяемой памяти.
</para>
<para lang="en">
now cache manager monitors number of elements in caches
and tries to avoid cache keys zone overflows.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директив sendfile и aio с подзапросами
в логах могли появляться сообщения "task already active" и "second aio post".
</para>
<para lang="en">
"task already active" and "second aio post" alerts might appear in logs
when using the "sendfile" and "aio" directives with subrequests.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании кэширования
в логах могли появляться сообщения "zero size buf in output",
если клиент закрывал соединение преждевременно.
</para>
<para lang="en">
"zero size buf in output" alerts might appear in logs
if caching was used
and a client closed a connection prematurely.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании кэширования
соединения с клиентами могли закрываться без необходимости.<br/>
Спасибо Justin Li.
</para>
<para lang="en">
connections with clients might be closed needlessly
if caching was used.<br/>
Thanks to Justin Li.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx мог нагружать процессор
при использовании директивы sendfile на Linux и Solaris,
если отправляемый файл был изменён в процессе отправки.
</para>
<para lang="en">
nginx might hog CPU
if the "sendfile" directive was used on Linux or Solaris
and a file being sent was changed during sending.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директив sendfile и "aio threads"
соединения могли зависать.
</para>
<para lang="en">
connections might hang
when using the "sendfile" and "aio threads" directives.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директивах proxy_pass, fastcgi_pass, scgi_pass и uwsgi_pass
при использовании переменных.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
in the "proxy_pass", "fastcgi_pass", "scgi_pass", and "uwsgi_pass" directives
when using variables.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_sub_filter_module.
</para>
<para lang="en">
in the ngx_http_sub_filter_module.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если в закэшированном соединении к бэкенду происходила ошибка,
запрос передавался на другой сервер
без учёта директивы proxy_next_upstream.
</para>
<para lang="en">
if an error occurred in a cached backend connection,
the request was passed to the next server
regardless of the proxy_next_upstream directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки "CreateFile() failed" при создании временных файлов на Windows.
</para>
<para lang="en">
"CreateFile() failed" errors when creating temporary files on Windows.
</para>
</change>

</changes>


<changes ver="1.9.12" date="2016-02-24">

<change type="feature">
<para lang="ru">
кодирование Хаффмана заголовков ответов в HTTP/2.<br/>
Спасибо Владу Краснову.
</para>
<para lang="en">
Huffman encoding of response headers in HTTP/2.<br/>
Thanks to Vlad Krasnov.
</para>
</change>

<change type="feature">
<para lang="ru">
директива worker_cpu_affinity теперь поддерживает более 64 процессоров.
</para>
<para lang="en">
the "worker_cpu_affinity" directive now supports more than 64 CPUs.
</para>
</change>

<change type="bugfix">
<para lang="ru">
совместимость со сторонними модулями на C++;
ошибка появилась в 1.9.11.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
compatibility with 3rd party C++ modules;
the bug had appeared in 1.9.11.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался статически с OpenSSL на Linux;
ошибка появилась в 1.9.11.
</para>
<para lang="en">
nginx could not be built statically with OpenSSL on Linux;
the bug had appeared in 1.9.11.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива "add_header ... always" с пустым значением
не удаляла из заголовков ошибочных ответов
строки Last-Modified и ETag.
</para>
<para lang="en">
the "add_header ... always" directive with an empty value
did not delete "Last-Modified" and "ETag" header lines
from error responses.
</para>
</change>

<change type="workaround">
<para lang="ru">
при использовании OpenSSL 1.0.2f в логах могли появляться
сообщения "called a function you should not call" и
"shutdown while in init".
</para>
<para lang="en">
"called a function you should not call"
and "shutdown while in init" messages might appear in logs
when using OpenSSL 1.0.2f.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибочные заголовки могли логгироваться некорректно.
</para>
<para lang="en">
invalid headers might be logged incorrectly.
</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">
в модуле ngx_http_v2_module.
</para>
<para lang="en">
in the ngx_http_v2_module.
</para>
</change>

</changes>


<changes ver="1.9.11" date="2016-02-09">

<change type="feature">
<para lang="ru">
теперь resolver поддерживает TCP.
</para>
<para lang="en">
TCP support in resolver.
</para>
</change>

<change type="feature">
<para lang="ru">
динамические модули.
</para>
<para lang="en">
dynamic modules.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании HTTP/2
переменная $request_length не учитывала размер заголовков запроса.
</para>
<para lang="en">
the $request_length variable did not include size of request headers
when using HTTP/2.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_v2_module.
</para>
<para lang="en">
in the ngx_http_v2_module.
</para>
</change>

</changes>


<changes ver="1.9.10" date="2016-01-26">

<change type="security">
<para lang="ru">
при использовании директивы resolver
во время обработки ответов DNS-сервера
могло происходить разыменование некорректного адреса,
что позволяло атакующему,
имеющему возможность подделывать UDP-пакеты от DNS-сервера,
вызвать segmentation fault в рабочем процессе (CVE-2016-0742).
</para>
<para lang="en">
invalid pointer dereference 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 segmentation fault in a worker process (CVE-2016-0742).
</para>
</change>

<change type="security">
<para lang="ru">
при использовании директивы resolver
во время обработки CNAME-записей
могло произойти обращение к ранее освобождённой памяти,
что позволяло атакующему,
имеющему возможность инициировать преобразование произвольных имён в адреса,
вызвать segmentation fault в рабочем процессе,
а также потенциально могло иметь другие последствия (CVE-2016-0746).
</para>
<para lang="en">
use-after-free condition might occur
during CNAME response processing
if the "resolver" directive was used,
allowing an attacker who is able to trigger name resolution
to cause segmentation fault in a worker process,
or might have potential other impact (CVE-2016-0746).
</para>
</change>

<change type="security">
<para lang="ru">
при использовании директивы resolver
во время обработки CNAME-записей
не во всех случаях проверялось ограничение
на максимальное количество записей в цепочке,
что позволяло атакующему,
имеющему возможность инициировать преобразование произвольных имён в адреса,
вызвать чрезмерное потребление ресурсов рабочими процессами (CVE-2016-0747).
</para>
<para lang="en">
CNAME resolution was insufficiently limited
if the "resolver" directive was used,
allowing an attacker who is able to trigger arbitrary name resolution
to cause excessive resource consumption in worker processes (CVE-2016-0747).
</para>
</change>

<change type="feature">
<para lang="ru">
параметр auto директивы worker_cpu_affinity.
</para>
<para lang="en">
the "auto" parameter of the "worker_cpu_affinity" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
параметр proxy_protocol директивы listen не работал
с IPv6 listen-сокетами.
</para>
<para lang="en">
the "proxy_protocol" parameter of the "listen" directive did not work
with IPv6 listen sockets.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директивы keepalive
соединения к бэкендам могли кэшироваться некорректно.
</para>
<para lang="en">
connections to upstream servers might be cached incorrectly
when using the "keepalive" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
после перенаправления запроса с помощью X-Accel-Redirect
при проксировании использовался HTTP-метод оригинального запроса.
</para>
<para lang="en">
proxying used the HTTP method of the original request
after an "X-Accel-Redirect" redirection.
</para>
</change>

</changes>


<changes ver="1.9.9" date="2015-12-09">

<change type="bugfix">
<para lang="ru">
проксирование в unix domain сокеты не работало при использовании переменных;
ошибка появилась в 1.9.8.
</para>
<para lang="en">
proxying to unix domain sockets did not work when using variables;
the bug had appeared in 1.9.8.
</para>
</change>

</changes>


<changes ver="1.9.8" date="2015-12-08">

<change type="feature">
<para lang="ru">
поддержка pwritev().
</para>
<para lang="en">
pwritev() support.
</para>
</change>

<change type="feature">
<para lang="ru">
директива include в блоке upstream.
</para>
<para lang="en">
the "include" directive inside the "upstream" block.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_http_slice_module.
</para>
<para lang="en">
the ngx_http_slice_module.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании LibreSSL
в рабочем процессе мог произойти segmentation fault;
ошибка появилась в 1.9.6.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
when using LibreSSL;
the bug had appeared in 1.9.6.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx мог не собираться на OS X.
</para>
<para lang="en">
nginx could not be built on OS X in some cases.
</para>
</change>

</changes>


<changes ver="1.9.7" date="2015-11-17">

<change type="feature">
<para lang="ru">
параметр nohostname логгирования в syslog.
</para>
<para lang="en">
the "nohostname" parameter of logging to syslog.
</para>
</change>

<change type="feature">
<para lang="ru">
директива proxy_cache_convert_head.
</para>
<para lang="en">
the "proxy_cache_convert_head" directive.
</para>
</change>

<change type="feature">
<para lang="ru">
переменная $realip_remote_addr в модуле ngx_http_realip_module.
</para>
<para lang="en">
the $realip_remote_addr variable in the ngx_http_realip_module.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива expires могла не срабатывать при использовании переменных.
</para>
<para lang="en">
the "expires" directive might not work when using variables.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании HTTP/2
в рабочем процессе мог произойти segmentation fault;
ошибка появилась в 1.9.6.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
when using HTTP/2;
the bug had appeared in 1.9.6.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если nginx был собран с модулем ngx_http_v2_module,
протокол HTTP/2 мог быть использован клиентом,
даже если не был указан параметр http2 директивы listen.
</para>
<para lang="en">
if nginx was built with the ngx_http_v2_module
it was possible to use the HTTP/2 protocol
even if the "http2" parameter of the "listen" directive was not specified.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_v2_module.
</para>
<para lang="en">
in the ngx_http_v2_module.
</para>
</change>

</changes>


<changes ver="1.9.6" date="2015-10-27">

<change type="bugfix">
<para lang="ru">
при использовании HTTP/2
в рабочем процессе мог произойти segmentation fault.<br/>
Спасибо Piotr Sikora и Denis Andzakovic.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
when using HTTP/2.<br/>
Thanks to Piotr Sikora and Denis Andzakovic.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании HTTP/2 переменная $server_protocol была пустой.
</para>
<para lang="en">
the $server_protocol variable was empty when using HTTP/2.
</para>
</change>

<change type="bugfix">
<para lang="ru">
SSL-соединения к бэкендам в модуле stream
могли неожиданно завершаться по таймауту.
</para>
<para lang="en">
backend SSL connections in the stream module
might be timed out unexpectedly.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании различных настроек ssl_session_cache
в разных виртуальных серверах
в рабочем процессе мог произойти segmentation fault.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if different ssl_session_cache settings were used
in different virtual servers.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx/Windows не собирался с MinGW gcc;
ошибка появилась в 1.9.4.<br/>
Спасибо Kouhei Sutou.
</para>
<para lang="en">
nginx/Windows could not be built with MinGW gcc;
the bug had appeared in 1.9.4.<br/>
Thanks to Kouhei Sutou.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директивы timer_resolution на Windows время не обновлялось.
</para>
<para lang="en">
time was not updated when the timer_resolution directive was used on Windows.
</para>
</change>

<change>
<para lang="ru">
Незначительные исправления и улучшения.<br/>
Спасибо Markus Linnala, Kurtis Nusbaum и Piotr Sikora.
</para>
<para lang="en">
Miscellaneous minor fixes and improvements.<br/>
Thanks to Markus Linnala, Kurtis Nusbaum and Piotr Sikora.
</para>
</change>

</changes>


<changes ver="1.9.5" date="2015-09-22">

<change type="feature">
<para lang="ru">
модуль ngx_http_v2_module (заменяет модуль ngx_http_spdy_module).<br/>
Спасибо Dropbox и Automattic за спонсирование разработки.
</para>
<para lang="en">
the ngx_http_v2_module (replaces ngx_http_spdy_module).<br/>
Thanks to Dropbox and Automattic for sponsoring this work.
</para>
</change>

<change type="change">
<para lang="ru">
теперь по умолчанию директива output_buffers использует два буфера.
</para>
<para lang="en">
now the "output_buffers" directive uses two buffers by default.
</para>
</change>

<change type="change">
<para lang="ru">
теперь nginx ограничивает максимальную вложенность подзапросов,
а не количество одновременных подзапросов.
</para>
<para lang="en">
now nginx limits subrequests recursion,
not simultaneous subrequests.
</para>
</change>

<change type="change">
<para lang="ru">
теперь при возврате ответов из кэша nginx проверяет ключ полностью.<br/>
Спасибо Геннадию Махомеду и Сергею Брестеру.
</para>
<para lang="en">
now nginx checks the whole cache key when returning a response from cache.<br/>
Thanks to Gena Makhomed and Sergey Brester.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании кэша
в логах могли появляться сообщения "header already sent";
ошибка появилась в 1.7.5.
</para>
<para lang="en">
"header already sent" alerts might appear in logs
when using cache;
the bug had appeared in 1.7.5.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании CephFS и директивы timer_resolution на Linux
в логах могли появляться сообщения
"writev() failed (4: Interrupted system call)".
</para>
<para lang="en">
"writev() failed (4: Interrupted system call)"
errors might appear in logs
when using CephFS and the "timer_resolution" directive on Linux.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке ошибок конфигурации.<br/>
Спасибо Markus Linnala.
</para>
<para lang="en">
in invalid configurations handling.<br/>
Thanks to Markus Linnala.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директивы sub_filter на уровне http
в рабочем процессе происходил segmentation fault;
ошибка появилась в 1.9.4.
</para>
<para lang="en">
a segmentation fault occurred in a worker process
if the "sub_filter" directive was used at http level;
the bug had appeared in 1.9.4.
</para>
</change>

</changes>


<changes ver="1.9.4" date="2015-08-18">

<change type="change">
<para lang="ru">
директивы proxy_downstream_buffer и proxy_upstream_buffer в модуле stream
заменены директивой proxy_buffer_size.
</para>
<para lang="en">
the "proxy_downstream_buffer" and "proxy_upstream_buffer" directives
of the stream module are replaced with the "proxy_buffer_size" directive.
</para>
</change>

<change type="feature">
<para lang="ru">
директива tcp_nodelay в модуле stream.
</para>
<para lang="en">
the "tcp_nodelay" directive in the stream module.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь можно указать несколько директив sub_filter одновременно.
</para>
<para lang="en">
multiple "sub_filter" directives can be used simultaneously.
</para>
</change>

<change type="feature">
<para lang="ru">
директива sub_filter поддерживает переменные в строке поиска.
</para>
<para lang="en">
variables support in the search string of the "sub_filter" directive.
</para>
</change>

<change type="workaround">
<para lang="ru">
тестирование конфигурации могло не работать под Linux OpenVZ.<br/>
Спасибо Геннадию Махомеду.
</para>
<para lang="en">
configuration testing might fail under Linux OpenVZ.<br/>
Thanks to Gena Makhomed.
</para>
</change>

<change type="bugfix">
<para lang="ru">
после переконфигурации старые рабочие процессы могли сильно нагружать процессор
при больших значениях worker_connections.
</para>
<para lang="en">
old worker processes might hog CPU after reconfiguration
with a large number of worker_connections.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при совместном использовании директив try_files и alias
внутри location'а, заданного регулярным выражением,
в рабочем процессе мог произойти segmentation fault;
ошибка появилась в 1.7.1.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if the "try_files" and "alias" directives were used
inside a location given by a regular expression;
the bug had appeared in 1.7.1.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива try_files внутри вложенного location'а, заданного регулярным
выражением, работала неправильно, если во внешнем location'е использовалась
директива alias.
</para>
<para lang="en">
the "try_files" directive inside a nested location
given by a regular expression worked incorrectly
if the "alias" directive was used in the outer location.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке ошибок при построении хэш-таблиц.
</para>
<para lang="en">
in hash table initialization error handling.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался с Visual Studio 2015.
</para>
<para lang="en">
nginx could not be built with Visual Studio 2015.
</para>
</change>

</changes>


<changes ver="1.9.3" date="2015-07-14">

<change type="change">
<para lang="ru">
дублирующиеся блоки http, mail и stream теперь запрещены.
</para>
<para lang="en">
duplicate "http", "mail", and "stream" blocks are now disallowed.
</para>
</change>

<change type="feature">
<para lang="ru">
ограничение количества соединений в модуле stream.
</para>
<para lang="en">
connection limiting in the stream module.
</para>
</change>

<change type="feature">
<para lang="ru">
ограничение скорости в модуле stream.
</para>
<para lang="en">
data rate limiting in the stream module.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива zone в блоке upstream не работала на Windows.
</para>
<para lang="en">
the "zone" directive inside the "upstream" block did not work on Windows.
</para>
</change>

<change type="bugfix">
<para lang="ru">
совместимость с LibreSSL в модуле stream.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
compatibility with LibreSSL in the stream module.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в параметре --builddir в configure.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
in the "--builddir" configure parameter.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива ssl_stapling_file не работала;
ошибка появилась в 1.9.2.<br/>
Спасибо Faidon Liambotis и Brandon Black.
</para>
<para lang="en">
the "ssl_stapling_file" directive did not work;
the bug had appeared in 1.9.2.<br/>
Thanks to Faidon Liambotis and Brandon Black.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директивы ssl_stapling
в рабочем процессе мог произойти segmentation fault;
ошибка появилась в 1.9.2.<br/>
Спасибо Matthew Baldwin.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if the "ssl_stapling" directive was used;
the bug had appeared in 1.9.2.<br/>
Thanks to Matthew Baldwin.
</para>
</change>

</changes>


<changes ver="1.9.2" date="2015-06-16">

<change type="feature">
<para lang="ru">
параметр backlog директивы listen
в почтовом прокси-сервере и модуле stream.
</para>
<para lang="en">
the "backlog" parameter of the "listen" directives
of the mail proxy and stream modules.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы allow и deny в модуле stream.
</para>
<para lang="en">
the "allow" and "deny" directives in the stream module.
</para>
</change>

<change type="feature">
<para lang="ru">
директива proxy_bind в модуле stream.
</para>
<para lang="en">
the "proxy_bind" directive in the stream module.
</para>
</change>

<change type="feature">
<para lang="ru">
директива proxy_protocol в модуле stream.
</para>
<para lang="en">
the "proxy_protocol" directive in the stream module.
</para>
</change>

<change type="feature">
<para lang="ru">
ключ -T.
</para>
<para lang="en">
the -T switch.
</para>
</change>

<change type="feature">
<para lang="ru">
параметр REQUEST_SCHEME добавлен в стандартные конфигурационные файлы
fastcgi.conf, fastcgi_params, scgi_params и uwsgi_params.
</para>
<para lang="en">
the REQUEST_SCHEME parameter added to the fastcgi.conf, fastcgi_params,
scgi_params, and uwsgi_params standard configuration files.
</para>
</change>

<change type="bugfix">
<para lang="ru">
параметр reuseport директивы listen в модуле stream
не работал.
</para>
<para lang="en">
the "reuseport" parameter of the "listen" directive of the stream module
did not work.
</para>
</change>

<change type="bugfix">
<para lang="ru">
OCSP stapling в некоторых случаях мог вернуть устаревший OCSP-ответ.
</para>
<para lang="en">
OCSP stapling might return an expired OCSP response in some cases.
</para>
</change>

</changes>


<changes ver="1.9.1" date="2015-05-26">

<change type="change">
<para lang="ru">
теперь протокол SSLv3 по умолчанию запрещён.
</para>
<para lang="en">
now SSLv3 protocol is disabled by default.
</para>
</change>

<change type="change">
<para lang="ru">
некоторые давно устаревшие директивы больше не поддерживаются.
</para>
<para lang="en">
some long deprecated directives are not supported anymore.
</para>
</change>

<change type="feature">
<para lang="ru">
параметр reuseport директивы listen.<br/>
Спасибо Yingqi Lu из Intel и Sepherosa Ziehau.
</para>
<para lang="en">
the "reuseport" parameter of the "listen" directive.<br/>
Thanks to Yingqi Lu at Intel and Sepherosa Ziehau.
</para>
</change>

<change type="feature">
<para lang="ru">
переменная $upstream_connect_time.
</para>
<para lang="en">
the $upstream_connect_time variable.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве hash на big-endian платформах.
</para>
<para lang="en">
in the "hash" directive on big-endian platforms.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx мог не запускаться на некоторых старых версиях Linux;
ошибка появилась в 1.7.11.
</para>
<para lang="en">
nginx might fail to start on some old Linux variants;
the bug had appeared in 1.7.11.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в парсинге IP-адресов.<br/>
Спасибо Сергею Половко.
</para>
<para lang="en">
in IP address parsing.<br/>
Thanks to Sergey Polovko.
</para>
</change>

</changes>


<changes ver="1.9.0" date="2015-04-28">

<change type="change">
<para lang="ru">
устаревшие методы обработки соединений aio и rtsig больше не поддерживаются.
</para>
<para lang="en">
obsolete aio and rtsig event methods have been removed.
</para>
</change>

<change type="feature">
<para lang="ru">
директива zone в блоке upstream.
</para>
<para lang="en">
the "zone" directive inside the "upstream" block.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль stream.
</para>
<para lang="en">
the stream module.
</para>
</change>

<change type="feature">
<para lang="ru">
поддержка byte ranges для ответов модуля ngx_http_memcached_module.<br/>
Спасибо Martin Mlynář.
</para>
<para lang="en">
byte ranges support in the ngx_http_memcached_module.<br/>
Thanks to Martin Mlynář.
</para>
</change>

<change type="feature">
<para lang="ru">
разделяемую память теперь можно использовать на версиях Windows
с рандомизацией адресного пространства.<br/>
Спасибо Сергею Брестеру.
</para>
<para lang="en">
shared memory can now be used on Windows versions
with address space layout randomization.<br/>
Thanks to Sergey Brester.
</para>
</change>

<change type="feature">
<para lang="ru">
директиву error_log теперь можно использовать
на уровнях mail и server в почтовом прокси-сервере.
</para>
<para lang="en">
the "error_log" directive can now be used
on mail and server levels in mail proxy.
</para>
</change>

<change type="bugfix">
<para lang="ru">
параметр proxy_protocol директивы listen не работал,
если не был указан в первой директиве listen для данного listen-сокета.
</para>
<para lang="en">
the "proxy_protocol" parameter of the "listen" directive did not work
if not specified in the first "listen" directive for a listen socket.
</para>
</change>

</changes>


<changes ver="1.7.12" date="2015-04-07">

<change type="feature">
<para lang="ru">
теперь директива tcp_nodelay работает для SSL-соединений с бэкендами.
</para>
<para lang="en">
now the "tcp_nodelay" directive works with backend SSL connections.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь потоки могут использоваться для чтения заголовков файлов в кэше.
</para>
<para lang="en">
now thread pools can be used to read cache file headers.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве proxy_request_buffering.
</para>
<para lang="en">
in the "proxy_request_buffering" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании потоков на Linux
в рабочем процессе мог произойти segmentation fault.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
when using thread pools on Linux.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке ошибок при использовании директивы ssl_stapling.<br/>
Спасибо Filipe da Silva.
</para>
<para lang="en">
in error handling when using the "ssl_stapling" directive.<br/>
Thanks to Filipe da Silva.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_spdy_module.
</para>
<para lang="en">
in the ngx_http_spdy_module.
</para>
</change>

</changes>


<changes ver="1.7.11" date="2015-03-24">

<change type="change">
<para lang="ru">
параметр sendfile директивы aio более не нужен;
теперь nginx автоматически использует AIO для подгрузки данных для sendfile,
если одновременно используются директивы aio и sendfile.
</para>
<para lang="en">
the "sendfile" parameter of the "aio" directive is deprecated;
now nginx automatically uses AIO to pre-load data for sendfile
if both "aio" and "sendfile" directives are used.
</para>
</change>

<change type="feature">
<para lang="ru">
экспериментальная поддержка потоков.
</para>
<para lang="en">
experimental thread pools support.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы proxy_request_buffering, fastcgi_request_buffering,
scgi_request_buffering и uwsgi_request_buffering.
</para>
<para lang="en">
the "proxy_request_buffering", "fastcgi_request_buffering",
"scgi_request_buffering", and "uwsgi_request_buffering" directives.
</para>
</change>

<change type="feature">
<para lang="ru">
экспериментальное API для обработки тела запроса.
</para>
<para lang="en">
request body filters experimental API.
</para>
</change>

<change type="feature">
<para lang="ru">
проверка клиентских SSL-сертификатов в почтовом прокси-сервере.<br/>
Спасибо Sven Peter, Franck Levionnois и Filipe Da Silva.
</para>
<para lang="en">
client SSL certificates support in mail proxy.<br/>
Thanks to Sven Peter, Franck Levionnois, and Filipe Da Silva.
</para>
</change>

<change type="feature">
<para lang="ru">
уменьшение времени запуска
при использовании директивы "hash ... consistent" в блоке upstream.<br/>
Спасибо Wai Keen Woon.
</para>
<para lang="en">
startup speedup
when using the "hash ... consistent" directive in the upstream block.<br/>
Thanks to Wai Keen Woon.
</para>
</change>

<change type="feature">
<para lang="ru">
отладочное логгирование в кольцевой буфер в памяти.
</para>
<para lang="en">
debug logging into a cyclic memory buffer.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке хэш-таблиц.<br/>
Спасибо Chris West.
</para>
<para lang="en">
in hash table handling.<br/>
Thanks to Chris West.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве proxy_cache_revalidate.
</para>
<para lang="en">
in the "proxy_cache_revalidate" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
SSL-соединения могли зависать, если использовался отложенный accept
или параметр proxy_protocol директивы listen.<br/>
Спасибо James Hamlin.
</para>
<para lang="en">
SSL connections might hang if deferred accept
or the "proxy_protocol" parameter of the "listen" directive were used.<br/>
Thanks to James Hamlin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
переменная $upstream_response_time могла содержать неверное значение
при использовании директивы image_filter.
</para>
<para lang="en">
the $upstream_response_time variable might contain a wrong value
if the "image_filter" directive was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке целочисленных переполнений.<br/>
Спасибо Régis Leroy.
</para>
<para lang="en">
in integer overflow handling.<br/>
Thanks to Régis Leroy.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании LibreSSL было невозможно включить поддержку SSLv3.
</para>
<para lang="en">
it was not possible to enable SSLv3 with LibreSSL.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании LibreSSL в логах появлялись сообщения
"ignoring stale global SSL error ... called a function you should not call".
</para>
<para lang="en">
the "ignoring stale global SSL error ... called a function you should not call"
alerts appeared in logs when using LibreSSL.
</para>
</change>

<change type="bugfix">
<para lang="ru">
сертификаты, указанные в директивах ssl_client_certificate и
ssl_trusted_certificate, использовались
для автоматического построения цепочек сертификатов.
</para>
<para lang="en">
certificates specified by the "ssl_client_certificate" and
"ssl_trusted_certificate" directives were inadvertently used
to automatically construct certificate chains.
</para>
</change>

</changes>


<changes ver="1.7.10" date="2015-02-10">

<change type="feature">
<para lang="ru">
параметр use_temp_path директив proxy_cache_path, fastcgi_cache_path,
scgi_cache_path и uwsgi_cache_path.
</para>
<para lang="en">
the "use_temp_path" parameter of the "proxy_cache_path", "fastcgi_cache_path",
"scgi_cache_path", and "uwsgi_cache_path" directives.
</para>
</change>

<change type="feature">
<para lang="ru">
переменная $upstream_header_time.
</para>
<para lang="en">
the $upstream_header_time variable.
</para>
</change>

<change type="workaround">
<para lang="ru">
теперь при переполнении диска nginx пытается писать error_log'и только
раз в секунду.
</para>
<para lang="en">
now on disk overflow nginx tries to write error logs once a second only.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива try_files при тестировании каталогов
не игнорировала обычные файлы.<br/>
Спасибо Damien Tournoud.
</para>
<para lang="en">
the "try_files" directive did not ignore normal files
while testing directories.<br/>
Thanks to Damien Tournoud.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директивы sendfile на OS X
возникали ошибки "sendfile() failed";
ошибка появилась в nginx 1.7.8.
</para>
<para lang="en">
alerts "sendfile() failed"
if the "sendfile" directive was used on OS X;
the bug had appeared in 1.7.8.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в лог могли писаться сообщения "sem_post() failed".
</para>
<para lang="en">
alerts "sem_post() failed" might appear in logs.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался с musl libc.<br/>
Спасибо James Taylor.
</para>
<para lang="en">
nginx could not be built with musl libc.<br/>
Thanks to James Taylor.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался на Tru64 UNIX.<br/>
Спасибо Goetz T. Fischer.
</para>
<para lang="en">
nginx could not be built on Tru64 UNIX.<br/>
Thanks to Goetz T. Fischer.
</para>
</change>

</changes>


<changes ver="1.7.9" date="2014-12-23">

<change type="feature">
<para lang="ru">
директивы proxy_cache, fastcgi_cache, scgi_cache и uwsgi_cache
поддерживают переменные.
</para>
<para lang="en">
variables support in the "proxy_cache", "fastcgi_cache", "scgi_cache",
and "uwsgi_cache" directives.
</para>
</change>

<change type="feature">
<para lang="ru">
директива expires поддерживает переменные.
</para>
<para lang="en">
variables support in the "expires" directive.
</para>
</change>

<change type="feature">
<para lang="ru">
возможность загрузки секретных ключей с аппаратных устройств
с помощью OpenSSL engines.<br/>
Спасибо Дмитрию Пичулину.
</para>
<para lang="en">
loading of secret keys from hardware tokens
with OpenSSL engines.<br/>
Thanks to Dmitrii Pichulin.
</para>
</change>

<change type="feature">
<para lang="ru">
директива autoindex_format.
</para>
<para lang="en">
the "autoindex_format" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ревалидация элементов кэша теперь используется только для ответов
с кодами 200 и 206.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
cache revalidation is now only used for responses
with 200 and 206 status codes.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="bugfix">
<para lang="ru">
строка "TE" заголовка запроса клиента передавалась на бэкенд при проксировании.
</para>
<para lang="en">
the "TE" client request header line was passed to backends while proxying.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директивы proxy_pass, fastcgi_pass, scgi_pass и uwsgi_pass
могли неправильно работать внутри блоков if и limit_except.
</para>
<para lang="en">
the "proxy_pass", "fastcgi_pass", "scgi_pass", and "uwsgi_pass" directives
might not work correctly inside the "if" and "limit_except" blocks.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива proxy_store с параметром "on" игнорировалась,
если на предыдущем уровне использовалась директива proxy_store
с явно заданным путём к файлам.
</para>
<para lang="en">
the "proxy_store" directive with the "on" parameter was ignored
if the "proxy_store" directive with an explicitly specified file path
was used on a previous level.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался с BoringSSL.<br/>
Спасибо Lukas Tribus.
</para>
<para lang="en">
nginx could not be built with BoringSSL.<br/>
Thanks to Lukas Tribus.
</para>
</change>

</changes>


<changes ver="1.7.8" date="2014-12-02">

<change type="change">
<para lang="ru">
теперь строки "If-Modified-Since", "If-Range" и им подобные
в заголовке запроса клиента передаются бэкенду при включённом кэшировании,
если nginx заранее знает, что не будет кэшировать ответ
(например, при использовании proxy_cache_min_uses).
</para>
<para lang="en">
now the "If-Modified-Since", "If-Range", etc.
client request header lines are passed to a backend while caching
if nginx knows in advance that the response will not be cached
(e.g., when using proxy_cache_min_uses).
</para>
</change>

<change type="change">
<para lang="ru">
теперь после истечения proxy_cache_lock_timeout
nginx отправляет запрос на бэкенд без кэширования;
новые директивы proxy_cache_lock_age, fastcgi_cache_lock_age,
scgi_cache_lock_age и uwsgi_cache_lock_age позволяют указать,
через какое время блокировка будет принудительно снята
и будет сделана ещё одна попытка закэшировать ответ.
</para>
<para lang="en">
now after proxy_cache_lock_timeout
nginx sends a request to a backend with caching disabled;
the new directives "proxy_cache_lock_age", "fastcgi_cache_lock_age",
"scgi_cache_lock_age", and "uwsgi_cache_lock_age" specify a time
after which the lock will be released
and another attempt to cache a response will be made.
</para>
</change>

<change type="change">
<para lang="ru">
директива log_format теперь может использоваться только на уровне http.
</para>
<para lang="en">
the "log_format" directive can now be used only at http level.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы proxy_ssl_certificate, proxy_ssl_certificate_key,
proxy_ssl_password_file, uwsgi_ssl_certificate,
uwsgi_ssl_certificate_key и uwsgi_ssl_password_file.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
the "proxy_ssl_certificate", "proxy_ssl_certificate_key",
"proxy_ssl_password_file", "uwsgi_ssl_certificate",
"uwsgi_ssl_certificate_key", and "uwsgi_ssl_password_file" directives.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь с помощью X-Accel-Redirect
можно перейти в именованный location.<br/>
Спасибо Toshikuni Fukaya.
</para>
<para lang="en">
it is now possible to switch to a named location
using "X-Accel-Redirect".<br/>
Thanks to Toshikuni Fukaya.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь директива tcp_nodelay работает для SPDY-соединений.
</para>
<para lang="en">
now the "tcp_nodelay" directive works with SPDY connections.
</para>
</change>

<change type="feature">
<para lang="ru">
новые директивы в скриптах подсветки синтаксиса для vim.<br/>
Спасибо Peter Wu.
</para>
<para lang="en">
new directives in vim syntax highliting scripts.<br/>
Thanks to Peter Wu.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx игнорировал значение "s-maxage"
в строке "Cache-Control" в заголовке ответа бэкенда.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
nginx ignored the "s-maxage" value
in the "Cache-Control" backend response header line.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_spdy_module.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
in the ngx_http_spdy_module.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве ssl_password_file
при использовании OpenSSL 0.9.8zc, 1.0.0o, 1.0.1j.
</para>
<para lang="en">
in the "ssl_password_file" directive
when using OpenSSL 0.9.8zc, 1.0.0o, 1.0.1j.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директивы post_action
в лог писались сообщения "header already sent";
ошибка появилась в nginx 1.5.4.
</para>
<para lang="en">
alerts "header already sent" appeared in logs
if the "post_action" directive was used;
the bug had appeared in 1.5.4.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директивы "postpone_output 0" с SSI-подзапросами
в лог могли писаться сообщения "the http output chain is empty".
</para>
<para lang="en">
alerts "the http output chain is empty" might appear in logs
if the "postpone_output 0" directive was used with SSI includes.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве proxy_cache_lock при использовании SSI-подзапросов.<br/>
Спасибо Yichun Zhang.
</para>
<para lang="en">
in the "proxy_cache_lock" directive with SSI subrequests.<br/>
Thanks to Yichun Zhang.
</para>
</change>

</changes>


<changes ver="1.7.7" date="2014-10-28">

<change type="change">
<para lang="ru">
теперь nginx учитывает при кэшировании строку "Vary"
в заголовке ответа бэкенда.
</para>
<para lang="en">
now nginx takes into account the "Vary"
header line in a backend response while caching.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы proxy_force_ranges, fastcgi_force_ranges,
scgi_force_ranges и uwsgi_force_ranges.
</para>
<para lang="en">
the "proxy_force_ranges", "fastcgi_force_ranges",
"scgi_force_ranges", and "uwsgi_force_ranges" directives.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы proxy_limit_rate, fastcgi_limit_rate,
scgi_limit_rate и uwsgi_limit_rate.
</para>
<para lang="en">
the "proxy_limit_rate", "fastcgi_limit_rate",
"scgi_limit_rate", and "uwsgi_limit_rate" directives.
</para>
</change>

<change type="feature">
<para lang="ru">
параметр Vary директив proxy_ignore_headers, fastcgi_ignore_headers,
scgi_ignore_headers и uwsgi_ignore_headers.
</para>
<para lang="en">
the "Vary" parameter of the "proxy_ignore_headers", "fastcgi_ignore_headers",
"scgi_ignore_headers", and "uwsgi_ignore_headers" directives.
</para>
</change>

<change type="bugfix">
<para lang="ru">
последняя часть ответа, полученного от бэкенда
при небуферизированном проксировании,
могла не отправляться клиенту,
если использовались директивы gzip или gunzip.
</para>
<para lang="en">
the last part of a response received from a backend
with unbufferred proxy
might not be sent to a client
if "gzip" or "gunzip" directives were used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве proxy_cache_revalidate.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
in the "proxy_cache_revalidate" directive.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке ошибок.<br/>
Спасибо Yichun Zhang и Даниилу Бондареву.
</para>
<para lang="en">
in error handling.<br/>
Thanks to Yichun Zhang and Daniil Bondarev.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директивах
proxy_next_upstream_tries и proxy_next_upstream_timeout.<br/>
Спасибо Feng Gu.
</para>
<para lang="en">
in the "proxy_next_upstream_tries" and "proxy_next_upstream_timeout"
directives.<br/>
Thanks to Feng Gu.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx/Windows не собирался с MinGW-w64 gcc.<br/>
Спасибо Kouhei Sutou.
</para>
<para lang="en">
nginx/Windows could not be built with MinGW-w64 gcc.<br/>
Thanks to Kouhei Sutou.
</para>
</change>

</changes>


<changes ver="1.7.6" date="2014-09-30">

<change type="change">
<para lang="ru">
устаревшая директива limit_zone больше не поддерживается.
</para>
<para lang="en">
the deprecated "limit_zone" directive is not supported anymore.
</para>
</change>

<change type="feature">
<para lang="ru">
в директивах limit_conn_zone и limit_req_zone теперь можно использовать
комбинации нескольких переменных.
</para>
<para lang="en">
the "limit_conn_zone" and "limit_req_zone" directives now can be used
with combinations of multiple variables.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при повторной отправке FastCGI-запроса на бэкенд
тело запроса могло передаваться неправильно.
</para>
<para lang="en">
request body might be transmitted incorrectly
when retrying a FastCGI request to the next upstream server.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в логгировании в syslog.
</para>
<para lang="en">
in logging to syslog.
</para>
</change>

</changes>


<changes ver="1.7.5" date="2014-09-16">

<change type="security">
<para lang="ru">
при использовании общего для нескольких блоков server
разделяемого кэша SSL-сессий или общего ключа для шифрования
TLS session tickets было возможно повторно использовать
SSL-сессию в контексте другого блока server (CVE-2014-3616).<br/>
Спасибо Antoine Delignat-Lavaud.
</para>
<para lang="en">
it was possible to reuse SSL sessions in unrelated contexts
if a shared SSL session cache or the same TLS session ticket key
was used for multiple "server" blocks (CVE-2014-3616).<br/>
Thanks to Antoine Delignat-Lavaud.
</para>
</change>

<change type="change">
<para lang="ru">
директиву stub_status теперь можно указывать без параметров.
</para>
<para lang="en">
now the "stub_status" directive does not require a parameter.
</para>
</change>

<change type="feature">
<para lang="ru">
параметр always директивы add_header.
</para>
<para lang="en">
the "always" parameter of the "add_header" directive.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы
proxy_next_upstream_tries, proxy_next_upstream_timeout,
fastcgi_next_upstream_tries, fastcgi_next_upstream_timeout,
memcached_next_upstream_tries, memcached_next_upstream_timeout,
scgi_next_upstream_tries, scgi_next_upstream_timeout,
uwsgi_next_upstream_tries и uwsgi_next_upstream_timeout.
</para>
<para lang="en">
the
"proxy_next_upstream_tries", "proxy_next_upstream_timeout",
"fastcgi_next_upstream_tries", "fastcgi_next_upstream_timeout",
"memcached_next_upstream_tries", "memcached_next_upstream_timeout",
"scgi_next_upstream_tries", "scgi_next_upstream_timeout",
"uwsgi_next_upstream_tries", and "uwsgi_next_upstream_timeout"
directives.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в параметре if директивы access_log.
</para>
<para lang="en">
in the "if" parameter of the "access_log" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_perl_module.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
in the ngx_http_perl_module.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива listen почтового прокси-сервера
не позволяла указать более двух параметров.
</para>
<para lang="en">
the "listen" directive of the mail proxy module
did not allow to specify more than two parameters.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива sub_filter не работала
с заменяемой строкой из одного символа.
</para>
<para lang="en">
the "sub_filter" directive did not work
with a string to replace consisting of a single character.
</para>
</change>

<change type="bugfix">
<para lang="ru">
запросы могли зависать, если использовался resolver
и в процессе обращения к DNS-серверу происходил таймаут.
</para>
<para lang="en">
requests might hang if resolver was used
and a timeout occurred during a DNS request.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_spdy_module при использовании совместно с AIO.
</para>
<para lang="en">
in the ngx_http_spdy_module when using with AIO.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если с помощью директивы set изменялись переменные
"$http_...", "$sent_http_..." или "$upstream_http_...".
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if the "set" directive was used to change the "$http_...",
"$sent_http_...", or "$upstream_http_..." variables.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке ошибок выделения памяти.<br/>
Спасибо Markus Linnala и Feng Gu.
</para>
<para lang="en">
in memory allocation error handling.<br/>
Thanks to Markus Linnala and Feng Gu.
</para>
</change>

</changes>


<changes ver="1.7.4" date="2014-08-05">

<change type="security">
<para lang="ru">
pipelined-команды не отбрасывались
после команды STARTTLS в SMTP прокси-сервере (CVE-2014-3556);
ошибка появилась в 1.5.6.<br/>
Спасибо Chris Boulton.
</para>
<para lang="en">
pipelined commands were not discarded
after STARTTLS command in SMTP proxy (CVE-2014-3556);
the bug had appeared in 1.5.6.<br/>
Thanks to Chris Boulton.
</para>
</change>

<change type="change">
<para lang="ru">
экранирование символов в URI теперь использует
шестнадцатеричные цифры в верхнем регистре.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
URI escaping now uses
uppercase hexadecimal digits.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь nginx можно собрать с BoringSSL и LibreSSL.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
now nginx can be build with BoringSSL and LibreSSL.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="bugfix">
<para lang="ru">
запросы могли зависать, если использовался resolver
и DNS-сервер возвращал некорректный ответ;
ошибка появилась в 1.5.8.
</para>
<para lang="en">
requests might hang if resolver was used
and a DNS server returned a malformed response;
the bug had appeared in 1.5.8.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_spdy_module.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
in the ngx_http_spdy_module.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="bugfix">
<para lang="ru">
переменная $uri могла содержать мусор
при возврате ошибок с кодом 400.<br/>
Спасибо Сергею Боброву.
</para>
<para lang="en">
the $uri variable might contain garbage
when returning errors with code 400.<br/>
Thanks to Sergey Bobrov.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке ошибок в директиве proxy_store
и в модуле ngx_http_dav_module.<br/>
Спасибо Feng Gu.
</para>
<para lang="en">
in error handling in the "proxy_store" directive
and the ngx_http_dav_module.<br/>
Thanks to Feng Gu.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при логгировании ошибок в syslog мог происходить segmentation fault;
ошибка появилась в 1.7.1.
</para>
<para lang="en">
a segmentation fault might occur if logging of errors to syslog was used;
the bug had appeared in 1.7.1.
</para>
</change>

<change type="bugfix">
<para lang="ru">
переменные $geoip_latitude, $geoip_longitude, $geoip_dma_code
и $geoip_area_code могли не работать.<br/>
Спасибо Yichun Zhang.
</para>
<para lang="en">
the $geoip_latitude, $geoip_longitude, $geoip_dma_code,
and $geoip_area_code variables might not work.<br/>
Thanks to Yichun Zhang.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке ошибок выделения памяти.<br/>
Спасибо Tatsuhiko Kubo и Piotr Sikora.
</para>
<para lang="en">
in memory allocation error handling.<br/>
Thanks to Tatsuhiko Kubo and Piotr Sikora.
</para>
</change>

</changes>


<changes ver="1.7.3" date="2014-07-08">

<change type="feature">
<para lang="ru">
weak entity tags теперь не удаляются при изменениях ответа,
а strong entity tags преобразуются в weak.
</para>
<para lang="en">
weak entity tags are now preserved on response modifications,
and strong ones are changed to weak.
</para>
</change>

<change type="feature">
<para lang="ru">
ревалидация элементов кэша теперь, если это возможно,
использует заголовок If-None-Match.
</para>
<para lang="en">
cache revalidation now uses If-None-Match header
if possible.
</para>
</change>

<change type="feature">
<para lang="ru">
директива ssl_password_file.
</para>
<para lang="en">
the "ssl_password_file" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при возврате ответа из кэша
заголовок запроса If-None-Match игнорировался,
если в ответе не было заголовка Last-Modified.
</para>
<para lang="en">
the If-None-Match request header line was ignored
if there was no Last-Modified header
in a response returned from cache.
</para>
</change>

<change type="bugfix">
<para lang="ru">
сообщения "peer closed connection in SSL handshake"
при соединении с бэкендами логгировались на уровне info вместо error.
</para>
<para lang="en">
"peer closed connection in SSL handshake" messages
were logged at "info" level instead of "error" while connecting to backends.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_dav_module в nginx/Windows.
</para>
<para lang="en">
in the ngx_http_dav_module module in nginx/Windows.
</para>
</change>

<change type="bugfix">
<para lang="ru">
SPDY-соединения могли неожиданно закрываться,
если использовалось кэширование.
</para>
<para lang="en">
SPDY connections might be closed prematurely
if caching was used.
</para>
</change>

</changes>


<changes ver="1.7.2" date="2014-06-17">

<change type="feature">
<para lang="ru">
директива hash в блоке upstream.
</para>
<para lang="en">
the "hash" directive inside the "upstream" block.
</para>
</change>

<change type="feature">
<para lang="ru">
дефрагментация свободных блоков разделяемой памяти.<br/>
Спасибо Wandenberg Peixoto и Yichun Zhang.
</para>
<para lang="en">
defragmentation of free shared memory blocks.<br/>
Thanks to Wandenberg Peixoto and Yichun Zhang.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если использовалось значение access_log по умолчанию;
ошибка появилась в 1.7.0.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if the default value of the "access_log" directive was used;
the bug had appeared in 1.7.0.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="bugfix">
<para lang="ru">
завершающий слэш ошибочно удалялся
из последнего параметра директивы try_files.
</para>
<para lang="en">
trailing slash was mistakenly removed
from the last parameter of the "try_files" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx мог не собираться на OS X.
</para>
<para lang="en">
nginx could not be built on OS X in some cases.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_spdy_module.
</para>
<para lang="en">
in the ngx_http_spdy_module.
</para>
</change>

</changes>


<changes ver="1.7.1" date="2014-05-27">

<change type="feature">
<para lang="ru">
переменные "$upstream_cookie_...".
</para>
<para lang="en">
the "$upstream_cookie_..." variables.
</para>
</change>

<change type="feature">
<para lang="ru">
переменная $ssl_client_fingerprint.
</para>
<para lang="en">
the $ssl_client_fingerprint variable.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы error_log и access_log теперь поддерживают логгирование в syslog.
</para>
<para lang="en">
the "error_log" and "access_log" directives now support logging to syslog.
</para>
</change>

<change type="feature">
<para lang="ru">
почтовый прокси-сервер теперь логгирует порт клиента при соединении.
</para>
<para lang="en">
the mail proxy now logs client port on connect.
</para>
</change>

<change type="bugfix">
<para lang="ru">
утечки памяти при использовании директивы "ssl_stapling".<br/>
Спасибо Filipe da Silva.
</para>
<para lang="en">
memory leak if the "ssl_stapling" directive was used.<br/>
Thanks to Filipe da Silva.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива alias внутри location'а, заданного регулярным выражением,
работала неправильно, если использовались директивы if или limit_except.
</para>
<para lang="en">
the "alias" directive used inside a location given by a regular expression
worked incorrectly if the "if" or "limit_except" directives were used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива charset не ставила кодировку для сжатых ответов бэкендов.
</para>
<para lang="en">
the "charset" directive did not set a charset to encoded backend responses.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива proxy_pass без URI могла использовать оригинальный запрос
после установки переменной $args.<br/>
Спасибо Yichun Zhang.
</para>
<para lang="en">
a "proxy_pass" directive without URI part might use original request
after the $args variable was set.<br/>
Thanks to Yichun Zhang.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в работе параметра none директивы smtp_auth;
ошибка появилась в 1.5.6.<br/>
Спасибо Святославу Никольскому.
</para>
<para lang="en">
in the "none" parameter in the "smtp_auth" directive;
the bug had appeared in 1.5.6.<br/>
Thanks to Svyatoslav Nikolsky.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при совместном использовании sub_filter и SSI
ответы могли передаваться неверно.
</para>
<para lang="en">
if sub_filter and SSI were used together,
then responses might be transferred incorrectly.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался с параметром --with-file-aio на Linux/aarch64.
</para>
<para lang="en">
nginx could not be built with the --with-file-aio option on Linux/aarch64.
</para>
</change>

</changes>


<changes ver="1.7.0" date="2014-04-24">

<change type="feature">
<para lang="ru">
проверка SSL-сертификатов бэкендов.
</para>
<para lang="en">
backend SSL certificate verification.
</para>
</change>

<change type="feature">
<para lang="ru">
поддержка SNI при работе с бэкендами по SSL.
</para>
<para lang="en">
support for SNI while working with SSL backends.
</para>
</change>

<change type="feature">
<para lang="ru">
переменная $ssl_server_name.
</para>
<para lang="en">
the $ssl_server_name variable.
</para>
</change>

<change type="feature">
<para lang="ru">
параметр if директивы access_log.
</para>
<para lang="en">
the "if" parameter of the "access_log" directive.
</para>
</change>

</changes>


<changes ver="1.5.13" date="2014-04-08">

<change type="change">
<para lang="ru">
улучшена обработка хэш-таблиц;
в директивах variables_hash_max_size и types_hash_bucket_size
значения по умолчанию изменены на 1024 и 64 соответственно.
</para>
<para lang="en">
improved hash table handling;
the default values of the "variables_hash_max_size" and
"types_hash_bucket_size" were changed to 1024 and 64 respectively.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_http_mp4_module теперь понимает аргумент end.
</para>
<para lang="en">
the ngx_http_mp4_module now supports the "end" argument.
</para>
</change>

<change type="feature">
<para lang="ru">
поддержка byte ranges модулем ngx_http_mp4_module и при сохранении
ответов в кэш.
</para>
<para lang="en">
byte ranges support in the ngx_http_mp4_module and while saving responses
to cache.
</para>
</change>

<change type="bugfix">
<para lang="ru">
теперь nginx не пишет в лог сообщения "ngx_slab_alloc() failed: no memory"
при использовании разделяемой памяти в ssl_session_cache
и в модуле ngx_http_limit_req_module.
</para>
<para lang="en">
alerts "ngx_slab_alloc() failed: no memory" no longer logged
when using shared memory in the "ssl_session_cache" directive
and in the ngx_http_limit_req_module.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива underscores_in_headers
не разрешала подчёркивание в первом символе заголовка.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
the "underscores_in_headers" directive
did not allow underscore as a first character of a header.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="bugfix">
<para lang="ru">
cache manager мог нагружать процессор при выходе в nginx/Windows.
</para>
<para lang="en">
cache manager might hog CPU on exit in nginx/Windows.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании ssl_session_cache с параметром shared
рабочий процесс nginx/Windows завершался аварийно.
</para>
<para lang="en">
nginx/Windows terminated abnormally
if the "ssl_session_cache" directive was used with the "shared" parameter.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_spdy_module.
</para>
<para lang="en">
in the ngx_http_spdy_module.
</para>
</change>

</changes>


<changes ver="1.5.12" date="2014-03-18">

<change type="security">
<para lang="ru">
при обработке специально созданного запроса модулем ngx_http_spdy_module
могло происходить переполнение буфера в рабочем процессе,
что потенциально могло приводить к выполнению произвольного кода
(CVE-2014-0133).<br/>
Спасибо Lucas Molas из Programa STIC, Fundación Dr. Manuel
Sadosky, Buenos Aires, Argentina.
</para>
<para lang="en">
a heap memory buffer overflow might occur in a worker process
while handling a specially crafted request by ngx_http_spdy_module,
potentially resulting in arbitrary code execution
(CVE-2014-0133).<br/>
Thanks to Lucas Molas, researcher at Programa STIC, Fundación Dr. Manuel
Sadosky, Buenos Aires, Argentina.
</para>
</change>

<change type="feature">
<para lang="ru">
параметр proxy_protocol в директивах listen и real_ip_header,
переменная $proxy_protocol_addr.
</para>
<para lang="en">
the "proxy_protocol" parameters of the "listen" and "real_ip_header" directives,
the $proxy_protocol_addr variable.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве fastcgi_next_upstream.<br/>
Спасибо Lucas Molas.
</para>
<para lang="en">
in the "fastcgi_next_upstream" directive.<br/>
Thanks to Lucas Molas.
</para>
</change>

</changes>


<changes ver="1.5.11" date="2014-03-04">

<change type="security">
<para lang="ru">
при обработке специально созданного запроса модулем ngx_http_spdy_module
на 32-битных платформах могла повреждаться память рабочего процесса,
что потенциально могло приводить к выполнению произвольного кода
(CVE-2014-0088);
ошибка появилась в 1.5.10.<br/>
Спасибо Lucas Molas из Programa STIC, Fundación Dr. Manuel
Sadosky, Buenos Aires, Argentina.
</para>
<para lang="en">
memory corruption might occur in a worker process on 32-bit platforms
while handling a specially crafted request by ngx_http_spdy_module,
potentially resulting in arbitrary code execution (CVE-2014-0088);
the bug had appeared in 1.5.10.<br/>
Thanks to Lucas Molas, researcher at Programa STIC, Fundación Dr. Manuel
Sadosky, Buenos Aires, Argentina.
</para>
</change>

<change type="feature">
<para lang="ru">
переменная $ssl_session_reused.
</para>
<para lang="en">
the $ssl_session_reused variable.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива client_max_body_size могла не работать
при чтении тела запроса с использованием chunked transfer encoding;
ошибка появилась в 1.3.9.<br/>
Спасибо Lucas Molas.
</para>
<para lang="en">
the "client_max_body_size" directive might not work
when reading a request body using chunked transfer encoding;
the bug had appeared in 1.3.9.<br/>
Thanks to Lucas Molas.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при проксировании WebSocket-соединений
в рабочем процессе мог произойти segmentation fault.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
when proxying WebSocket connections.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если использовался модуль ngx_http_spdy_module на 32-битных платформах;
ошибка появилась в 1.5.10.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if the ngx_http_spdy_module was used on 32-bit platforms;
the bug had appeared in 1.5.10.
</para>
</change>

<change type="bugfix">
<para lang="ru">
значение переменной $upstream_status могло быть неверным,
если использовались директивы proxy_cache_use_stale
или proxy_cache_revalidate.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
the $upstream_status variable might contain wrong data
if the "proxy_cache_use_stale" or "proxy_cache_revalidate" directives
were used.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если ошибки с кодом 400 с помощью директивы error_page
перенаправлялись в именованный location.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if errors with code 400 were redirected to a named location
using the "error_page" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx/Windows не собирался с Visual Studio 2013.
</para>
<para lang="en">
nginx/Windows could not be built with Visual Studio 2013.
</para>
</change>

</changes>


<changes ver="1.5.10" date="2014-02-04">

<change type="feature">
<para lang="ru">
модуль ngx_http_spdy_module теперь использует протокол SPDY 3.1.<br/>
Спасибо Automattic и MaxCDN за спонсирование разработки.
</para>
<para lang="en">
the ngx_http_spdy_module now uses SPDY 3.1 protocol.<br/>
Thanks to Automattic and MaxCDN for sponsoring this work.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_http_mp4_module теперь пропускает дорожки,
имеющие меньшую длину, чем запрошенная перемотка.
</para>
<para lang="en">
the ngx_http_mp4_module now skips tracks
too short for a seek requested.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если переменная $ssl_session_id использовалась при логгировании;
ошибка появилась в 1.5.9.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if the $ssl_session_id variable was used in logs;
the bug had appeared in 1.5.9.
</para>
</change>

<change type="bugfix">
<para lang="ru">
переменные $date_local и $date_gmt использовали неверный формат
вне модуля ngx_http_ssi_filter_module.
</para>
<para lang="en">
the $date_local and $date_gmt variables used wrong format
outside of the ngx_http_ssi_filter_module.
</para>
</change>

<change type="bugfix">
<para lang="ru">
клиентские соединения могли сразу закрываться,
если использовался отложенный accept;
ошибка появилась в 1.3.15.
</para>
<para lang="en">
client connections might be immediately closed
if deferred accept was used;
the bug had appeared in 1.3.15.
</para>
</change>

<change type="bugfix">
<para lang="ru">
сообщения "getsockopt(TCP_FASTOPEN) ... failed" записывались в лог
в процессе обновления исполняемого файла на Linux;
ошибка появилась в 1.5.8.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
alerts "getsockopt(TCP_FASTOPEN) ... failed" appeared in logs
during binary upgrade on Linux;
the bug had appeared in 1.5.8.<br/>
Thanks to Piotr Sikora.
</para>
</change>

</changes>


<changes ver="1.5.9" date="2014-01-22">

<change type="change">
<para lang="ru">
теперь в заголовке X-Accel-Redirect nginx ожидает закодированный URI.
</para>
<para lang="en">
now nginx expects escaped URIs in "X-Accel-Redirect" headers.
</para>
</change>

<change type="feature">
<para lang="ru">
директива ssl_buffer_size.
</para>
<para lang="en">
the "ssl_buffer_size" directive.
</para>
</change>

<change type="feature">
<para lang="ru">
директиву limit_rate теперь можно использовать для
ограничения скорости передачи ответов клиенту в SPDY-соединениях.
</para>
<para lang="en">
the "limit_rate" directive can now be used to
rate limit responses sent in SPDY connections.
</para>
</change>

<change type="feature">
<para lang="ru">
директива spdy_chunk_size.
</para>
<para lang="en">
the "spdy_chunk_size" directive.
</para>
</change>

<change type="feature">
<para lang="ru">
директива ssl_session_tickets.<br/>
Спасибо Dirkjan Bussink.
</para>
<para lang="en">
the "ssl_session_tickets" directive.<br/>
Thanks to Dirkjan Bussink.
</para>
</change>

<change type="bugfix">
<para lang="ru">
переменная $ssl_session_id содержала всю сессию в сериализованном виде
вместо её идентификатора.<br/>
Спасибо Ivan Ristić.
</para>
<para lang="en">
the $ssl_session_id variable contained full session serialized
instead of just a session id.<br/>
Thanks to Ivan Ristić.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx неправильно обрабатывал закодированный символ "?" в команде SSI include.
</para>
<para lang="en">
nginx incorrectly handled escaped "?" character in the "include" SSI command.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_dav_module не раскодировал целевой URI при
обработке методов COPY и MOVE.
</para>
<para lang="en">
the ngx_http_dav_module did not unescape destination URI
of the COPY and MOVE methods.
</para>
</change>

<change type="bugfix">
<para lang="ru">
resolver не понимал доменные имена с точкой в конце.
Спасибо Yichun Zhang.
</para>
<para lang="en">
resolver did not understand domain names with a trailing dot.
Thanks to Yichun Zhang.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при проксировании в логах могли появляться сообщения "zero size buf in output";
ошибка появилась в 1.3.9.
</para>
<para lang="en">
alerts "zero size buf in output" might appear in logs while proxying;
the bug had appeared in 1.3.9.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если использовался модуль ngx_http_spdy_module.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if the ngx_http_spdy_module was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании методов обработки соединений select, poll и /dev/poll
проксируемые WebSocket-соединения могли зависать сразу после открытия.
</para>
<para lang="en">
proxied WebSocket connections might hang right after handshake
if the select, poll, or /dev/poll methods were used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива xclient почтового прокси-сервера
некорректно передавала IPv6-адреса.
</para>
<para lang="en">
the "xclient" directive of the mail proxy module
incorrectly handled IPv6 client addresses.
</para>
</change>

</changes>


<changes ver="1.5.8" date="2013-12-17">

<change type="feature">
<para lang="ru">
теперь resolver поддерживает IPv6.
</para>
<para lang="en">
IPv6 support in resolver.
</para>
</change>

<change type="feature">
<para lang="ru">
директива listen поддерживает параметр fastopen.<br/>
Спасибо Mathew Rodley.
</para>
<para lang="en">
the "listen" directive supports the "fastopen" parameter.<br/>
Thanks to Mathew Rodley.
</para>
</change>

<change type="feature">
<para lang="ru">
поддержка SSL в модуле ngx_http_uwsgi_module.<br/>
Спасибо Roberto De Ioris.
</para>
<para lang="en">
SSL support in the ngx_http_uwsgi_module.<br/>
Thanks to Roberto De Ioris.
</para>
</change>

<change type="feature">
<para lang="ru">
скрипты подсветки синтаксиса для vim добавлены в contrib.<br/>
Спасибо Evan Miller.
</para>
<para lang="en">
vim syntax highlighting scripts were added to contrib.<br/>
Thanks to Evan Miller.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при чтении тела запроса с использованием chunked transfer encoding
по SSL-соединению мог произойти таймаут.
</para>
<para lang="en">
a timeout might occur while reading client request body
in an SSL connection using chunked transfer encoding.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива master_process работала неправильно в nginx/Windows.
</para>
<para lang="en">
the "master_process" directive did not work correctly in nginx/Windows.
</para>
</change>

<change type="bugfix">
<para lang="ru">
параметр setfib директивы listen мог не работать.
</para>
<para lang="en">
the "setfib" parameter of the "listen" directive might not work.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_spdy_module.
</para>
<para lang="en">
in the ngx_http_spdy_module.
</para>
</change>

</changes>


<changes ver="1.5.7" date="2013-11-19">

<change type="security">
<para lang="ru">
символ, следующий за незакодированным пробелом в строке запроса,
обрабатывался неправильно (CVE-2013-4547);
ошибка появилась в 0.8.41.<br/>
Спасибо Ivan Fratric из Google Security Team.
</para>
<para lang="en">
a character following an unescaped space in a request line
was handled incorrectly (CVE-2013-4547);
the bug had appeared in 0.8.41.<br/>
Thanks to Ivan Fratric of the Google Security Team.
</para>
</change>

<change type="change">
<para lang="ru">
уровень логгирования ошибок auth_basic об отсутствии пароля
понижен с уровня error до info.
</para>
<para lang="en">
a logging level of auth_basic errors about no user/password provided
has been lowered from "error" to "info".
</para>
</change>

<change type="feature">
<para lang="ru">
директивы proxy_cache_revalidate, fastcgi_cache_revalidate,
scgi_cache_revalidate и uwsgi_cache_revalidate.
</para>
<para lang="en">
the "proxy_cache_revalidate", "fastcgi_cache_revalidate",
"scgi_cache_revalidate", and "uwsgi_cache_revalidate" directives.
</para>
</change>

<change type="feature">
<para lang="ru">
директива ssl_session_ticket_key.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
the "ssl_session_ticket_key" directive.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива "add_header Cache-Control ''"
добавляла строку заголовка ответа "Cache-Control" с пустым значением.
</para>
<para lang="en">
the directive "add_header Cache-Control ''"
added a "Cache-Control" response header line with an empty value.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива "satisfy any" могла вернуть ошибку 403 вместо 401
при использовании директив auth_request и auth_basic.<br/>
Спасибо Jan Marc Hoffmann.
</para>
<para lang="en">
the "satisfy any" directive might return 403 error instead of 401
if auth_request and auth_basic directives were used.<br/>
Thanks to Jan Marc Hoffmann.
</para>
</change>

<change type="bugfix">
<para lang="ru">
параметры accept_filter и deferred директивы listen игнорировались
для listen-сокетов, создаваемых в процессе обновления исполняемого файла.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
the "accept_filter" and "deferred" parameters of the "listen" directive
were ignored for listen sockets created during binary upgrade.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="bugfix">
<para lang="ru">
часть данных, полученных от бэкенда при небуферизированном проксировании,
могла не отправляться клиенту сразу,
если использовались директивы gzip или gunzip.<br/>
Спасибо Yichun Zhang.
</para>
<para lang="en">
some data received from a backend with unbufferred proxy
might not be sent to a client immediately
if "gzip" or "gunzip" directives were used.<br/>
Thanks to Yichun Zhang.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке ошибок в модуле ngx_http_gunzip_filter_module.
</para>
<para lang="en">
in error handling in ngx_http_gunzip_filter_module.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ответы могли зависать,
если использовался модуль ngx_http_spdy_module
и директива auth_request.
</para>
<para lang="en">
responses might hang
if the ngx_http_spdy_module was used
with the "auth_request" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
утечки памяти в nginx/Windows.
</para>
<para lang="en">
memory leak in nginx/Windows.
</para>
</change>

</changes>


<changes ver="1.5.6" date="2013-10-01">

<change type="feature">
<para lang="ru">
директива fastcgi_buffering.
</para>
<para lang="en">
the "fastcgi_buffering" directive.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы proxy_ssl_protocols и proxy_ssl_ciphers.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
the "proxy_ssl_protocols" and "proxy_ssl_ciphers" directives.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="feature">
<para lang="ru">
оптимизация SSL handshake при использовании длинных цепочек сертификатов.
</para>
<para lang="en">
optimization of SSL handshakes when using long certificate chains.
</para>
</change>

<change type="feature">
<para lang="ru">
почтовый прокси-сервер поддерживает SMTP pipelining.
</para>
<para lang="en">
the mail proxy supports SMTP pipelining.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_auth_basic_module
при использовании метода шифрования паролей "$apr1$".<br/>
Спасибо Markus Linnala.
</para>
<para lang="en">
in the ngx_http_auth_basic_module
when using "$apr1$" password encryption method.<br/>
Thanks to Markus Linnala.
</para>
</change>

<change type="bugfix">
<para lang="ru">
на MacOSX, Cygwin и nginx/Windows
для обработки запроса мог использоваться неверный location,
если для задания location'ов использовались символы разных регистров.
</para>
<para lang="en">
in MacOSX, Cygwin, and nginx/Windows
incorrect location might be used to process a request
if locations were given using characters in different cases.
</para>
</change>

<change type="bugfix">
<para lang="ru">
автоматическое перенаправление с добавлением завершающего слэша
для проксированных location'ов могло не работать.
</para>
<para lang="en">
automatic redirect with appended trailing slash
for proxied locations might not work.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в почтовом прокси-сервере.
</para>
<para lang="en">
in the mail proxy server.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_spdy_module.
</para>
<para lang="en">
in the ngx_http_spdy_module.
</para>
</change>

</changes>


<changes ver="1.5.5" date="2013-09-17">

<change type="change">
<para lang="ru">
теперь nginx по умолчанию использует HTTP/1.0,
если точно определить протокол не удалось.
</para>
<para lang="en">
now nginx assumes HTTP/1.0 by default
if it is not able to detect protocol reliably.
</para>
</change>

<change type="feature">
<para lang="ru">
директива disable_symlinks теперь использует O_PATH на Linux.
</para>
<para lang="en">
the "disable_symlinks" directive now uses O_PATH on Linux.
</para>
</change>

<change type="feature">
<para lang="ru">
для определения того, что клиент закрыл соединение,
при использовании метода epoll
теперь используются события EPOLLRDHUP.
</para>
<para lang="en">
now nginx uses EPOLLRDHUP events
to detect premature connection close by clients
if the "epoll" method is used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве valid_referers при использовании параметра server_names.
</para>
<para lang="en">
in the "valid_referers" directive if the "server_names" parameter was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
переменная $request_time не работала в nginx/Windows.
</para>
<para lang="en">
the $request_time variable did not work in nginx/Windows.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве image_filter.<br/>
Спасибо Lanshun Zhou.
</para>
<para lang="en">
in the "image_filter" directive.<br/>
Thanks to Lanshun Zhou.
</para>
</change>

<change type="bugfix">
<para lang="ru">
совместимость с OpenSSL 1.0.1f.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
OpenSSL 1.0.1f compatibility.<br/>
Thanks to Piotr Sikora.
</para>
</change>


</changes>


<changes ver="1.5.4" date="2013-08-27">

<change type="change">
<para lang="ru">
MIME-тип для расширения js изменён на "application/javascript";
значение по умолчанию директивы charset_types изменено соответственно.
</para>
<para lang="en">
the "js" extension MIME type has been changed to "application/javascript";
default value of the "charset_types" directive was changed accordingly.
</para>
</change>

<change type="change">
<para lang="ru">
теперь директива image_filter с параметром size
возвращает ответ с MIME-типом "application/json".
</para>
<para lang="en">
now the "image_filter" directive with the "size" parameter
returns responses with the "application/json" MIME type.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_http_auth_request_module.
</para>
<para lang="en">
the ngx_http_auth_request_module.
</para>
</change>

<change type="bugfix">
<para lang="ru">
на старте или во время переконфигурации мог произойти segmentation fault,
если использовалась директива try_files с пустым параметром.
</para>
<para lang="en">
a segmentation fault might occur on start or during reconfiguration
if the "try_files" directive was used with an empty parameter.
</para>
</change>

<change type="bugfix">
<para lang="ru">
утечки памяти при использовании в директивах root и auth_basic_user_file
относительных путей, заданных с помощью переменных.
</para>
<para lang="en">
memory leak if relative paths were specified using variables
in the "root" or "auth_basic_user_file" directives.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива valid_referers неправильно выполняла регулярные выражения,
если заголовок Referer начинался с "https://".<br/>
Спасибо Liangbin Li.
</para>
<para lang="en">
the "valid_referers" directive incorrectly executed regular expressions
if a "Referer" header started with "https://".<br/>
Thanks to Liangbin Li.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ответы могли зависать, если использовались подзапросы и при обработке подзапроса
происходила ошибка во время SSL handshake с бэкендом.<br/>
Спасибо Aviram Cohen.
</para>
<para lang="en">
responses might hang if subrequests were used
and an SSL handshake error happened during subrequest processing.<br/>
Thanks to Aviram Cohen.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_autoindex_module.
</para>
<para lang="en">
in the ngx_http_autoindex_module.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_spdy_module.
</para>
<para lang="en">
in the ngx_http_spdy_module.
</para>
</change>

</changes>


<changes ver="1.5.3" date="2013-07-30">

<change>
<para lang="ru">
Изменение во внутреннем API:
теперь при небуферизированной работе с бэкендами
u->length по умолчанию устанавливается в -1.
</para>
<para lang="en">
Change in internal API:
now u->length defaults to -1
if working with backends in unbuffered mode.
</para>
</change>

<change type="change">
<para lang="ru">
теперь при получении неполного ответа от бэкенда
nginx отправляет полученную часть ответа,
после чего закрывает соединение с клиентом.
</para>
<para lang="en">
now after receiving an incomplete response from a backend server
nginx tries to send an available part of the response to a client,
and then closes client connection.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если использовался модуль ngx_http_spdy_module
и директива client_body_in_file_only.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if the ngx_http_spdy_module was used
with the "client_body_in_file_only" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
параметр so_keepalive директивы listen
мог работать некорректно на DragonFlyBSD.<br/>
Спасибо Sepherosa Ziehau.
</para>
<para lang="en">
the "so_keepalive" parameter of the "listen" directive
might be handled incorrectly on DragonFlyBSD.<br/>
Thanks to Sepherosa Ziehau.
</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_sub_filter_module.
</para>
<para lang="en">
in the ngx_http_sub_filter_module.
</para>
</change>

</changes>


<changes ver="1.5.2" date="2013-07-02">

<change type="feature">
<para lang="ru">
теперь можно использовать несколько директив error_log.
</para>
<para lang="en">
now several "error_log" directives can be used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
метод $r->header_in() встроенного перла не возвращал значения строк
"Cookie" и "X-Forwarded-For" из заголовка запроса;
ошибка появилась в 1.3.14.
</para>
<para lang="en">
the $r->header_in() embedded perl method did not return value of the
"Cookie" and "X-Forwarded-For" request header lines;
the bug had appeared in 1.3.14.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_spdy_module.<br/>
Спасибо Jim Radford.
</para>
<para lang="en">
in the ngx_http_spdy_module.<br/>
Thanks to Jim Radford.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался на Linux при использовании x32 ABI.<br/>
Спасибо Сергею Иванцову.
</para>
<para lang="en">
nginx could not be built on Linux with x32 ABI.<br/>
Thanks to Serguei Ivantsov.
</para>
</change>

</changes>


<changes ver="1.5.1" date="2013-06-04">

<change type="feature">
<para lang="ru">
директивы ssi_last_modified, sub_filter_last_modified и
xslt_last_modified.<br/>
Спасибо Алексею Колпакову.
</para>
<para lang="en">
the "ssi_last_modified", "sub_filter_last_modified", and
"xslt_last_modified" directives.<br/>
Thanks to Alexey Kolpakov.
</para>
</change>

<change type="feature">
<para lang="ru">
параметр http_403 в директивах proxy_next_upstream, fastcgi_next_upstream,
scgi_next_upstream и uwsgi_next_upstream.
</para>
<para lang="en">
the "http_403" parameter of the "proxy_next_upstream", "fastcgi_next_upstream",
"scgi_next_upstream", and "uwsgi_next_upstream" directives.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы allow и deny теперь поддерживают unix domain сокеты.
</para>
<para lang="en">
the "allow" and "deny" directives now support unix domain sockets.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался с модулем ngx_mail_ssl_module,
но без модуля ngx_http_ssl_module;
ошибка появилась в 1.3.14.
</para>
<para lang="en">
nginx could not be built with the ngx_mail_ssl_module,
but without ngx_http_ssl_module;
the bug had appeared in 1.3.14.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве proxy_set_body.<br/>
Спасибо Lanshun Zhou.
</para>
<para lang="en">
in the "proxy_set_body" directive.<br/>
Thanks to Lanshun Zhou.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве lingering_time.<br/>
Спасибо Lanshun Zhou.
</para>
<para lang="en">
in the "lingering_time" directive.<br/>
Thanks to Lanshun Zhou.
</para>
</change>

<change type="bugfix">
<para lang="ru">
параметр fail_timeout директивы server
в блоке upstream мог не работать,
если использовался параметр max_fails;
ошибка появилась в 1.3.0.
</para>
<para lang="en">
the "fail_timeout" parameter of the "server" directive
in the "upstream" context might not work
if "max_fails" parameter was used;
the bug had appeared in 1.3.0.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если использовалась директива ssl_stapling.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if the "ssl_stapling" directive was used.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в почтовом прокси-сервере.<br/>
Спасибо Filipe Da Silva.
</para>
<para lang="en">
in the mail proxy server.<br/>
Thanks to Filipe Da Silva.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx/Windows мог перестать принимать соединения,
если использовалось несколько рабочих процессов.
</para>
<para lang="en">
nginx/Windows might stop accepting connections
if several worker processes were used.
</para>
</change>

</changes>


<changes ver="1.5.0" date="2013-05-07">

<change type="security">
<para lang="ru">
при обработке специально созданного запроса
мог перезаписываться стек рабочего процесса,
что могло приводить к выполнению произвольного кода (CVE-2013-2028);
ошибка появилась в 1.3.9.<br/>
Спасибо Greg MacManus, iSIGHT Partners Labs.
</para>
<para lang="en">
a stack-based buffer overflow might occur in a worker process
while handling a specially crafted request,
potentially resulting in arbitrary code execution (CVE-2013-2028);
the bug had appeared in 1.3.9.<br/>
Thanks to Greg MacManus, iSIGHT Partners Labs.
</para>
</change>

</changes>


<changes ver="1.4.0" date="2013-04-24">

<change type="bugfix">
<para lang="ru">
nginx не собирался с модулем ngx_http_perl_module,
если использовался параметр --with-openssl;
ошибка появилась в 1.3.16.
</para>
<para lang="en">
nginx could not be built with the ngx_http_perl_module
if the --with-openssl option was used;
the bug had appeared in 1.3.16.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в работе с телом запроса из модуля ngx_http_perl_module;
ошибка появилась в 1.3.9.
</para>
<para lang="en">
in a request body handling in the ngx_http_perl_module;
the bug had appeared in 1.3.9.
</para>
</change>

</changes>


<changes ver="1.3.16" date="2013-04-16">

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если использовались подзапросы;
ошибка появилась в 1.3.9.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if subrequests were used;
the bug had appeared in 1.3.9.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива tcp_nodelay вызывала ошибку
при проксировании WebSocket-соединений в unix domain сокет.
</para>
<para lang="en">
the "tcp_nodelay" directive caused an error
if a WebSocket connection was proxied into a unix domain socket.
</para>
</change>

<change type="bugfix">
<para lang="ru">
переменная $upstream_response_length возвращала значение "0",
если не использовалась буферизация.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
the $upstream_response_length variable has an incorrect value "0"
if buffering was not used.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в методах обработки соединений eventport и /dev/poll.
</para>
<para lang="en">
in the eventport and /dev/poll methods.
</para>
</change>

</changes>


<changes ver="1.3.15" date="2013-03-26">

<change type="change">
<para lang="ru">
открытие и закрытие соединения без отправки в нём каких-либо данных
больше не записывается в access_log с кодом ошибки 400.
</para>
<para lang="en">
opening and closing a connection without sending any data in it
is no longer logged to access_log with error code 400.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_http_spdy_module.<br/>
Спасибо Automattic за спонсирование разработки.
</para>
<para lang="en">
the ngx_http_spdy_module.<br/>
Thanks to Automattic for sponsoring this work.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы limit_req_status и limit_conn_status.<br/>
Спасибо Nick Marden.
</para>
<para lang="en">
the "limit_req_status" and "limit_conn_status" directives.<br/>
Thanks to Nick Marden.
</para>
</change>

<change type="feature">
<para lang="ru">
директива image_filter_interlace.<br/>
Спасибо Ивану Боброву.
</para>
<para lang="en">
the "image_filter_interlace" directive.<br/>
Thanks to Ian Babrou.
</para>
</change>

<change type="feature">
<para lang="ru">
переменная $connections_waiting в модуле ngx_http_stub_status_module.
</para>
<para lang="en">
$connections_waiting variable in the ngx_http_stub_status_module.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь почтовый прокси-сервер поддерживает IPv6-бэкенды.
</para>
<para lang="en">
the mail proxy module now supports IPv6 backends.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при повторной отправке запроса на бэкенд
тело запроса могло передаваться неправильно;
ошибка появилась в 1.3.9.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
request body might be transmitted incorrectly
when retrying a request to the next upstream server;
the bug had appeared in 1.3.9.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве client_body_in_file_only;
ошибка появилась в 1.3.9.
</para>
<para lang="en">
in the "client_body_in_file_only" directive;
the bug had appeared in 1.3.9.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ответы могли зависать,
если использовались подзапросы
и при обработке подзапроса происходила DNS-ошибка.<br/>
Спасибо Lanshun Zhou.
</para>
<para lang="en">
responses might hang
if subrequests were used
and a DNS error happened during subrequest processing.<br/>
Thanks to Lanshun Zhou.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в процедуре учёта использования бэкендов.
</para>
<para lang="en">
in backend usage accounting.
</para>
</change>

</changes>


<changes ver="1.3.14" date="2013-03-05">

<change type="feature">
<para lang="ru">
переменные $connections_active, $connections_reading и $connections_writing
в модуле ngx_http_stub_status_module.
</para>
<para lang="en">
$connections_active, $connections_reading, and $connections_writing variables
in the ngx_http_stub_status_module.
</para>
</change>

<change type="feature">
<para lang="ru">
поддержка WebSocket-соединений
в модулях ngx_http_uwsgi_module и ngx_http_scgi_module.
</para>
<para lang="en">
support of WebSocket connections
in the ngx_http_uwsgi_module and ngx_http_scgi_module.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке виртуальных серверов при использовании SNI.
</para>
<para lang="en">
in virtual servers handling with SNI.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директивы "ssl_session_cache shared"
новые сессии могли не сохраняться,
если заканчивалось место в разделяемой памяти.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
new sessions were not always stored
if the "ssl_session_cache shared" directive was used
and there was no free space in shared memory.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="bugfix">
<para lang="ru">
несколько заголовков X-Forwarded-For обрабатывались неправильно.<br/>
Спасибо Neal Poole за спонсирование разработки.
</para>
<para lang="en">
multiple X-Forwarded-For headers were handled incorrectly.<br/>
Thanks to Neal Poole for sponsoring this work.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_mp4_module.<br/>
Спасибо Gernot Vormayr.
</para>
<para lang="en">
in the ngx_http_mp4_module.<br/>
Thanks to Gernot Vormayr.
</para>
</change>

</changes>


<changes ver="1.3.13" date="2013-02-19">

<change type="change">
<para lang="ru">
теперь для сборки по умолчанию используется компилятор с именем "cc".
</para>
<para lang="en">
a compiler with name "cc" is now used by default.
</para>
</change>

<change type="feature">
<para lang="ru">
поддержка проксирования WebSocket-соединений.<br/>
Спасибо Apcera и CloudBees за спонсирование разработки.
</para>
<para lang="en">
support for proxying of WebSocket connections.<br/>
Thanks to Apcera and CloudBees for sponsoring this work.
</para>
</change>

<change type="feature">
<para lang="ru">
директива auth_basic_user_file поддерживает шифрование паролей
методом "{SHA}".<br/>
Спасибо Louis Opter.
</para>
<para lang="en">
the "auth_basic_user_file" directive supports "{SHA}"
password encryption method.<br/>
Thanks to Louis Opter.
</para>
</change>

</changes>


<changes ver="1.3.12" date="2013-02-05">

<change type="feature">
<para lang="ru">
директивы proxy_bind, fastcgi_bind, memcached_bind, scgi_bind и uwsgi_bind
поддерживают переменные.
</para>
<para lang="en">
variables support in the "proxy_bind", "fastcgi_bind", "memcached_bind",
"scgi_bind", and "uwsgi_bind" directives.
</para>
</change>

<change type="feature">
<para lang="ru">
переменные $pipe, $request_length, $time_iso8601 и $time_local
теперь можно использовать не только в директиве log_format.<br/>
Спасибо Kiril Kalchev.
</para>
<para lang="en">
the $pipe, $request_length, $time_iso8601, and $time_local variables
can now be used not only in the "log_format" directive.
Thanks to Kiril Kalchev.
</para>
</change>

<change type="feature">
<para lang="ru">
поддержка IPv6 в модуле ngx_http_geoip_module.<br/>
Спасибо Gregor Kališnik.
</para>
<para lang="en">
IPv6 support in the ngx_http_geoip_module.<br/>
Thanks to Gregor Kališnik.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива proxy_method работала неверно, если была указана на уровне http.
</para>
<para lang="en">
in the "proxy_method" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если использовался resolver и метод poll.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if resolver was used with the poll method.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx мог нагружать процессор во время SSL handshake с бэкендом
при использовании методов обработки соединений select, poll и /dev/poll.
</para>
<para lang="en">
nginx might hog CPU during SSL handshake with a backend
if the select, poll, or /dev/poll methods were used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибка "[crit] SSL_write() failed (SSL:)".
</para>
<para lang="en">
the "[crit] SSL_write() failed (SSL:)" error.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве client_body_in_file_only;
ошибка появилась в 1.3.9.
</para>
<para lang="en">
in the "client_body_in_file_only" directive;
the bug had appeared in 1.3.9.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве fastcgi_keep_conn.
</para>
<para lang="en">
in the "fastcgi_keep_conn" directive.
</para>
</change>

</changes>


<changes ver="1.3.11" date="2013-01-10">

<change type="bugfix">
<para lang="ru">
при записи в лог мог происходить segmentation fault;
ошибка появилась в 1.3.10.
</para>
<para lang="en">
a segmentation fault might occur if logging was used;
the bug had appeared in 1.3.10.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива proxy_pass не работала с IP-адресами
без явного указания порта;
ошибка появилась в 1.3.10.
</para>
<para lang="en">
the "proxy_pass" directive did not work with IP addresses
without port specified;
the bug had appeared in 1.3.10.
</para>
</change>

<change type="bugfix">
<para lang="ru">
на старте или во время переконфигурации происходил segmentation fault,
если директива keepalive была указана несколько раз
в одном блоке upstream.
</para>
<para lang="en">
a segmentation fault occurred on start or during reconfiguration
if the "keepalive" directive was specified more than once
in a single upstream block.
</para>
</change>

<change type="bugfix">
<para lang="ru">
параметр default директивы geo не определял значение по умолчанию
для IPv6-адресов.
</para>
<para lang="en">
parameter "default" of the "geo" directive did not set default value
for IPv6 addresses.
</para>
</change>

</changes>


<changes ver="1.3.10" date="2012-12-25">

<change type="change">
<para lang="ru">
для указанных в конфигурационном файле доменных имён теперь
используются не только IPv4, но и IPv6 адреса.
</para>
<para lang="en">
domain names specified in configuration file
are now resolved to IPv6 addresses as well as IPv4 ones.
</para>
</change>

<change type="change">
<para lang="ru">
теперь при использовании директивы include с маской на Unix-системах
включаемые файлы сортируются в алфавитном порядке.
</para>
<para lang="en">
now if the "include" directive with mask is used on Unix systems,
included files are sorted in alphabetical order.
</para>
</change>

<change type="change">
<para lang="ru">
директива add_header добавляет строки в ответы с кодом 201.
</para>
<para lang="en">
the "add_header" directive adds headers to 201 responses.
</para>
</change>

<change type="feature">
<para lang="ru">
директива geo теперь поддерживает IPv6 адреса в формате CIDR.
</para>
<para lang="en">
the "geo" directive now supports IPv6 addresses in CIDR notation.
</para>
</change>

<change type="feature">
<para lang="ru">
параметры flush и gzip в директиве access_log.
</para>
<para lang="en">
the "flush" and "gzip" parameters of the "access_log" directive.
</para>
</change>

<change type="feature">
<para lang="ru">
директива auth_basic поддерживает переменные.
</para>
<para lang="en">
variables support in the "auth_basic" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx в некоторых случаях не собирался с модулем ngx_http_perl_module.
</para>
<para lang="en">
nginx could not be built with the ngx_http_perl_module in some cases.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если использовался модуль ngx_http_xslt_module.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if the ngx_http_xslt_module was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx мог не собираться на MacOSX.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
nginx could not be built on MacOSX in some cases.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директивы limit_rate с большими значениями скорости
на 32-битных системах ответ мог возвращаться не целиком.<br/>
Спасибо Алексею Антропову.
</para>
<para lang="en">
the "limit_rate" directive with high rates
might result in truncated responses on 32-bit platforms.<br/>
Thanks to Alexey Antropov.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если использовалась директива if.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if the "if" directive was used.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ответ "100 Continue" выдавался
вместе с ответом "413 Request Entity Too Large".
</para>
<para lang="en">
a "100 Continue" response was issued
with "413 Request Entity Too Large" responses.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директивы image_filter, image_filter_jpeg_quality и image_filter_sharpen
могли наследоваться некорректно.<br/>
Спасибо Ивану Боброву.
</para>
<para lang="en">
the "image_filter", "image_filter_jpeg_quality"
and "image_filter_sharpen" directives
might be inherited incorrectly.<br/>
Thanks to Ian Babrou.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директивы auth_basic под Linux
могли возникать ошибки "crypt_r() failed".
</para>
<para lang="en">
"crypt_r() failed" errors might appear
if the "auth_basic" directive was used on Linux.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке backup-серверов.<br/>
Спасибо Thomas Chen.
</para>
<para lang="en">
in backup servers handling.<br/>
Thanks to Thomas Chen.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при проксировании HEAD-запросов мог возвращаться некорректный ответ,
если использовалась директива gzip.
</para>
<para lang="en">
proxied HEAD requests might return incorrect response
if the "gzip" directive was used.
</para>
</change>

</changes>


<changes ver="1.3.9" date="2012-11-27">

<change type="feature">
<para lang="ru">
поддержка chunked transfer encoding при получении тела запроса.
</para>
<para lang="en">
support for chunked transfer encoding while reading client request body.
</para>
</change>

<change type="feature">
<para lang="ru">
переменные $request_time и $msec
теперь можно использовать не только в директиве log_format.
</para>
<para lang="en">
the $request_time and $msec variables
can now be used not only in the "log_format" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
cache manager и cache loader могли не запускаться,
если использовалось более 512 listen-сокетов.
</para>
<para lang="en">
cache manager and cache loader processes might not be able to start
if more than 512 listen sockets were used.
</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.3.8" date="2012-10-30">

<change type="feature">
<para lang="ru">
параметр optional_no_ca директивы ssl_verify_client.<br/>
Спасибо Михаилу Казанцеву и Eric O'Connor.
</para>
<para lang="en">
the "optional_no_ca" parameter of the "ssl_verify_client" directive.<br/>
Thanks to Mike Kazantsev and Eric O'Connor.
</para>
</change>

<change type="feature">
<para lang="ru">
переменные $bytes_sent, $connection и $connection_requests
теперь можно использовать не только в директиве log_format.<br/>
Спасибо Benjamin Grössing.
</para>
<para lang="en">
the $bytes_sent, $connection, and $connection_requests variables
can now be used not only in the "log_format" directive.<br/>
Thanks to Benjamin Grössing.
</para>
</change>

<change type="feature">
<para lang="ru">
параметр auto директивы worker_processes.
</para>
<para lang="en">
the "auto" parameter of the "worker_processes" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
сообщения "cache file ... has md5 collision".
</para>
<para lang="en">
"cache file ... has md5 collision" alert.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_gunzip_filter_module.
</para>
<para lang="en">
in the ngx_http_gunzip_filter_module.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве ssl_stapling.
</para>
<para lang="en">
in the "ssl_stapling" directive.
</para>
</change>

</changes>


<changes ver="1.3.7" date="2012-10-02">

<change type="feature">
<para lang="ru">
поддержка OCSP stapling.<br/>
Спасибо Comodo, DigiCert и GlobalSign за спонсирование разработки.
</para>
<para lang="en">
OCSP stapling support.<br/>
Thanks to Comodo, DigiCert and GlobalSign for sponsoring this work.
</para>
</change>

<change type="feature">
<para lang="ru">
директива ssl_trusted_certificate.
</para>
<para lang="en">
the "ssl_trusted_certificate" directive.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь resolver случайным образом меняет порядок
возвращаемых закэшированных адресов.<br/>
Спасибо Антону Жулину.
</para>
<para lang="en">
resolver now randomly rotates addresses
returned from cache.<br/>
Thanks to Anton Jouline.
</para>
</change>

<change type="bugfix">
<para lang="ru">
совместимость с OpenSSL 0.9.7.
</para>
<para lang="en">
OpenSSL 0.9.7 compatibility.
</para>
</change>

</changes>


<changes ver="1.3.6" date="2012-09-12">

<change type="feature">
<para lang="ru">
модуль ngx_http_gunzip_filter_module.
</para>
<para lang="en">
the ngx_http_gunzip_filter_module.
</para>
</change>

<change type="feature">
<para lang="ru">
директива memcached_gzip_flag.
</para>
<para lang="en">
the "memcached_gzip_flag" directive.
</para>
</change>

<change type="feature">
<para lang="ru">
параметр always директивы gzip_static.
</para>
<para lang="en">
the "always" parameter of the "gzip_static" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве "limit_req";
ошибка появилась в 1.1.14.<br/>
Спасибо Charles Chen.
</para>
<para lang="en">
in the "limit_req" directive;
the bug had appeared in 1.1.14.<br/>
Thanks to Charles Chen.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался gcc 4.7 с оптимизацией -O2
если использовался параметр --with-ipv6.
</para>
<para lang="en">
nginx could not be built by gcc 4.7 with -O2 optimization
if the --with-ipv6 option was used.
</para>
</change>

</changes>


<changes ver="1.3.5" date="2012-08-21">

<change type="change">
<para lang="ru">
модуль ngx_http_mp4_module больше не отфильтровывает дорожки
в форматах, отличных от H.264 и AAC.
</para>
<para lang="en">
the ngx_http_mp4_module module no longer skips
tracks in formats other than H.264 and AAC.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если в директиве map в качестве значений использовались переменные.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if the "map" directive was used with variables as values.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault
при использовании директивы geo с параметром ranges,
но без параметра default; ошибка появилась в 0.8.43.<br/>
Спасибо Zhen Chen и Weibin Yao.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if the "geo" directive was used with the "ranges" parameter
but without the "default" parameter; the bug had appeared in 0.8.43.<br/>
Thanks to Zhen Chen and Weibin Yao.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке параметра командной строки -p.
</para>
<para lang="en">
in the -p command-line parameter handling.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в почтовом прокси-сервере.
</para>
<para lang="en">
in the mail proxy server.
</para>
</change>

<change type="bugfix">
<para lang="ru">
незначительных потенциальных ошибок.<br/>
Спасибо Coverity.
</para>
<para lang="en">
of minor potential bugs.<br/>
Thanks to Coverity.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx/Windows не собирался с Visual Studio 2005 Express.<br/>
Спасибо HAYASHI Kentaro.
</para>
<para lang="en">
nginx/Windows could not be built with Visual Studio 2005 Express.<br/>
Thanks to HAYASHI Kentaro.
</para>
</change>

</changes>


<changes ver="1.3.4" date="2012-07-31">

<change type="change">
<para lang="ru">
теперь на слушающих IPv6-сокетах параметр ipv6only
включён по умолчанию.
</para>
<para lang="en">
the "ipv6only" parameter is now turned on by default for
listening IPv6 sockets.
</para>
</change>

<change type="feature">
<para lang="ru">
поддержка компилятора Clang.
</para>
<para lang="en">
the Clang compiler support.
</para>
</change>

<change type="bugfix">
<para lang="ru">
могли создаваться лишние слушающие сокеты.<br/>
Спасибо Роману Одайскому.
</para>
<para lang="en">
extra listening sockets might be created.<br/>
Thanks to Roman Odaisky.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx/Windows мог нагружать процессор, если при запуске рабочего процесса
происходила ошибка.<br/>
Спасибо Ricardo Villalobos Guevara.
</para>
<para lang="en">
nginx/Windows might hog CPU if a worker process failed to start.<br/>
Thanks to Ricardo Villalobos Guevara.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директивы proxy_pass_header, fastcgi_pass_header, scgi_pass_header,
uwsgi_pass_header, proxy_hide_header, fastcgi_hide_header,
scgi_hide_header и uwsgi_hide_header
могли наследоваться некорректно.
</para>
<para lang="en">
the "proxy_pass_header", "fastcgi_pass_header", "scgi_pass_header",
"uwsgi_pass_header", "proxy_hide_header", "fastcgi_hide_header",
"scgi_hide_header", and "uwsgi_hide_header" directives
might be inherited incorrectly.
</para>
</change>

</changes>


<changes ver="1.3.3" date="2012-07-10">

<change type="feature">
<para lang="ru">
поддержка entity tags и директива etag.
</para>
<para lang="en">
entity tags support and the "etag" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директивы map с параметром hostnames
не игнорировалась конечная точка в исходном значении.
</para>
<para lang="en">
trailing dot in a source value was not ignored
if the "map" directive was used with the "hostnames" parameter.
</para>
</change>

<change type="bugfix">
<para lang="ru">
для обработки запроса мог использоваться неверный location,
если переход в именованный location происходил
после изменения URI с помощью директивы rewrite.
</para>
<para lang="en">
incorrect location might be used to process a request
if a URI was changed via a "rewrite" directive
before an internal redirect to a named location.
</para>
</change>

</changes>


<changes ver="1.3.2" date="2012-06-26">

<change type="change">
<para lang="ru">
параметр single директивы keepalive теперь игнорируется.
</para>
<para lang="en">
the "single" parameter of the "keepalive" directive is now ignored.
</para>
</change>

<change type="change">
<para lang="ru">
сжатие SSL теперь отключено
в том числе при использовании OpenSSL старее 1.0.0.
</para>
<para lang="en">
SSL compression is now disabled when using all versions of OpenSSL,
including ones prior to 1.0.0.
</para>
</change>

<change type="feature">
<para lang="ru">
директиву "ip_hash" теперь можно использовать для балансировки IPv6 клиентов.
</para>
<para lang="en">
it is now possible to use the "ip_hash" directive to balance IPv6 clients.
</para>
</change>

<change type="feature">
<para lang="ru">
переменную $status теперь можно использовать не только в директиве log_format.
</para>
<para lang="en">
the $status variable can now be used not only in the "log_format" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при завершении рабочего процесса мог произойти segmentation fault,
если использовалась директива resolver.
</para>
<para lang="en">
a segmentation fault might occur in a worker process on shutdown
if the "resolver" directive was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если использовался модуль ngx_http_mp4_module.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if the ngx_http_mp4_module 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">
в рабочем процессе мог произойти segmentation fault,
если использовались конфликтующие имена серверов с масками.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if conflicting wildcard server names were used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
на платформе ARM nginx мог аварийно завершаться по сигналу SIGBUS.
</para>
<para lang="en">
nginx might be terminated abnormally on a SIGBUS signal on ARM platform.
</para>
</change>

<change type="bugfix">
<para lang="ru">
во время переконфигурации на HP-UX в лог
записывался alert "sendmsg() failed (9: Bad file number)".
</para>
<para lang="en">
an alert "sendmsg() failed (9: Bad file number)" on HP-UX
while reconfiguration.
</para>
</change>

</changes>


<changes ver="1.3.1" date="2012-06-05">

<change type="security">
<para lang="ru">
теперь nginx/Windows игнорирует точку в конце компонента URI
и не разрешает URI, содержащие последовательность ":$".<br/>
Спасибо Владимиру Кочеткову, Positive Research Center.
</para>
<para lang="en">
now nginx/Windows ignores trailing dot in URI path component, and
does not allow URIs with ":$" in it.<br/>
Thanks to Vladimir Kochetkov, Positive Research Center.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы proxy_pass, fastcgi_pass, scgi_pass, uwsgi_pass и
директива server в блоке upstream
теперь поддерживают IPv6-адреса.
</para>
<para lang="en">
the "proxy_pass", "fastcgi_pass", "scgi_pass", "uwsgi_pass" directives, and
the "server" directive inside the "upstream" block,
now support IPv6 addresses.
</para>
</change>

<change type="feature">
<para lang="ru">
в директиве resolver теперь можно указывать порт и
задавать IPv6-адреса DNS-серверов.
</para>
<para lang="en">
the "resolver" directive now supports IPv6 addresses and
an optional port specification.
</para>
</change>

<change type="feature">
<para lang="ru">
директива least_conn в блоке upstream.
</para>
<para lang="en">
the "least_conn" directive inside the "upstream" block.
</para>
</change>

<change type="feature">
<para lang="ru">
при использовании директивы ip_hash
теперь можно задавать веса серверов.
</para>
<para lang="en">
it is now possible to specify a weight for servers
while using the "ip_hash" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если использовалась директива image_filter;
ошибка появилась в 1.3.0.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if the "image_filter" directive was used;
the bug had appeared in 1.3.0.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался с модулем ngx_cpp_test_module;
ошибка появилась в 1.1.12.
</para>
<para lang="en">
nginx could not be built with ngx_cpp_test_module;
the bug had appeared in 1.1.12.
</para>
</change>

<change type="bugfix">
<para lang="ru">
доступ к переменным из SSI и встроенного перла мог не работать после
переконфигурации.<br/>
Спасибо Yichun Zhang.
</para>
<para lang="en">
access to variables from SSI and embedded perl module might not work after
reconfiguration.<br/>
Thanks to Yichun Zhang.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_xslt_filter_module.<br/>
Спасибо Kuramoto Eiji.
</para>
<para lang="en">
in the ngx_http_xslt_filter_module.<br/>
Thanks to Kuramoto Eiji.
</para>
</change>

<change type="bugfix">
<para lang="ru">
утечки памяти при использовании переменной $geoip_org.<br/>
Спасибо Денису Латыпову.
</para>
<para lang="en">
memory leak if $geoip_org variable was used.<br/>
Thanks to Denis F. Latypoff.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директивах proxy_cookie_domain и proxy_cookie_path.
</para>
<para lang="en">
in the "proxy_cookie_domain" and "proxy_cookie_path" directives.
</para>
</change>

</changes>


<changes ver="1.3.0" date="2012-05-15">

<change type="feature">
<para lang="ru">
директива debug_connection теперь поддерживает IPv6-адреса
и параметр "unix:".
</para>
<para lang="en">
the "debug_connection" directive now supports IPv6 addresses
and the "unix:" parameter.
</para>
</change>

<change type="feature">
<para lang="ru">
директива set_real_ip_from и параметр proxy
директивы geo теперь поддерживают IPv6-адреса.
</para>
<para lang="en">
the "set_real_ip_from" directive and the "proxy" parameter
of the "geo" directive now support IPv6 addresses.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы real_ip_recursive, geoip_proxy и geoip_proxy_recursive.
</para>
<para lang="en">
the "real_ip_recursive", "geoip_proxy", and "geoip_proxy_recursive" directives.
</para>
</change>

<change type="feature">
<para lang="ru">
параметр proxy_recursive директивы geo.
</para>
<para lang="en">
the "proxy_recursive" parameter of the "geo" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если использовалась директива resolver.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if the "resolver" directive was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если использовались директивы fastcgi_pass, scgi_pass или uwsgi_pass
и бэкенд возвращал некорректный ответ.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if the "fastcgi_pass", "scgi_pass", or "uwsgi_pass" directives were used
and backend returned incorrect response.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если использовалась директива rewrite и в новых аргументах запроса в строке
замены использовались переменные.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if the "rewrite" directive was used and new request arguments
in a replacement used variables.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx мог нагружать процессор,
если было достигнуто ограничение на количество открытых файлов.
</para>
<para lang="en">
nginx might hog CPU
if the open file resource limit was reached.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директивы proxy_next_upstream с параметром http_404
nginx мог бесконечно перебирать бэкенды, если в блоке upstream был
хотя бы один сервер с флагом backup.
</para>
<para lang="en">
nginx might loop infinitely over backends
if the "proxy_next_upstream" directive with the "http_404" parameter was used
and there were backup servers specified in an upstream block.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директивы ip_hash
установка параметра down директивы server
могла приводить к ненужному перераспределению клиентов между бэкендами.
</para>
<para lang="en">
adding the "down" parameter of the "server" directive
might cause unneeded client redistribution among backend servers
if the "ip_hash" directive was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
утечки сокетов.<br/>
Спасибо Yichun Zhang.
</para>
<para lang="en">
socket leak.<br/>
Thanks to Yichun Zhang.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_fastcgi_module.
</para>
<para lang="en">
in the ngx_http_fastcgi_module.
</para>
</change>

</changes>


<changes ver="1.2.0" date="2012-04-23">

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если использовалась директива try_files;
ошибка появилась в 1.1.19.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if the "try_files" directive was used;
the bug had appeared in 1.1.19.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ответ мог быть передан не полностью,
если использовалось больше IOV_MAX буферов.
</para>
<para lang="en">
response might be truncated
if there were more than IOV_MAX buffers used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в работе параметра crop директивы image_filter.<br/>
Спасибо Maxim Bublis.
</para>
<para lang="en">
in the "crop" parameter of the "image_filter" directive.<br/>
Thanks to Maxim Bublis.
</para>
</change>

</changes>


<changes ver="1.1.19" date="2012-04-12">

<change type="security">
<para lang="ru">
при обработке специально созданного mp4 файла модулем ngx_http_mp4_module
могли перезаписываться области памяти рабочего процесса, что могло
приводить к выполнению произвольного кода (CVE-2012-2089).<br/>
Спасибо Matthew Daley.
</para>
<para lang="en">
specially crafted mp4 file might allow to overwrite
memory locations in a worker process
if the ngx_http_mp4_module was used,
potentially resulting in arbitrary code execution (CVE-2012-2089).<br/>
Thanks to Matthew Daley.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx/Windows мог завершаться аварийно.<br/>
Спасибо Vincent Lee.
</para>
<para lang="en">
nginx/Windows might be terminated abnormally.<br/>
Thanks to Vincent Lee.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx нагружал процессор, если все серверы в upstream'е были помечены
флагом backup.
</para>
<para lang="en">
nginx hogged CPU if all servers in an upstream were marked as "backup".
</para>
</change>

<change type="bugfix">
<para lang="ru">
директивы allow и deny могли наследоваться некорректно,
если в них использовались IPv6 адреса.
</para>
<para lang="en">
the "allow" and "deny" directives might be inherited incorrectly
if they were used with IPv6 addresses.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директивы modern_browser и ancient_browser
могли наследоваться некорректно.
</para>
<para lang="en">
the "modern_browser" and "ancient_browser" directives
might be inherited incorrectly.
</para>
</change>

<change type="bugfix">
<para lang="ru">
таймауты могли работать некорректно на Solaris/SPARC.
</para>
<para lang="en">
timeouts might be handled incorrectly on Solaris/SPARC.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_mp4_module.
</para>
<para lang="en">
in the ngx_http_mp4_module.
</para>
</change>

</changes>


<changes ver="1.1.18" date="2012-03-28">

<change type="change">
<para lang="ru">
теперь keepalive соединения не запрещены для Safari по умолчанию.
</para>
<para lang="en">
keepalive connections are no longer disabled for Safari by default.
</para>
</change>

<change type="feature">
<para lang="ru">
переменная $connection_requests.
</para>
<para lang="en">
the $connection_requests variable.
</para>
</change>

<change type="feature">
<para lang="ru">
переменные $tcpinfo_rtt, $tcpinfo_rttvar, $tcpinfo_snd_cwnd и
$tcpinfo_rcv_space.
</para>
<para lang="en">
$tcpinfo_rtt, $tcpinfo_rttvar, $tcpinfo_snd_cwnd and
$tcpinfo_rcv_space variables.
</para>
</change>

<change type="feature">
<para lang="ru">
директива worker_cpu_affinity теперь работает на FreeBSD.
</para>
<para lang="en">
the "worker_cpu_affinity" directive now works on FreeBSD.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы xslt_param и xslt_string_param.<br/>
Спасибо Samuel Behan.
</para>
<para lang="en">
the "xslt_param" and "xslt_string_param" directives.<br/>
Thanks to Samuel Behan.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в configure.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
in configure tests.<br/>
Thanks to Piotr Sikora.
</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">
nginx не собирался на Debian GNU/Hurd.
</para>
<para lang="en">
nginx could not be built on Debian GNU/Hurd.
</para>
</change>

</changes>


<changes ver="1.1.17" date="2012-03-15">

<change type="security">
<para lang="ru">
содержимое ранее освобождённой памяти могло быть отправлено клиенту,
если бэкенд возвращал специально созданный ответ.<br/>
Спасибо Matthew Daley.
</para>
<para lang="en">
content of previously freed memory might be sent to a client
if backend returned specially crafted response.<br/>
Thanks to Matthew Daley.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании встроенного перла из SSI.<br/>
Спасибо Matthew Daley.
</para>
<para lang="en">
in the embedded perl module if used from SSI.<br/>
Thanks to Matthew Daley.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_uwsgi_module.
</para>
<para lang="en">
in the ngx_http_uwsgi_module.
</para>
</change>

</changes>


<changes ver="1.1.16" date="2012-02-29">

<change type="change">
<para lang="ru">
ограничение на количество одновременных подзапросов поднято до 200.
</para>
<para lang="en">
the simultaneous subrequest limit has been raised to 200.
</para>
</change>

<change type="feature">
<para lang="ru">
параметр from в директиве disable_symlinks.
</para>
<para lang="en">
the "from" parameter of the "disable_symlinks" directive.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы return и error_page теперь могут использоваться для возврата
перенаправлений с кодом 307.
</para>
<para lang="en">
the "return" and "error_page" directives can now be used to return 307
redirections.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если использовалась директива resolver
и на глобальном уровне не была задана директива error_log.<br/>
Спасибо Роману Арутюняну.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if the "resolver" directive was used
and there was no "error_log" directive specified at global level.<br/>
Thanks to Roman Arutyunyan.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если использовались директивы "proxy_http_version 1.1" или
"fastcgi_keep_conn on".
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if the "proxy_http_version 1.1" or "fastcgi_keep_conn on" directives
were used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
утечек памяти.<br/>
Спасибо Lanshun Zhou.
</para>
<para lang="en">
memory leaks.<br/>
Thanks to Lanshun Zhou.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве disable_symlinks.
</para>
<para lang="en">
in the "disable_symlinks" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании ZFS размер кэша на диске мог считаться некорректно;
ошибка появилась в 1.0.1.
</para>
<para lang="en">
on ZFS filesystem disk cache size might be calculated incorrectly;
the bug had appeared in 1.0.1.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался компилятором icc 12.1.
</para>
<para lang="en">
nginx could not be built by the icc 12.1 compiler.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался gcc на Solaris;
ошибка появилась в 1.1.15.
</para>
<para lang="en">
nginx could not be built by gcc on Solaris;
the bug had appeared in 1.1.15.
</para>
</change>

</changes>


<changes ver="1.1.15" date="2012-02-15">

<change type="feature">
<para lang="ru">
директива disable_symlinks.
</para>
<para lang="en">
the "disable_symlinks" directive.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы proxy_cookie_domain и proxy_cookie_path.
</para>
<para lang="en">
the "proxy_cookie_domain" and "proxy_cookie_path" directives.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx мог некорректно сообщать об ошибке "upstream prematurely closed
connection" вместо "upstream sent too big header".<br/>
Спасибо Feibo Li.
</para>
<para lang="en">
nginx might log incorrect error "upstream prematurely closed connection"
instead of correct "upstream sent too big header" one.<br/>
Thanks to Feibo Li.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался с модулем ngx_http_perl_module,
если использовался параметр --with-openssl.
</para>
<para lang="en">
nginx could not be built with the ngx_http_perl_module
if the --with-openssl option was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
количество внутренних перенаправлений в именованные location'ы
не ограничивалось.
</para>
<para lang="en">
the number of internal redirects to named locations was not limited.
</para>
</change>

<change type="bugfix">
<para lang="ru">
вызов $r->flush() несколько раз подряд мог приводить к ошибкам
в модуле ngx_http_gzip_filter_module.
</para>
<para lang="en">
calling $r->flush() multiple times might cause errors
in the ngx_http_gzip_filter_module.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директивы proxy_store с SSI-подзапросами
временные файлы могли не удаляться.
</para>
<para lang="en">
temporary files might be not removed
if the "proxy_store" directive was used with SSI includes.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в некоторых случаях некэшируемые переменные (такие, как $args)
возвращали старое пустое закэшированное значение.
</para>
<para lang="en">
in some cases non-cacheable variables (such as the $args variable)
returned old empty cached value.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если одновременно создавалось слишком много SSI-подзапросов;
ошибка появилась в 0.7.25.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if too many SSI subrequests were issued simultaneously;
the bug had appeared in 0.7.25.
</para>
</change>

</changes>


<changes ver="1.1.14" date="2012-01-30">

<change type="feature">
<para lang="ru">
теперь можно указать несколько ограничений limit_req одновременно.
</para>
<para lang="en">
multiple "limit_req" limits may be used simultaneously.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке ошибок при соединении с бэкендом.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
in error handling while connecting to a backend.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке ошибок при использовании AIO на FreeBSD.
</para>
<para lang="en">
in AIO error handling on FreeBSD.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в инициализации библиотеки OpenSSL.
</para>
<para lang="en">
in the OpenSSL library initialization.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директивы proxy_redirect могли наследоваться некорректно.
</para>
<para lang="en">
the "proxy_redirect" directives might be inherited incorrectly.
</para>
</change>

<change type="bugfix">
<para lang="ru">
утечки памяти при переконфигурации, если использовалась директива pcre_jit.
</para>
<para lang="en">
memory leak during reconfiguration if the "pcre_jit" directive was used.
</para>
</change>

</changes>


<changes ver="1.1.13" date="2012-01-16">

<change type="feature">
<para lang="ru">
параметры TLSv1.1 и TLSv1.2 в директиве ssl_protocols.
</para>
<para lang="en">
the "TLSv1.1" and "TLSv1.2" parameters of the "ssl_protocols" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
параметры директивы limit_req наследовались некорректно;
ошибка появилась в 1.1.12.
</para>
<para lang="en">
the "limit_req" directive parameters were not inherited correctly;
the bug had appeared in 1.1.12.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива proxy_redirect некорректно обрабатывала заголовок Refresh
при использовании регулярных выражений.
</para>
<para lang="en">
the "proxy_redirect" directive incorrectly processed "Refresh" header
if regular expression were used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива proxy_cache_use_stale с параметром error не возвращала ответ из
кэша, если все бэкенды были признаны неработающими.
</para>
<para lang="en">
the "proxy_cache_use_stale" directive with "error" parameter did not return
answer from cache if there were no live upstreams.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива worker_cpu_affinity могла не работать.
</para>
<para lang="en">
the "worker_cpu_affinity" directive might not work.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался на Solaris;
ошибка появилась в 1.1.12.
</para>
<para lang="en">
nginx could not be built on Solaris;
the bug had appeared in 1.1.12.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_mp4_module.
</para>
<para lang="en">
in the ngx_http_mp4_module.
</para>
</change>

</changes>


<changes ver="1.1.12" date="2011-12-26">

<change type="change">
<para lang="ru">
после перенаправления запроса с помощью директивы error_page
директива proxy_pass без URI теперь использует изменённый URI.<br/>
Спасибо Lanshun Zhou.
</para>
<para lang="en">
a "proxy_pass" directive without URI part now uses changed URI
after redirection with the "error_page" directive.<br/>
Thanks to Lanshun Zhou.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы proxy/fastcgi/scgi/uwsgi_cache_lock,
proxy/fastcgi/scgi/uwsgi_cache_lock_timeout.
</para>
<para lang="en">
the "proxy/fastcgi/scgi/uwsgi_cache_lock",
"proxy/fastcgi/scgi/uwsgi_cache_lock_timeout" directives.
</para>
</change>

<change type="feature">
<para lang="ru">
директива pcre_jit.
</para>
<para lang="en">
the "pcre_jit" directive.
</para>
</change>

<change type="feature">
<para lang="ru">
SSI команда if поддерживает выделения в регулярных выражениях.
</para>
<para lang="en">
the "if" SSI command supports captures in regular expressions.
</para>
</change>

<change type="bugfix">
<para lang="ru">
SSI команда if не работала внутри команды block.
</para>
<para lang="en">
the "if" SSI command did not work inside the "block" command.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директивы limit_conn_log_level и limit_req_log_level могли не работать.
</para>
<para lang="en">
the "limit_conn_log_level" and "limit_req_log_level" directives might not work.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива limit_rate не позволяла передавать на полной скорости,
даже если был указан очень большой лимит.
</para>
<para lang="en">
the "limit_rate" directive did not allow to use full throughput,
even if limit value was very high.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива sendfile_max_chunk не работала,
если использовалась директива limit_rate.
</para>
<para lang="en">
the "sendfile_max_chunk" directive did not work,
if the "limit_rate" directive was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если в директиве proxy_pass использовались переменные и не был указан URI,
всегда использовался URI исходного запроса.
</para>
<para lang="en">
a "proxy_pass" directive without URI part always used original request URI
if variables were used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
после перенаправления запроса с помощью директивы try_files
директива proxy_pass без URI могла использовать URI исходного запроса.<br/>
Спасибо Lanshun Zhou.
</para>
<para lang="en">
a "proxy_pass" directive without URI part might use original request
after redirection with the "try_files" directive.<br/>
Thanks to Lanshun Zhou.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_scgi_module.
</para>
<para lang="en">
in the ngx_http_scgi_module.
</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">
nginx не собирался на Solaris;
ошибка появилась в 1.1.9.
</para>
<para lang="en">
nginx could not be built on Solaris;
the bug had appeared in 1.1.9.
</para>
</change>

</changes>


<changes ver="1.1.11" date="2011-12-12">

<change type="feature">
<para lang="ru">
параметр so_keepalive в директиве listen.<br/>
Спасибо Всеволоду Стахову.
</para>
<para lang="en">
the "so_keepalive" parameter of the "listen" directive.<br/>
Thanks to Vsevolod Stakhov.
</para>
</change>

<change type="feature">
<para lang="ru">
параметр if_not_empty в директивах fastcgi/scgi/uwsgi_param.
</para>
<para lang="en">
the "if_not_empty" parameter of the "fastcgi/scgi/uwsgi_param" directives.
</para>
</change>

<change type="feature">
<para lang="ru">
переменная $https.
</para>
<para lang="en">
the $https variable.
</para>
</change>

<change type="feature">
<para lang="ru">
директива proxy_redirect поддерживает переменные в первом параметре.
</para>
<para lang="en">
the "proxy_redirect" directive supports variables in the first parameter.
</para>
</change>

<change type="feature">
<para lang="ru">
директива proxy_redirect поддерживает регулярные выражения.
</para>
<para lang="en">
the "proxy_redirect" directive supports regular expressions.
</para>
</change>

<change type="bugfix">
<para lang="ru">
переменная $sent_http_cache_control могла содержать неверное значение при
использовании директивы expires.<br/>
Спасибо Yichun Zhang.
</para>
<para lang="en">
the $sent_http_cache_control variable might contain a wrong value if the
"expires" directive was used.<br/>
Thanks to Yichun Zhang.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива read_ahead могла не работать при использовании совместно с
try_files и open_file_cache.
</para>
<para lang="en">
the "read_ahead" directive might not work combined with "try_files"
and "open_file_cache".
</para>
</change>

<change type="bugfix">
<para lang="ru">
если в параметре inactive директивы proxy_cache_path
было указано малое время,
в рабочем процессе мог произойти segmentation fault.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if small time was used in the "inactive" parameter of
the "proxy_cache_path" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ответы из кэша могли зависать.
</para>
<para lang="en">
responses from cache might hang.
</para>
</change>

</changes>


<changes ver="1.1.10" date="2011-11-30">

<change type="bugfix">
<para lang="ru">
при использовании AIO на Linux в рабочем процессе происходил segmentation fault;
ошибка появилась в 1.1.9.
</para>
<para lang="en">
a segmentation fault occurred in a worker process if AIO was used on Linux;
the bug had appeared in 1.1.9.
</para>
</change>

</changes>


<changes ver="1.1.9" date="2011-11-28">

<change type="change">
<para lang="ru">
теперь двойные кавычки экранируется при выводе SSI-командой echo.<br/>
Спасибо Зауру Абасмирзоеву.
</para>
<para lang="en">
now double quotes are encoded in an "echo" SSI-command output.<br/>
Thanks to Zaur Abasmirzoev.
</para>
</change>

<change type="feature">
<para lang="ru">
параметр valid в директиве resolver.  По умолчанию теперь
используется TTL, возвращённый DNS-сервером.<br/>
Спасибо Кириллу Коринскому.
</para>
<para lang="en">
the "valid" parameter of the "resolver" directive.  By default TTL
returned by a DNS server is used.<br/>
Thanks to Kirill A. Korinskiy.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx мог перестать отвечать, если рабочий процесс завершался аварийно.
</para>
<para lang="en">
nginx might hang after a worker process abnormal termination.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если использовалось SNI;
ошибка появилась в 1.1.2.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if SNI was used;
the bug had appeared in 1.1.2.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве keepalive_disable;
ошибка появилась в 1.1.8.<br/>
Спасибо Александру Усову.
</para>
<para lang="en">
in the "keepalive_disable" directive;
the bug had appeared in 1.1.8.<br/>
Thanks to Alexander Usov.
</para>
</change>

<change type="bugfix">
<para lang="ru">
сигнал SIGWINCH переставал работать после первого обновления исполняемого
файла;
ошибка появилась в 1.1.1.
</para>
<para lang="en">
SIGWINCH signal did not work after first binary upgrade;
the bug had appeared in 1.1.1.
</para>
</change>

<change type="bugfix">
<para lang="ru">
теперь ответы бэкендов, длина которых не соответствует заголовку
Content-Length, не кэширутся.
</para>
<para lang="en">
backend responses with length not matching "Content-Length" header line
are no longer cached.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве scgi_param при использовании составных параметров.
</para>
<para lang="en">
in the "scgi_param" directive, if complex parameters were used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в методе epoll.<br/>
Спасибо Yichun Zhang.
</para>
<para lang="en">
in the "epoll" event method.<br/>
Thanks to Yichun Zhang.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_flv_module.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
in the ngx_http_flv_module.<br/>
Thanks to Piotr Sikora.
</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">
теперь nginx понимает IPv6-адреса в строке запроса и в заголовке Host.
</para>
<para lang="en">
IPv6 addresses are now handled properly in a request line and in a "Host"
request header line.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директивы add_header и expires не работали для ответов с кодом 206,
если запрос проксировался.
</para>
<para lang="en">
"add_header" and "expires" directives did not work if a request was proxied
and response status code was 206.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался на FreeBSD 10.
</para>
<para lang="en">
nginx could not be built on FreeBSD 10.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался на AIX.
</para>
<para lang="en">
nginx could not be built on AIX.
</para>
</change>

</changes>


<changes ver="1.1.8" date="2011-11-14">

<change type="change">
<para lang="ru">
модуль ngx_http_limit_zone_module переименован в ngx_http_limit_conn_module.
</para>
<para lang="en">
the ngx_http_limit_zone_module was renamed to the ngx_http_limit_conn_module.
</para>
</change>

<change type="change">
<para lang="ru">
директива limit_zone заменена директивой limit_conn_zone с новым синтаксисом.
</para>
<para lang="en">
the "limit_zone" directive was superseded by the "limit_conn_zone" directive
with a new syntax.
</para>
</change>

<change type="feature">
<para lang="ru">
поддержка ограничения по нескольким limit_conn на одном уровне.
</para>
<para lang="en">
support for multiple "limit_conn" limits on the same level.
</para>
</change>

<change type="feature">
<para lang="ru">
директива image_filter_sharpen.
</para>
<para lang="en">
the "image_filter_sharpen" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если resolver получил большой DNS-ответ.<br/>
Спасибо Ben Hawkes.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if resolver got a big DNS response.<br/>
Thanks to Ben Hawkes.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в вычислении ключа для кэширования,
если использовалась внутренняя реализация MD5;
ошибка появилась в 1.0.4.
</para>
<para lang="en">
in cache key calculation
if internal MD5 implementation was used;
the bug had appeared in 1.0.4.
</para>
</change>

<change type="bugfix">
<para lang="ru">
строки "If-Modified-Since", "If-Range" и им подобные в заголовке запроса
клиента могли передаваться бэкенду при кэшировании; или не передаваться при
выключенном кэшировании, если кэширование было включено в другой части
конфигурации.
</para>
<para lang="en">
the "If-Modified-Since", "If-Range", etc. client request header lines
might be passed to backend while caching; or not passed without caching
if caching was enabled in another part of the configuration.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_mp4_module выдавал неверную строку "Content-Length"
в заголовке ответа, использовался аргумент start.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
the module ngx_http_mp4_module sent incorrect "Content-Length" response
header line if the "start" argument was used.<br/>
Thanks to Piotr Sikora.
</para>
</change>

</changes>


<changes ver="1.1.7" date="2011-10-31">

<change type="feature">
<para lang="ru">
поддержка нескольких DNS серверов в директиве "resolver".<br/>
Спасибо Кириллу Коринскому.
</para>
<para lang="en">
support of several DNS servers in the "resolver" directive.<br/>
Thanks to Kirill A. Korinskiy.
</para>
</change>

<change type="bugfix">
<para lang="ru">
на старте или во время переконфигурации происходил segmentation fault,
если директива ssl использовалась на уровне http и не был указан
ssl_certificate.
</para>
<para lang="en">
a segmentation fault occurred on start or during reconfiguration
if the "ssl" directive was used at http level and there was
no "ssl_certificate" defined.
</para>
</change>

<change type="bugfix">
<para lang="ru">
уменьшено потребление памяти при проксировании больших файлов,
если они буферизировались на диск.
</para>
<para lang="en">
reduced memory consumption while proxying big files
if they were buffered to disk.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если использовалась директива "proxy_http_version 1.1".
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if "proxy_http_version 1.1" directive was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве "expires @time".
</para>
<para lang="en">
in the "expires @time" directive.
</para>
</change>

</changes>


<changes ver="1.1.6" date="2011-10-17">

<change>
<para lang="ru">
Изменение во внутреннем API: теперь при внутреннем редиректе
в именованный location контексты модулей очищаются.<br/>
По запросу Yichun Zhang.
</para>
<para lang="en">
Change in internal API: now module context data are cleared
while internal redirect to named location.<br/>
Requested by Yichun Zhang.
</para>
</change>

<change type="change">
<para lang="ru">
теперь если сервер, описанный в блоке upstream, был признан неработающим,
то после истечения fail_timeout на него будет отправлен только один запрос;
сервер будет считаться работающим, если успешно ответит на этот запрос.
</para>
<para lang="en">
if a server in an upstream failed, only one request will be sent to it
after fail_timeout; the server will be considered alive if it will
successfully respond to the request.
</para>
</change>

<change type="change">
<para lang="ru">
теперь символы 0x7F-0xFF в access_log записываются в виде \xXX.
</para>
<para lang="en">
now the 0x7F-0xFF characters are escaped as \xXX in an access_log.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы "proxy/fastcgi/scgi/uwsgi_ignore_headers" теперь поддерживают
значения X-Accel-Limit-Rate, X-Accel-Buffering и X-Accel-Charset.
</para>
<para lang="en">
"proxy/fastcgi/scgi/uwsgi_ignore_headers" directives support the following
additional values: X-Accel-Limit-Rate, X-Accel-Buffering, X-Accel-Charset.
</para>
</change>

<change type="feature">
<para lang="ru">
уменьшение потребления памяти при использовании SSL.
</para>
<para lang="en">
decrease of memory consumption if SSL is used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
некоторые UTF-8 символы обрабатывались неправильно.<br/>
Спасибо Алексею Куцу.
</para>
<para lang="en">
some UTF-8 characters were processed incorrectly.<br/>
Thanks to Alexey Kuts.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директивы модуля ngx_http_rewrite_module, заданные на уровне server,
применялись повторно, если для запроса не находилось ни одного location'а.
</para>
<para lang="en">
the ngx_http_rewrite_module directives specified at "server" level were
executed twice if no matching locations were defined.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании "aio sendfile" могла происходить утечка сокетов.
</para>
<para lang="en">
a socket leak might occurred if "aio sendfile" was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании файлового AIO соединения с быстрыми клиентами
могли быть закрыты по истечению send_timeout.
</para>
<para lang="en">
connections with fast clients might be closed after send_timeout
if file AIO was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_autoindex_module.
</para>
<para lang="en">
in the ngx_http_autoindex_module.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_mp4_module не поддерживал перемотку на 32-битных платформах.
</para>
<para lang="en">
the module ngx_http_mp4_module did not support seeking on 32-bit platforms.
</para>
</change>

</changes>


<changes ver="1.1.5" date="2011-10-05">

<change type="feature">
<para lang="ru">
директивы uwsgi_buffering и scgi_buffering.<br/>
Спасибо Peter Smit.
</para>
<para lang="en">
the "uwsgi_buffering" and "scgi_buffering" directives.<br/>
Thanks to Peter Smit.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании proxy_cache_bypass могли быть закэшированы
некэшируемые ответы.<br/>
Спасибо John Ferlito.
</para>
<para lang="en">
non-cacheable responses might be cached if "proxy_cache_bypass" directive
was used.<br/>
Thanks to John Ferlito.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_proxy_module при работе с бэкендами по HTTP/1.1.
</para>
<para lang="en">
in HTTP/1.1 support in the ngx_http_proxy_module.
</para>
</change>

<change type="bugfix">
<para lang="ru">
закэшированные ответы с пустым телом возвращались некорректно;
ошибка появилась в 0.8.31.
</para>
<para lang="en">
cached responses with an empty body were returned incorrectly;
the bug had appeared in 0.8.31.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ответы с кодом 201 модуля ngx_http_dav_module были некорректны;
ошибка появилась в 0.8.32.
</para>
<para lang="en">
201 responses of the ngx_http_dav_module were incorrect;
the bug had appeared in 0.8.32.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве return.
</para>
<para lang="en">
in the "return" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директивы "ssl_session_cache builtin" происходил
segmentation fault;
ошибка появилась в 1.1.1.
</para>
<para lang="en">
the "ssl_session_cache builtin" directive caused segmentation fault;
the bug had appeared in 1.1.1.
</para>
</change>

</changes>


<changes ver="1.1.4" date="2011-09-20">

<change type="feature">
<para lang="ru">
модуль ngx_http_upstream_keepalive.
</para>
<para lang="en">
the ngx_http_upstream_keepalive module.
</para>
</change>

<change type="feature">
<para lang="ru">
директива proxy_http_version.
</para>
<para lang="en">
the "proxy_http_version" directive.
</para>
</change>

<change type="feature">
<para lang="ru">
директива fastcgi_keep_conn.
</para>
<para lang="en">
the "fastcgi_keep_conn" directive.
</para>
</change>

<change type="feature">
<para lang="ru">
директива worker_aio_requests.
</para>
<para lang="en">
the "worker_aio_requests" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если nginx был собран с файловым AIO,
он не мог запускаться на Linux без поддержки AIO.
</para>
<para lang="en">
if nginx was built --with-file-aio it could not be run on Linux
kernel which did not support AIO.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке ошибок при работе с Linux AIO.
<br/>
Спасибо Hagai Avrahami.
</para>
<para lang="en">
in Linux AIO error processing.
<br/>
Thanks to Hagai Avrahami.
</para>
</change>

<change type="bugfix">
<para lang="ru">
уменьшено потребление памяти для долгоживущих запросов.
</para>
<para lang="en">
reduced memory consumption for long-lived requests.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_mp4_module не поддерживал 64-битный MP4-атом co64.
</para>
<para lang="en">
the module ngx_http_mp4_module did not support 64-bit MP4 "co64" atom.
</para>
</change>

</changes>


<changes ver="1.1.3" date="2011-09-14">

<change type="feature">
<para lang="ru">
модуль ngx_http_mp4_module.
</para>
<para lang="en">
the module ngx_http_mp4_module.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в Linux AIO, используемым совместно с open_file_cache.
</para>
<para lang="en">
in Linux AIO combined with open_file_cache.
</para>
</change>

<change type="bugfix">
<para lang="ru">
open_file_cache не обновлял информацию о файле,
если файл был изменён не атомарно.
</para>
<para lang="en">
open_file_cache did not update file info on retest
if file was not atomically changed.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался на MacOSX 10.7.
</para>
<para lang="en">
nginx could not be built on MacOSX 10.7.
</para>
</change>

</changes>


<changes ver="1.1.2" date="2011-09-05">

<change type="change">
<para lang="ru">
теперь, если суммарный размер всех диапазонов больше размера исходного ответа,
то nginx возвращает только исходный ответ, не обрабатывая диапазоны.
</para>
<para lang="en">
now if total size of all ranges is greater than source response size,
then nginx disables ranges and returns just the source response.
</para>
</change>

<change type="feature">
<para lang="ru">
директива max_ranges.
</para>
<para lang="en">
the "max_ranges" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директивы ssl_verify_client, ssl_verify_depth и ssl_prefer_server_cipher
могли работать некорректно, если использовался SNI.
</para>
<para lang="en">
the "ssl_verify_client", "ssl_verify_depth", and "ssl_prefer_server_ciphers"
directives might work incorrectly if SNI was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директивах proxy/fastcgi/scgi/ uwsgi_ignore_client_abort.
</para>
<para lang="en">
in the "proxy/fastcgi/scgi/uwsgi_ignore_client_abort" directives.
</para>
</change>

</changes>


<changes ver="1.1.1" date="2011-08-22">

<change type="change">
<para lang="ru">
теперь загрузчик кэша за каждую итерацию либо обрабатывает число файлов,
указанное в параметре load_files, либо работает не дольше времени,
указанного в параметре loader_threshold.
</para>
<para lang="en">
now cache loader processes either as many files as specified by "loader_files"
parameter or works no longer than time specified by the "loader_threshold"
parameter during each iteration.
</para>
</change>

<change type="change">
<para lang="ru">
SIGWINCH сигнал теперь работает только в режиме демона.
</para>
<para lang="en">
now SIGWINCH signal works only in daemon mode.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь разделяемые зоны и кэши используют семафоры POSIX на Solaris.<br/>
Спасибо Денису Иванову.
</para>
<para lang="en">
now shared zones and caches use POSIX semaphores on Solaris.<br/>
Thanks to Den Ivanov.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь на NetBSD поддерживаются accept фильтры.
</para>
<para lang="en">
accept filters are now supported on NetBSD.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался на Linux 3.0.
</para>
<para lang="en">
nginx could not be built on Linux 3.0.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в некоторых случаях nginx не использовал сжатие;
ошибка появилась в 1.1.0.
</para>
<para lang="en">
nginx did not use gzipping in some cases;
the bug had appeared in 1.1.0.
</para>
</change>

<change type="bugfix">
<para lang="ru">
обработка тела запроса могла быть неверной, если клиент использовал pipelining.
</para>
<para lang="en">
request body might be processed incorrectly if client used pipelining.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве request_body_in_single_buf.
</para>
<para lang="en">
in the "request_body_in_single_buf" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директивах proxy_set_body и proxy_pass_request_body
при использовании SSL-соединения с бэкендом.
</para>
<para lang="en">
in "proxy_set_body" and "proxy_pass_request_body" directives
if SSL connection to backend was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx нагружал процессор, если все серверы в upstream'е были помечены
флагом down.
</para>
<para lang="en">
nginx hogged CPU if all servers in an upstream were marked as "down".
</para>
</change>

<change type="bugfix">
<para lang="ru">
при переконфигурации мог произойти segmentation fault,
если в предыдущей конфигурации был определён, но не использовался
ssl_session_cache.
</para>
<para lang="en">
a segmentation fault might occur during reconfiguration
if ssl_session_cache was defined but not used in previous configuration.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании большого количества backup-серверов
в рабочем процессе мог произойти segmentation fault.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if many backup servers were used in an upstream.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директив fastcgi/scgi/uwsgi_param
со значениями, начинающимися со строки "HTTP_",
в рабочем процессе мог произойти segmentation fault;
ошибка появилась в 0.8.40.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if "fastcgi/scgi/uwsgi_param" directives were used
with values starting with "HTTP_";
the bug had appeared in 0.8.40.
</para>
</change>

</changes>


<changes ver="1.1.0" date="2011-08-01">

<change type="feature">
<para lang="ru">
уменьшение времени работы загрузчика кэша.
</para>
<para lang="en">
cache loader run time decrease.
</para>
</change>

<change type="feature">
<para lang="ru">
параметры loader_files, loader_sleep и loader_threshold
директив proxy/fastcgi/scgi/uwsgi_cache_path.
</para>
<para lang="en">
"loader_files", "loader_sleep", and "loader_threshold" options
of the "proxy/fastcgi/scgi/uwsgi_cache_path" directives.
</para>
</change>

<change type="feature">
<para lang="ru">
уменьшение времени загрузки конфигураций с большим количеством HTTPS серверов.
</para>
<para lang="en">
loading time decrease of configuration with large number of HTTPS sites.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь nginx поддерживает шифры с обменом ECDHE-ключами.<br/>
Спасибо Adrian Kotelba.
</para>
<para lang="en">
now nginx supports ECDHE key exchange ciphers.<br/>
Thanks to Adrian Kotelba.
</para>
</change>

<change type="feature">
<para lang="ru">
директива lingering_close.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
the "lingering_close" directive.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
закрытия соединения для pipelined-запросов.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
in closing connection for pipelined requests.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не запрещал сжатие при получении значения "gzip;q=0"
в строке "Accept-Encoding" в заголовке запроса клиента.
</para>
<para lang="en">
nginx did not disable gzipping if client sent "gzip;q=0" in
"Accept-Encoding" request header line.
</para>
</change>

<change type="bugfix">
<para lang="ru">
таймаута при небуферизированном проксировании.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
in timeout in unbuffered proxied mode.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
утечки памяти при использовании переменных в директиве proxy_pass
при работе с бэкендом по HTTPS.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
memory leaks when a "proxy_pass" directive contains variables and proxies
to an HTTPS backend.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в проверке параметра директивы proxy_pass, заданного переменными.<br/>
Спасибо Lanshun Zhou.
</para>
<para lang="en">
in parameter validation of a "proxy_pass" directive with variables.<br/>
Thanks to Lanshun Zhou.
</para>
</change>

<change type="bugfix">
<para lang="ru">
SSL не работал на QNX.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
SSL did not work on QNX.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
SSL модули не собирались gcc 4.6 без параметра --with-debug.
</para>
<para lang="en">
SSL modules could not be built by gcc 4.6 without --with-debug option.
</para>
</change>

</changes>


<changes ver="1.0.5" date="2011-07-19">

<change type="change">
<para lang="ru">
теперь по умолчанию используются следующие шифры SSL: "HIGH:!aNULL:!MD5".<br/>
Спасибо Rob Stradling.
</para>
<para lang="en">
now default SSL ciphers are "HIGH:!aNULL:!MD5".<br/>
Thanks to Rob Stradling.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы referer_hash_max_size и referer_hash_bucket_size.<br/>
Спасибо Witold Filipczyk.
</para>
<para lang="en">
the "referer_hash_max_size" and "referer_hash_bucket_size"
directives.<br/>
Thanks to Witold Filipczyk.
</para>
</change>

<change type="feature">
<para lang="ru">
переменная $uid_reset.
</para>
<para lang="en">
$uid_reset variable.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании кэширования
в рабочем процессе мог произойти segmentation fault.<br/>
Спасибо Lanshun Zhou.
</para>
<para lang="en">
a segmentation fault might occur in a worker process,
if a caching was used.<br/>
Thanks to Lanshun Zhou.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании кэширования рабочие процессы
могли зациклиться во время переконфигурации;
ошибка появилась в 0.8.48.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
worker processes may got caught in an endless loop during reconfiguration,
if a caching was used;
the bug had appeared in 0.8.48.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
сообщения "stalled cache updating".<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
"stalled cache updating" alert.<br/>
Thanks to Maxim Dounin.
</para>
</change>

</changes>


<changes ver="1.0.4" date="2011-06-01">

<change type="change">
<para lang="ru">
теперь в регулярных выражениях в директиве map можно задать
чувствительность к регистру с помощью префиксов "~" и "~*".
</para>
<para lang="en">
now regular expressions case sensitivity in the "map" directive
is given by prefixes "~" or "~*".
</para>
</change>

<change type="feature">
<para lang="ru">
теперь разделяемые зоны и кэши используют семафоры POSIX на Linux.<br/>
Спасибо Денису Латыпову.
</para>
<para lang="en">
now shared zones and caches use POSIX semaphores on Linux.<br/>
Thanks to Denis F. Latypoff.
</para>
</change>

<change type="bugfix">
<para lang="ru">
сообщения "stalled cache updating".
</para>
<para lang="en">
"stalled cache updating" alert.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался с параметром --without-http_auth_basic_module;
ошибка появилась в 1.0.3.
</para>
<para lang="en">
nginx could not be built --without-http_auth_basic_module;
the bug had appeared in 1.0.3.
</para>
</change>

</changes>


<changes ver="1.0.3" date="2011-05-25">

<change type="feature">
<para lang="ru">
директива auth_basic_user_file поддерживает шифрование пароля
методами "$apr1", "{PLAIN}" и "{SSHA}".<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
the "auth_basic_user_file" directive supports "$apr1", "{PLAIN}",
and "{SSHA}" password encryption methods.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="feature">
<para lang="ru">
директива geoip_org и переменная $geoip_org.<br/>
Спасибо Александру Ускову, Arnaud Granal и Денису Латыпову.
</para>
<para lang="en">
the "geoip_org" directive and $geoip_org variable.<br/>
Thanks to Alexander Uskov, Arnaud Granal, and Denis F. Latypoff.
</para>
</change>

<change type="feature">
<para lang="ru">
модули ngx_http_geo_module и ngx_http_geoip_module поддерживают
адреса IPv4, отображённые на IPv6 адреса.
</para>
<para lang="en">
ngx_http_geo_module and ngx_http_geoip_module support IPv4 addresses
mapped to IPv6 addresses.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при проверке адреса IPv4, отображённого на адрес IPv6,
в рабочем процессе происходил segmentation fault,
если директивы access или deny были определены только для адресов IPv6;
ошибка появилась в 0.8.22.
</para>
<para lang="en">
a segmentation fault occurred in a worker process
during testing IPv4 address mapped to IPv6 address,
if access or deny rules were defined only for IPv6;
the bug had appeared in 0.8.22.
</para>
</change>

<change type="bugfix">
<para lang="ru">
закэшированный ответ мог быть испорчен, если значения директив
proxy/fastcgi/scgi/uwsgi_cache_bypass и proxy/fastcgi/scgi/ uwsgi_no_cache
были разными;
ошибка появилась в 0.8.46.
</para>
<para lang="en">
a cached response may be broken if "proxy/fastcgi/scgi/ uwsgi_cache_bypass"
and "proxy/fastcgi/scgi/uwsgi_no_cache" directive values were different;
the bug had appeared in 0.8.46.
</para>
</change>

</changes>


<changes ver="1.0.2" date="2011-05-10">

<change type="feature">
<para lang="ru">
теперь разделяемые зоны и кэши используют семафоры POSIX.
</para>
<para lang="en">
now shared zones and caches use POSIX semaphores.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в работе параметра rotate директивы image_filter.<br/>
Спасибо Adam Bocim.
</para>
<para lang="en">
in the "rotate" parameter of the "image_filter" directive.<br/>
Thanks to Adam Bocim.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался на Solaris;
ошибка появилась в 1.0.1.
</para>
<para lang="en">
nginx could not be built on Solaris;
the bug had appeared in 1.0.1.
</para>
</change>

</changes>


<changes ver="1.0.1" date="2011-05-03">

<change type="change">
<para lang="ru">
теперь директива split_clients использует алгоритм MurmurHash2 из-за
лучшего распределения.<br/>
Спасибо Олегу Мамонтову.
</para>
<para lang="en">
now the "split_clients" directive uses MurmurHash2 algorithm because
of better distribution.<br/>
Thanks to Oleg Mamontov.
</para>
</change>

<change type="change">
<para lang="ru">
теперь длинные строки, начинающиеся с нуля, не считаются ложными
значениями.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
now long strings starting with zero are not considered as false values.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="change">
<para lang="ru">
теперь по умолчанию nginx использует значение 511 для listen backlog на Linux.
</para>
<para lang="en">
now nginx uses a default listen backlog value 511 on Linux.
</para>
</change>

<change type="feature">
<para lang="ru">
переменные $upstream_... можно использовать в SSI и перловом модулях.
</para>
<para lang="en">
the $upstream_... variables may be used in the SSI and perl modules.
</para>
</change>

<change type="bugfix">
<para lang="ru">
теперь nginx лучше ограничивает размер кэша на диске.<br/>
Спасибо Олегу Мамонтову.
</para>
<para lang="en">
now nginx limits better disk cache size.<br/>
Thanks to Oleg Mamontov.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при парсинге неправильного IPv4 адреса мог произойти segmentation fault;
ошибка появилась в 0.8.22.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
a segmentation fault might occur while parsing incorrect IPv4 address;
the bug had appeared in 0.9.3.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался gcc 4.6 без параметра --with-debug.
</para>
<para lang="en">
nginx could not be built by gcc 4.6 without --with-debug option.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался на Solaris 9 и более ранних;
ошибка появилась в 0.9.3.<br/>
Спасибо Dagobert Michelsen.
</para>
<para lang="en">
nginx could not be built on Solaris 9 and earlier;
the bug had appeared in 0.9.3.<br/>
Thanks to Dagobert Michelsen.
</para>
</change>

<change type="bugfix">
<para lang="ru">
переменная $request_time имела неверные значения, если использовались
подзапросы;
ошибка появилась в 0.8.47.<br/>
Спасибо Игорю А. Валькову.
</para>
<para lang="en">
$request_time variable had invalid values if subrequests were used;
the bug had appeared in 0.8.47.<br/>
Thanks to Igor A. Valcov.
</para>
</change>

</changes>


<changes ver="1.0.0" date="2011-04-12">

<change type="bugfix">
<para lang="ru">
cache manager мог нагружать процессор после переконфигурации.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
a cache manager might hog CPU after reload.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива "image_filter crop" неправильно работала в сочетании с
"image_filter rotate 180".
</para>
<para lang="en">
an "image_filter crop" directive worked incorrectly coupled with
an "image_filter rotate 180" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива "satisfy any" запрещала выдачу пользовательской страницы
для 401 кода.
</para>
<para lang="en">
a "satisfy any" directive disabled custom 401 error page.
</para>
</change>

</changes>


<changes ver="0.9.7" date="2011-04-04">

<change type="feature">
<para lang="ru">
теперь соединения в состоянии keepalive могут быть закрыты преждевременно,
если у воркера нет свободных соединений.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
now keepalive connections may be closed premature,
if there are no free worker connections.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="feature">
<para lang="ru">
параметр rotate директивы image_filter.<br/>
Спасибо Adam Bocim.
</para>
<para lang="en">
the "rotate" parameter of the "image_filter" directive.<br/>
Thanks to Adam Bocim.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ситуации, когда бэкенд в директивах fastcgi_pass, scgi_pass или uwsgi_pass
задан выражением и ссылается на описанный upstream.
</para>
<para lang="en">
a case when a backend in "fastcgi_pass", "scgi_pass", or "uwsgi_pass"
directives is given by expression and refers to a defined upstream.
</para>
</change>

</changes>


<changes ver="0.9.6" date="2011-03-21">

<change type="feature">
<para lang="ru">
директива map поддерживает регулярные выражения в качестве значения
первого параметра.
</para>
<para lang="en">
the "map" directive supports regular expressions as value of the first
parameter.
</para>
</change>

<change type="feature">
<para lang="ru">
переменная $time_iso8601 для access_log.<br/>
Спасибо Michael Lustfield.
</para>
<para lang="en">
$time_iso8601 access_log variable.<br/>
Thanks to Michael Lustfield.
</para>
</change>

</changes>


<changes ver="0.9.5" date="2011-02-21">

<change type="change">
<para lang="ru">
теперь по умолчанию nginx использует значение -1 для listen backlog
на Linux.<br/>
Спасибо Андрею Нигматулину.
</para>
<para lang="en">
now nginx uses a default listen backlog value -1 on Linux.<br/>
Thanks to Andrei Nigmatulin.
</para>
</change>

<change type="feature">
<para lang="ru">
параметр utf8 в директивах geoip_country и geoip_city.<br/>
Спасибо Денису Латыпову.
</para>
<para lang="en">
the "utf8" parameter of "geoip_country" and "geoip_city" directives.<br/>
Thanks to Denis F. Latypoff.
</para>
</change>

<change type="bugfix">
<para lang="ru">
исправление в умолчательной директиве proxy_redirect, если в директиве
proxy_pass не был описан URI.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
in a default "proxy_redirect" directive if "proxy_pass" directive has no
URI part.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива error_page не работала с нестандартными кодами ошибок;
ошибка появилась в 0.8.53.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
an "error_page" directive did not work with nonstandard error codes;
the bug had appeared in 0.8.53.<br/>
Thanks to Maxim Dounin.
</para>
</change>

</changes>


<changes ver="0.9.4" date="2011-01-21">

<change type="feature">
<para lang="ru">
директива server_name поддерживает переменную $hostname.
</para>
<para lang="en">
the "server_name" directive supports the $hostname variable.
</para>
</change>

<change type="feature">
<para lang="ru">
494 код для ошибки "Request Header Too Large".
</para>
<para lang="en">
494 code for "Request Header Too Large" error.
</para>
</change>

</changes>


<changes ver="0.9.3" date="2010-12-13">

<change type="bugfix">
<para lang="ru">
если для пары IPv6-адрес:порт описан только один сервер, то выделения
в регулярных выражениях в директиве server_name не работали.
</para>
<para lang="en">
if there was a single server for given IPv6 address:port pair,
then captures in regular expressions in a "server_name" directive did not work.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался под Solaris;
ошибка появилась в 0.9.0.
</para>
<para lang="en">
nginx could not be built on Solaris;
the bug had appeared in 0.9.0.
</para>
</change>

</changes>


<changes ver="0.9.2" date="2010-12-06">

<change type="feature">
<para lang="ru">
поддержка строки "If-Unmodified-Since" в заголовке запроса клиента.
</para>
<para lang="en">
the "If-Unmodified-Since" client request header line support.
</para>
</change>

<change type="workaround">
<para lang="ru">
использование accept(), если accept4() не реализован;
ошибка появилась в 0.9.0.
</para>
<para lang="en">
fallback to accept() syscall if accept4() was not implemented;
the issue had appeared in 0.9.0.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался под Cygwin;
ошибка появилась в 0.9.0.
</para>
<para lang="en">
nginx could not be built on Cygwin;
the bug had appeared in 0.9.0.
</para>
</change>

<change type="bugfix">
<para lang="ru">
уязвимости в OpenSSL CVE-2010-4180.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
for OpenSSL vulnerability CVE-2010-4180.<br/>
Thanks to Maxim Dounin.
</para>
</change>

</changes>


<changes ver="0.9.1" date="2010-11-30">

<change type="bugfix">
<para lang="ru">
директивы вида "return CODE message" не работали;
ошибка появилась в 0.9.0.
</para>
<para lang="en">
"return CODE message" directives did not work;
the bug had appeared in 0.9.0.
</para>
</change>

</changes>


<changes ver="0.9.0" date="2010-11-29">

<change type="feature">
<para lang="ru">
директива keepalive_disable.
</para>
<para lang="en">
the "keepalive_disable" directive.
</para>
</change>

<change type="feature">
<para lang="ru">
директива map поддерживает переменные в качестве значения определяемой
переменной.
</para>
<para lang="en">
the "map" directive supports variables as value of a defined variable.
</para>
</change>

<change type="feature">
<para lang="ru">
директива map поддерживает пустые строки в качестве значения первого параметра.
</para>
<para lang="en">
the "map" directive supports empty strings as value of the first parameter.
</para>
</change>

<change type="feature">
<para lang="ru">
директива map поддерживает выражения в первом параметре.
</para>
<para lang="en">
the "map" directive supports expressions as the first parameter.
</para>
</change>

<change type="feature">
<para lang="ru">
страница руководства nginx(8).<br/>
Спасибо Сергею Осокину.
</para>
<para lang="en">
nginx(8) manual page.<br/>
Thanks to Sergey Osokin.
</para>
</change>

<change type="feature">
<para lang="ru">
поддержка accept4() в Linux.<br/>
Спасибо Simon Liu.
</para>
<para lang="en">
Linux accept4() support.<br/>
Thanks to Simon Liu.
</para>
</change>

<change type="workaround">
<para lang="ru">
устранение предупреждения линкера о "sys_errlist" и "sys_nerr" под Linux;
предупреждение появилось в 0.8.35.
</para>
<para lang="en">
elimination of Linux linker warning about "sys_errlist" and "sys_nerr";
the warning had appeared in 0.8.35.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директивы auth_basic
в рабочем процессе мог произойти segmentation fault.<br/>
Спасибо Михаилу Лалетину.
</para>
<para lang="en">
a segmentation fault might occur in a worker process,
if the "auth_basic" directive was used.<br/>
Thanks to Michail Laletin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
совместимость с модулем ngx_http_eval_module;
ошибка появилась в 0.8.42.
</para>
<para lang="en">
compatibility with ngx_http_eval_module;
the bug had appeared in 0.8.42.
</para>
</change>

</changes>


<changes ver="0.8.53" date="2010-10-18">

<change type="feature">
<para lang="ru">
теперь директива error_page позволяет менять код статуса у редиректа.
</para>
<para lang="en">
now the "error_page" directive allows to change a status code in a redirect.
</para>
</change>

<change type="feature">
<para lang="ru">
директива gzip_disable поддерживает специальную маску degradation.
</para>
<para lang="en">
the "gzip_disable" directive supports special "degradation" mask.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании файлового AIO могла происходить утечка сокетов.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
a socket leak might occurred if file AIO was used.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если в первом сервере не была описана директива listen и нигде явно
не описан сервер по умолчанию, то сервером по умолчанию становился
следующий сервер с директивой listen;
ошибка появилась в 0.8.21.
</para>
<para lang="en">
if the first server had no "listen" directive and there was no explicit
default server, then a next server with a "listen" directive became
the default server;
the bug had appeared in 0.8.21.
</para>
</change>

</changes>


<changes ver="0.8.52" date="2010-09-28">

<change type="bugfix">
<para lang="ru">
nginx использовал режим SSL для listen сокета, если для него был
установлен любой listen-параметр;
ошибка появилась в 0.8.51.
</para>
<para lang="en">
nginx used SSL mode for a listen socket if any listen option was set;
the bug had appeared in 0.8.51.
</para>
</change>

</changes>


<changes ver="0.8.51" date="2010-09-27">

<change type="change">
<para lang="ru">
директива secure_link_expires упразднена.
</para>
<para lang="en">
the "secure_link_expires" directive has been canceled.
</para>
</change>

<change type="change">
<para lang="ru">
уровень логгирования ошибок resolver'а понижен с уровня alert на error.
</para>
<para lang="en">
a logging level of resolver errors has been lowered from "alert" to "error".
</para>
</change>

<change type="feature">
<para lang="ru">
теперь параметр "ssl" listen-сокета можно устанавливать несколько раз.
</para>
<para lang="en">
now a listen socket "ssl" parameter may be set several times.
</para>
</change>

</changes>


<changes ver="0.8.50" date="2010-09-02">

<change type="feature">
<para lang="ru">
директивы secure_link, secure_link_md5 и secure_link_expires
модуля ngx_http_secure_link_module.
</para>
<para lang="en">
the "secure_link", "secure_link_md5", and "secure_link_expires" directives of
the ngx_http_secure_link_module.
</para>
</change>

<change type="feature">
<para lang="ru">
ключ -q.<br/>
Спасибо Геннадию Махомеду.
</para>
<para lang="en">
the -q switch.<br/>
Thanks to Gena Makhomed.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании кэширования рабочие процессы и могли зациклиться
во время переконфигурации;
ошибка появилась в 0.8.48.
</para>
<para lang="en">
worker processes may got caught in an endless loop during reconfiguration,
if a caching was used;
the bug had appeared in 0.8.48.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве gzip_disable.<br/>
Спасибо Derrick Petzold.
</para>
<para lang="en">
in the "gzip_disable" directive.<br/>
Thanks to Derrick Petzold.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx/Windows не мог посылать сигналы stop, quit, reopen, reload процессу,
запущенному в другой сессии.
</para>
<para lang="en">
nginx/Windows could not send stop, quit, reopen, and reload signals
to a process run in other session.
</para>
</change>

</changes>


<changes ver="0.8.49" date="2010-08-09">

<change type="feature">
<para lang="ru">
директива image_filter_jpeg_quality поддерживает переменные.
</para>
<para lang="en">
the "image_filter_jpeg_quality" directive supports variables.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании переменной $geoip_region_name
в рабочем процессе мог произойти segmentation fault;
ошибка появилась в 0.8.48.
</para>
<para lang="en">
a segmentation fault might occur in a worker process,
if the $geoip_region_name variables was used;
the bug had appeared in 0.8.48.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки, перехваченные error_page, кэшировались только до следующего запроса;
ошибка появилась в 0.8.48.
</para>
<para lang="en">
errors intercepted by error_page were cached only for next request;
the bug had appeared in 0.8.48.
</para>
</change>

</changes>


<changes ver="0.8.48" date="2010-08-03">

<change type="change">
<para lang="ru">
теперь по умолчанию директива server_name имеет значение пустое имя "".<br/>
Спасибо Геннадию Махомеду.
</para>
<para lang="en">
now the "server_name" directive default value is an empty name "".<br/>
Thanks to Gena Makhomed.
</para>
</change>

<change type="change">
<para lang="ru">
теперь по умолчанию директива server_name_in_redirect имеет значение off.
</para>
<para lang="en">
now the "server_name_in_redirect" directive default value is "off".
</para>
</change>

<change type="feature">
<para lang="ru">
переменные $geoip_dma_code, $geoip_area_code и $geoip_region_name.<br/>
Спасибо Christine McGonagle.
</para>
<para lang="en">
the $geoip_dma_code, $geoip_area_code, and $geoip_region_name variables.<br/>
Thanks to Christine McGonagle.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директивы proxy_pass, fastcgi_pass, uwsgi_pass и scgi_pass не наследовались
в блоки limit_except.
</para>
<para lang="en">
the "proxy_pass", "fastcgi_pass", "uwsgi_pass", and "scgi_pass" directives
were not inherited inside "limit_except" blocks.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директивы proxy_cache_min_uses, fastcgi_cache_min_uses
uwsgi_cache_min_uses и scgi_cache_min_uses не работали;
ошибка появилась в 0.8.46.
</para>
<para lang="en">
the "proxy_cache_min_uses", "fastcgi_cache_min_uses"
"uwsgi_cache_min_uses", and "scgi_cache_min_uses" directives did not work;
the bug had appeared in 0.8.46.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива fastcgi_split_path_info неверно использовала выделения,
если в выделения попадала только часть URI.<br/>
Спасибо Юрию Тарадаю и Frank Enderle.
</para>
<para lang="en">
the "fastcgi_split_path_info" directive used incorrectly captures,
if only parts of an URI were captured.<br/>
Thanks to Yuriy Taraday and Frank Enderle.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива rewrite не экранировала символ ";" при копировании из URI
в аргументы.<br/>
Спасибо Daisuke Murase.
</para>
<para lang="en">
the "rewrite" directive did not escape a ";" character during copying
from URI to query string.<br/>
Thanks to Daisuke Murase.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_image_filter_module закрывал соединение,
если изображение было больше размера image_filter_buffer.
</para>
<para lang="en">
the ngx_http_image_filter_module closed a connection,
if an image was larger than "image_filter_buffer" size.
</para>
</change>

</changes>


<changes ver="0.8.47" date="2010-07-28">

<change type="bugfix">
<para lang="ru">
переменная $request_time имела неверные значения для подзапросов.
</para>
<para lang="en">
$request_time variable had invalid values for subrequests.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки, перехваченные error_page, не кэшировались.
</para>
<para lang="en">
errors intercepted by error_page could not be cached.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если использовался параметр max_size, то cache manager мог зациклиться;
ошибка появилась в 0.8.46.
</para>
<para lang="en">
a cache manager process may got caught in an endless loop,
if max_size parameter was used;
the bug had appeared in 0.8.46.
</para>
</change>

</changes>


<changes ver="0.8.46" date="2010-07-19">

<change type="change">
<para lang="ru">
директивы proxy_no_cache, fastcgi_no_cache, uwsgi_no_cache
и scgi_no_cache теперь влияют только на сохранение закэшированного ответа.
</para>
<para lang="en">
now the "proxy_no_cache", "fastcgi_no_cache", "uwsgi_no_cache", and
"scgi_no_cache" directives affect on a cached response saving only.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы proxy_cache_bypass, fastcgi_cache_bypass, uwsgi_cache_bypass
и scgi_cache_bypass.
</para>
<para lang="en">
the "proxy_cache_bypass", "fastcgi_cache_bypass", "uwsgi_cache_bypass",
and "scgi_cache_bypass" directives.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не освобождал память в keys_zone кэшей в случае ошибки работы с
бэкендом: память освобождалась только по истечении времени неактивности
или при недостатке памяти.
</para>
<para lang="en">
nginx did not free memory in cache keys zones if there was an error
during working with backend: the memory was freed only after inactivity
time or on memory low condition.
</para>
</change>

</changes>


<changes ver="0.8.45" date="2010-07-13">

<change type="feature">
<para lang="ru">
улучшения в модуле ngx_http_xslt_filter.<br/>
Спасибо Laurence Rowe.
</para>
<para lang="en">
ngx_http_xslt_filter improvements.<br/>
Thanks to Laurence Rowe.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ответ SSI модуля мог передаваться не полностью после команды include
с параметром wait="yes";
ошибка появилась в 0.7.25.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
SSI response might be truncated after include with wait="yes";
the bug had appeared in 0.7.25.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива listen не поддерживала параметр setfib=0.
</para>
<para lang="en">
the "listen" directive did not support the "setfib=0" parameter.
</para>
</change>

</changes>


<changes ver="0.8.44" date="2010-07-05">

<change type="change">
<para lang="ru">
теперь nginx по умолчанию не кэширует ответы бэкендов,
в заголовке которых есть строка "Set-Cookie".
</para>
<para lang="en">
now nginx does not cache by default backend responses,
if they have a "Set-Cookie" header line.
</para>
</change>

<change type="feature">
<para lang="ru">
директива listen поддерживает параметр setfib.<br/>
Спасибо Андрею Филонову.
</para>
<para lang="en">
the "listen" directive supports the "setfib" parameter.<br/>
Thanks to Andrew Filonov.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива sub_filter могла изменять регистр букв при частичном совпадении.
</para>
<para lang="en">
the "sub_filter" directive might change character case on partial match.
</para>
</change>

<change type="bugfix">
<para lang="ru">
совместимость с HP/UX.
</para>
<para lang="en">
compatibility with HP/UX.
</para>
</change>

<change type="bugfix">
<para lang="ru">
совместимость с компилятором AIX xlC_r.
</para>
<para lang="en">
compatibility with AIX xlC_r compiler.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx считал большие пакеты SSLv2 как обычные текстовые запросы.<br/>
Спасибо Miroslaw Jaworski.
</para>
<para lang="en">
nginx treated large SSLv2 packets as plain requests.<br/>
Thanks to Miroslaw Jaworski.
</para>
</change>

</changes>


<changes ver="0.8.43" date="2010-06-30">

<change type="feature">
<para lang="ru">
ускорение загрузки больших баз geo-диапазонов.
</para>
<para lang="en">
large geo ranges base loading speed-up.
</para>
</change>

<change type="bugfix">
<para lang="ru">
перенаправление ошибки в "location /zero {return 204;}" без изменения
кода ответа оставляло тело ошибки;
ошибка появилась в 0.8.42.
</para>
<para lang="en">
an error_page redirection to "location /zero {return 204;}" without
changing status code kept the error body;
the bug had appeared in 0.8.42.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx мог закрывать IPv6 listen сокет во время переконфигурации.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
nginx might close IPv6 listen socket during reconfiguration.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
переменную $uid_set можно использовать на любой стадии обработки запроса.
</para>
<para lang="en">
the $uid_set variable may be used at any request processing stage.
</para>
</change>

</changes>


<changes ver="0.8.42" date="2010-06-21">

<change type="change">
<para lang="ru">
теперь nginx проверяет location'ы, заданные регулярными выражениями,
если запрос полностью совпал с location'ом, заданным строкой префикса.
Предыдущее поведение появилось в 0.7.1.
</para>
<para lang="en">
now nginx tests locations given by regular expressions,
if request was matched exactly by a location given by a prefix string.
The previous behavior has been introduced in 0.7.1.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_http_scgi_module.<br/>
Спасибо Manlio Perillo.
</para>
<para lang="en">
the ngx_http_scgi_module.<br/>
Thanks to Manlio Perillo.
</para>
</change>

<change type="feature">
<para lang="ru">
в директиве return можно добавлять текст ответа.
</para>
<para lang="en">
a text answer may be added to a "return" directive.
</para>
</change>

</changes>


<changes ver="0.8.41" date="2010-06-15">

<change type="security">
<para lang="ru">
рабочий процесс nginx/Windows мог завершаться аварийно при запросе файла
с неверной кодировкой UTF-8.
</para>
<para lang="en">
nginx/Windows worker might be terminated abnormally if a requested file name
has invalid UTF-8 encoding.
</para>
</change>

<change type="change">
<para lang="ru">
теперь nginx разрешает использовать пробелы в строке запроса.
</para>
<para lang="en">
now nginx allows to use spaces in a request line.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива proxy_redirect неправильно изменяла строку "Refresh" в заголовке
ответа бэкенда.<br/>
Спасибо Андрею Андрееву и Максиму Согину.
</para>
<para lang="en">
the "proxy_redirect" directive changed incorrectly a backend "Refresh"
response header line.<br/>
Thanks to Andrey Andreew and Max Sogin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не поддерживал путь без имени хоста в
строке "Destination" в заголовке запроса.
</para>
<para lang="en">
nginx did not support path without host name
in "Destination" request header line.
</para>
</change>

</changes>


<changes ver="0.8.40" date="2010-06-07">

<change type="security">
<para lang="ru">
теперь nginx/Windows игнорирует имя потока файла по умолчанию.<br/>
Спасибо Jose Antonio Vazquez Gonzalez.
</para>
<para lang="en">
now nginx/Windows ignores default file stream name.<br/>
Thanks to Jose Antonio Vazquez Gonzalez.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_http_uwsgi_module.<br/>
Спасибо Roberto De Ioris.
</para>
<para lang="en">
the ngx_http_uwsgi_module.<br/>
Thanks to Roberto De Ioris.
</para>
</change>

<change type="feature">
<para lang="ru">
директива fastcgi_param со значением, начинающимся со строки "HTTP_",
изменяет строку заголовка в запросе клиента.
</para>
<para lang="en">
a "fastcgi_param" directive with value starting with "HTTP_" overrides
a client request header line.
</para>
</change>

<change type="bugfix">
<para lang="ru">
строки "If-Modified-Since", "If-Range" и им подобные в заголовке запроса
клиента передавались FastCGI-серверу при кэшировании.
</para>
<para lang="en">
the "If-Modified-Since", "If-Range", etc. client request header lines
were passed to FastCGI-server while caching.
</para>
</change>

<change type="bugfix">
<para lang="ru">
listen unix domain сокет нельзя было изменить во время переконфигурации.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
listen unix domain socket could not be changed during reconfiguration.<br/>
Thanks to Maxim Dounin.
</para>
</change>

</changes>


<changes ver="0.8.39" date="2010-05-31">

<change type="bugfix">
<para lang="ru">
наследуемая директива alias неправильно работала во вложенном location'е.
</para>
<para lang="en">
an inherited "alias" directive worked incorrectly in inclusive location.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в комбинации директив alias с переменными и try_files;
</para>
<para lang="en">
in "alias" with variables and "try_files" directives combination.
</para>
</change>

<change type="bugfix">
<para lang="ru">
listen unix domain и IPv6 сокеты не наследовались во время обновления
без перерыва.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
listen unix domain and IPv6 sockets did not inherit while online upgrade.<br/>
Thanks to Maxim Dounin.
</para>
</change>

</changes>


<changes ver="0.8.38" date="2010-05-24">

<change type="feature">
<para lang="ru">
директивы proxy_no_cache и fastcgi_no_cache.
</para>
<para lang="en">
the "proxy_no_cache" and "fastcgi_no_cache" directives.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь при использовании переменной $scheme в директиве rewrite
автоматически делается редирект.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
now the "rewrite" directive does a redirect automatically
if the $scheme variable is used.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="bugfix">
<para lang="ru">
теперь задержки в директиве limit_req соответствует описанному алгоритму.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
now "limit_req" delay directive conforms to the described algorithm.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
переменную $uid_got нельзя было использовать в SSI и перловом модулях.
</para>
<para lang="en">
the $uid_got variable might not be used in the SSI and perl modules.
</para>
</change>

</changes>


<changes ver="0.8.37" date="2010-05-17">

<change type="feature">
<para lang="ru">
модуль ngx_http_split_clients_module.
</para>
<para lang="en">
the ngx_http_split_clients_module.
</para>
</change>

<change type="feature">
<para lang="ru">
директива map поддерживает ключи больше 255 символов.
</para>
<para lang="en">
the "map" directive supports keys more than 255 characters.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx игнорировал значения "private" и "no-store" в строке "Cache-Control"
в заголовке ответа бэкенда.
</para>
<para lang="en">
nginx ignored the "private" and "no-store" values
in the "Cache-Control" backend response header line.
</para>
</change>

<change type="bugfix">
<para lang="ru">
параметр stub в SSI-директиве include не использовался,
если пустой ответ имел код 200.
</para>
<para lang="en">
a "stub" parameter of an "include" SSI directive was not used,
if empty response has 200 status code.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если проксированный или FastCGI запрос внутренне перенаправлялся
в другой проксированный или FastCGI location,
то в рабочем процессе мог произойти segmentation fault;
ошибка появилась в 0.8.33.<br/>
Спасибо Yichun Zhang.
</para>
<para lang="en">
if a proxied or FastCGI request was internally redirected
to another proxied or FastCGI location,
then a segmentation fault might occur in a worker process;
the bug had appeared in 0.8.33.<br/>
Thanks to Yichun Zhang.
</para>
</change>

<change type="bugfix">
<para lang="ru">
соединения IMAP к серверу Zimbra могло зависнуть до таймаута.<br/>
Спасибо Alan Batie.
</para>
<para lang="en">
IMAP connections may hang until they timed out
while talking to Zimbra server.<br/>
Thanks to Alan Batie.
</para>
</change>

</changes>


<changes ver="0.8.36" date="2010-04-22">

<change type="bugfix">
<para lang="ru">
модуль ngx_http_dav_module неправильно обрабатывал методы DELETE, COPY и MOVE
для симлинков.
</para>
<para lang="en">
the ngx_http_dav_module handled incorrectly the DELETE, COPY, and MOVE methods
for symlinks.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль SSI в подзапросах использовал закэшированные в основном запросе
значения переменных $query_string, $arg_... и им подобных.
</para>
<para lang="en">
values of the $query_string, $arg_..., etc. variables cached in main
request were used by the SSI module in subrequests.
</para>
</change>

<change type="bugfix">
<para lang="ru">
значение переменной повторно экранировалось после каждого вывода
SSI-команды echo;
ошибка появилась в 0.6.14.
</para>
<para lang="en">
a variable value was repeatedly encoded after each
an "echo" SSI-command output;
the bug had appeared in 0.6.14.
</para>
</change>

<change type="bugfix">
<para lang="ru">
рабочий процесс зависал при запросе файла FIFO.<br/>
Спасибо Vicente Aguilar и Максиму Дунину.
</para>
<para lang="en">
a worker process hung if a FIFO file was requested.<br/>
Thanks to Vicente Aguilar and Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
совместимость с OpenSSL-1.0.0 на 64-битном Linux.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
OpenSSL-1.0.0 compatibility on 64-bit Linux.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался с параметром --without-http-cache;
ошибка появилась в 0.8.35.
</para>
<para lang="en">
nginx could not be built --without-http-cache;
the bug had appeared in 0.8.35.
</para>
</change>

</changes>


<changes ver="0.8.35" date="2010-04-01">

<change type="change">
<para lang="ru">
теперь charset-фильтр работает до SSI-фильтра.
</para>
<para lang="en">
now the charset filter runs before the SSI filter.
</para>
</change>

<change type="feature">
<para lang="ru">
директива chunked_transfer_encoding.
</para>
<para lang="en">
the "chunked_transfer_encoding" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
символ "&amp;" при копировании в аргументы в правилах rewrite не экранировался.
</para>
<para lang="en">
an "&amp;" character was not escaped when it was copied in arguments part
in a rewrite rule.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx мог завершаться аварийно во время обработки сигнала или
при использовании директивы timer_resolution на платформах,
не поддерживающих методы kqueue или eventport.<br/>
Спасибо George Xie и Максиму Дунину.
</para>
<para lang="en">
nginx might be terminated abnormally
while a signal processing or if the directive "timer_resolution" was used
on platforms which do not support kqueue or eventport notification methods.<br/>
Thanks to George Xie and Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если временные файлы и постоянное место хранения располагались на разных
файловых системах, то у постоянных файлов время изменения было неверным.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
if temporary files and permanent storage area resided at different
file systems, then permanent file modification times were incorrect.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_memcached_module мог выдавать ошибку "memcached sent invalid
trailer".<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
ngx_http_memcached_module might issue the error message "memcached sent invalid
trailer".<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не мог собрать библиотеку zlib-1.2.4 из исходных текстов.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
nginx could not built zlib-1.2.4 library using the library sources.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в рабочем процессе происходил segmentation fault,
если перед ответом FastCGI-сервера было много вывода в stderr;
ошибка появилась в 0.8.34.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
a segmentation fault occurred in a worker process,
if there was large stderr output before FastCGI response;
the bug had appeared in 0.8.34.<br/>
Thanks to Maxim Dounin.
</para>
</change>

</changes>


<changes ver="0.8.34" date="2010-03-03">

<change type="bugfix">
<para lang="ru">
nginx не поддерживал все шифры, используемые в клиентских сертификатах.<br/>
Спасибо Иннокентию Еникееву.
</para>
<para lang="en">
nginx did not support all ciphers and digests used in client certificates.<br/>
Thanks to Innocenty Enikeew.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx неправильно кэшировал FastCGI-ответы, если перед ответом было
много вывода в stderr.
</para>
<para lang="en">
nginx cached incorrectly FastCGI responses if there was large stderr output
before response.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не поддерживал HTTPS-рефереры.
</para>
<para lang="en">
nginx did not support HTTPS referrers.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx/Windows мог не находить файлы, если путь в конфигурации был задан
в другом регистре;
ошибка появилась в 0.8.33.
</para>
<para lang="en">
nginx/Windows might not find file if path in configuration was given
in other character case;
the bug had appeared in 0.8.33.
</para>
</change>

<change type="bugfix">
<para lang="ru">
переменная $date_local выдавала неверное время,
если использовался формат "%s".<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
the $date_local variable has an incorrect value,
if the "%s" format was used.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если ssl_session_cache не был установлен или установлен в none,
то при проверке клиентского сертификаты могла происходить
ошибка "session id context uninitialized";
ошибка появилась в 0.7.1.
</para>
<para lang="en">
if ssl_session_cache was not set or was set to "none",
then during client certificate verify
the error "session id context uninitialized" might occur;
the bug had appeared in 0.7.1.
</para>
</change>

<change type="bugfix">
<para lang="ru">
geo-диапазон возвращал значение по умолчанию, если диапазон включал
в себя одну и более сетей размером /16 и не начинался на границе сети
размером /16.
</para>
<para lang="en">
a geo range returned default value if the range included two or more
/16 networks and did not begin at /16 network boundary.
</para>
</change>

<change type="bugfix">
<para lang="ru">
блок, используемый в параметре stub в SSI-директиве include,
выводился с MIME-типом "text/plain".
</para>
<para lang="en">
a block used in a "stub" parameter of an "include" SSI directive
was output with "text/plain" MIME type.
</para>
</change>

<change type="bugfix">
<para lang="ru">
$r->sleep() не работал;
ошибка появилась в 0.8.11.
</para>
<para lang="en">
$r->sleep() did not work;
the bug had appeared in 0.8.11.
</para>
</change>

</changes>


<changes ver="0.8.33" date="2010-02-01">

<change type="security">
<para lang="ru">
теперь nginx/Windows игнорирует пробелы в конце URI.<br/>
Спасибо Dan Crowley, Core Security Technologies.
</para>
<para lang="en">
now nginx/Windows ignores trailing spaces in URI.<br/>
Thanks to Dan Crowley, Core Security Technologies.
</para>
</change>

<change type="security">
<para lang="ru">
теперь nginx/Windows игнорирует короткие имена файлов.<br/>
Спасибо Dan Crowley, Core Security Technologies.
</para>
<para lang="en">
now nginx/Windows ignores short files names.<br/>
Thanks to Dan Crowley, Core Security Technologies.</