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


<change_log title="nginx">


<changes ver="1.31.4" date="2026-08-19">

<change type="feature">
<para lang="ru">
директива proxy_protocol в модулях stream и mail
теперь поддерживает протокол PROXY версии 2.
</para>
<para lang="en">
the "proxy_protocol" directive in the stream and mail modules
now supports the PROXY protocol version 2.
</para>
</change>

<change type="change">
<para lang="ru">
теперь запросы к HTTP/2 и gRPC-бэкендам всегда отправляются
с псевдо-заголовком ":authority",
а запросы к HTTP/1.1-бэкендам - с заголовком "Host".
</para>
<para lang="en">
now HTTP/2 and gRPC requests to backends are always sent
with the ":authority" pseudo-header,
and HTTP/1.1 requests - with the "Host" header.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
неполные gRPC-ответы с ненулевым заголовком "Content-Length"
теперь считаются некорректными.
</para>
<para lang="en">
incomplete gRPC responses with a non-zero "Content-Length" header line
are now treated as malformed.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в бинарной совместимости со сторонними модулями, использующими script codes;
ошибка появилась в 1.31.3.
</para>
<para lang="en">
in binary compatibility with third-party modules using script codes;
the bug had appeared in 1.31.3.
</para>
</change>

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

<change>
<para lang="ru">
Исправления в HTTP/2, HTTP/3, ngx_http_image_filter_module
и ngx_http_grpc_module.
</para>
<para lang="en">
Bugfixes in HTTP/2, HTTP/3, ngx_http_image_filter_module,
and ngx_http_grpc_module.
</para>
</change>

</changes>


<changes ver="1.31.3" date="2026-07-15">

<change type="security">
<para lang="ru">
при использовании директивы map c регулярными выражениями
могло произойти переполнение буфера в рабочем процессе, если
map-переменная была указана в строковом выражении после выделения,
модифицируемого этим блоком map; похожая проблема могла произойти
при использовании некешируемой переменной в строковом выражении
(CVE-2026-42533).<br/>
Спасибо Mufeed VH из Winfunc Research и Максиму Дунину.
</para>
<para lang="en">
heap buffer overflow might occur in a worker process when using the
map directive with regex matching if the map variable was included
in a string expression after a capture affected by this map;
a similar issue might happen when using a non-cacheable variable in
a string expression (CVE-2026-42533).<br/>
Thanks to Mufeed VH of Winfunc Research and Maxim Dounin.
</para>
</change>

<change type="security">
<para lang="ru">
при использовании неименованных выделений с директивой slice или
фоновым обновлением кэша мог произойти доступ к неинициализированной
памяти, что могло привести к отправке клиенту содержимого памяти
рабочего процесса или вызвать segmentation fault в рабочем процессе
(CVE-2026-60005).
</para>
<para lang="en">
uninitialized memory access might occur when using unnamed regex
captures with the "slice" directive or background cache update, which
could result in worker process memory disclosure or worker process
termination (CVE-2026-60005).
</para>
</change>

<change type="security">
<para lang="ru">
при использовании ngx_http_ssi_filter_module специально созданный
ответ от проксируемого бэкенда мог привести к обращению к ранее
освобождённой памяти (CVE-2026-56434).<br/>
Спасибо P4P3R-HAK.
</para>
<para lang="en">
use-after-free might occur when processing a specially crafted proxied
backend response with the ngx_http_ssi_filter_module (CVE-2026-56434).<br/>
Thanks to P4P3R-HAK.
</para>
</change>

<change type="change">
<para lang="ru">
размер заголовков и трейлеров HTTP/2-ответа
в модуле ngx_http_proxy_v2_module и ngx_http_grpc_module
теперь ограничены директивой proxy_buffer_size и grpc_buffer_size.
</para>
<para lang="en">
the size of headers and trailers in HTTP/2 responses
in the ngx_http_proxy_v2_module and ngx_http_grpc_module
is now limited with "proxy_buffer_size" and "grpc_buffer_size" directives.
</para>
</change>

<change type="change">
<para lang="ru">
загрузка внешних сущностей теперь отключена
в модуле ngx_http_xslt_filter_module.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
loading of external entities is now disabled
in the ngx_http_xslt_filter_module.<br/>
Thanks to Maxim Dounin.
</para>
</change>

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

<change type="feature">
<para lang="ru">
директивы proxy_socket_sndbuf, proxy_socket_rcvbuf,
fastcgi_socket_sndbuf, fastcgi_socket_rcvbuf,
grpc_socket_sndbuf, grpc_socket_rcvbuf,
scgi_socket_sndbuf, scgi_socket_rcvbuf,
uwsgi_socket_sndbuf, uwsgi_socket_rcvbuf,
tunnel_socket_sndbuf и tunnel_socket_rcvbuf.
</para>
<para lang="en">
the "proxy_socket_sndbuf", "proxy_socket_rcvbuf",
"fastcgi_socket_sndbuf", "fastcgi_socket_rcvbuf",
"grpc_socket_sndbuf", "grpc_socket_rcvbuf",
"scgi_socket_sndbuf", "scgi_socket_rcvbuf",
"uwsgi_socket_sndbuf", "uwsgi_socket_rcvbuf",
"tunnel_socket_sndbuf", and "tunnel_socket_rcvbuf"
directives.
</para>
</change>

<change type="feature">
<para lang="ru">
определение размера строки кэша процессора для loongarch64.<br/>
Спасибо Miao Wang.
</para>
<para lang="en">
cache line size detection for loongarch64.<br/>
Thanks to Miao Wang.
</para>
</change>

<change type="bugfix">
<para lang="ru">
теперь nginx возвращает ошибку, если в запросе по протоколу
HTTP/2 псевдо-заголовки следуют за обычными заголовками.
</para>
<para lang="en">
now nginx rejects HTTP/2 requests with out-of-order pseudo-headers.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в управлении потоком в модуле ngx_http_v2_module.
</para>
<para lang="en">
in flow control in the ngx_http_v2_module.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при отправке закэшированного ответа HTTP/2
в модуле ngx_http_proxy_v2_module
в логах могли появляться сообщения
"[error] upstream sent frame for unknown stream"
и
"[crit] cache file ... contains invalid header",
если использовалась директива proxy_cache_revalidate.
</para>
<para lang="en">
"[error] upstream sent frame for unknown stream"
and
"[crit] cache file ... contains invalid header"
messages might appear in logs
when sending a cached HTTP/2 response
in the ngx_http_proxy_v2_module
if the "proxy_cache_revalidate" directive was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx мог передавать заголовок "Upgrade" клиенту в ответе HTTP/2 или HTTP/3.
</para>
<para lang="en">
nginx might send the "Upgrade" header line in HTTP/2 and HTTP/3 responses.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
запрет фрагментации IPv6 мог не работать
при использовании QUIC на некоторых системах.
</para>
<para lang="en">
IPv6 fragmentation might not be disabled
when using QUIC on some operating systems.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_auth_basic_module на Solaris.
</para>
<para lang="en">
in the ngx_http_auth_basic_module on Solaris.
</para>
</change>

<change>
<para lang="ru">
Исправления и улучшения в модуле ngx_http_tunnel_module.
</para>
<para lang="en">
Bugfixes and improvements in the ngx_http_tunnel_module.
</para>
</change>

</changes>


<changes ver="1.31.2" date="2026-06-17">

<change type="security">
<para lang="ru">
при использовании HTTP/3 обработка специально созданной QUIC-сессии
могла приводить к обращению к ранее освобождённой памяти,
что позволяло атакующему повредить память рабочего процесса
или вызвать segmentation fault в рабочем процессе (CVE-2026-42530).<br/>
Спасибо Trung Nguyen из CyStack.
</para>
<para lang="en">
use-after-free might occur
when using HTTP/3 and processing a specially crafted QUIC session,
allowing an attacker to cause worker process memory corruption
or segmentation fault in a worker process (CVE-2026-42530).<br/>
Thanks to Trung Nguyen of CyStack.
</para>
</change>

<change type="security">
<para lang="ru">
при проксировании специально созданного запроса на HTTP/2 или gRPC-бэкенд
с использованием директив "ignore_invalid_headers off;" и
"large_client_header_buffers" с большим значением
могло происходить переполнение буфера в рабочем процессе,
что позволяло атакующему повредить память рабочего процесса
или вызвать segmentation fault в рабочем процессе (CVE-2026-42055).<br/>
Спасибо Mufeed VH из Winfunc Research.
</para>
<para lang="en">
a heap memory buffer overflow might occur in a worker process
when using a configuration with "ignore_invalid_headers off;"
and "large_client_header_buffers" with large configured values
when proxying a specially crafted request to HTTP/2 or gRPC backend,
allowing an attacker to cause worker process memory corruption
or segmentation fault in a worker process (CVE-2026-42055).<br/>
Thanks to Mufeed VH of Winfunc Research.
</para>
</change>

<change type="security">
<para lang="ru">
при обработке специально переданного ответа с декодированием из UTF-8
через директиву charset_map могло происходить чтение данных
за границами буфера рабочего процесса, что позволяло атакующему
отправить клиенту ограниченное содержимое памяти рабочего процесса
или вызвать segmentation fault в рабочем процессе (CVE-2026-48142).<br/>
Спасибо Han Yan из Xiaomi и p4p3r из CYBERONE.
</para>
<para lang="en">
a heap memory buffer overread might occur in a worker process
while handling a specially sent response with decoding from UTF-8
via the "charset_map" directive, allowing an attacker to cause
a limited disclosure of worker proccess memory
or segmentation fault in a worker process (CVE-2026-48142).<br/>
Thanks to Han Yan of Xiaomi and p4p3r of CYBERONE.
</para>
</change>

<change type="change">
<para lang="ru">
теперь переменная $request_id использует SipHash-2-4.
</para>
<para lang="en">
now the $request_id variable uses SipHash-2-4.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
переменная заданная директивой split_clients могла быть пустой,
если все проценты были заданы явно и их сумма была равна 100%.
</para>
<para lang="en">
a variable defined by the "split_clients" directive might be empty
if all percentages were specified explicitly and summed up to 100%.
</para>
</change>

<change type="bugfix">
<para lang="ru">
сравнение хешей secure_link за константное время.<br/>
Спасибо kodareef5.
</para>
<para lang="en">
constant time "secure_link" hash comparison.<br/>
Thanks to kodareef5.
</para>
</change>

</changes>


<changes ver="1.31.1" date="2026-05-22">

<change type="security">
<para lang="ru">
при использовании конфигурации модуля ngx_http_rewrite_module
с перекрывающимися выделениями
могло происходить переполнение буфера в рабочем процессе,
что потенциально могло приводить к выполнению произвольного кода
(CVE-2026-9256).<br/>
Спасибо Mufeed VH из Winfunc Research.
</para>
<para lang="en">
a heap memory buffer overflow might occur in a worker process
when using a configuration with overlapping captures
in ngx_http_rewrite_module,
potentially resulting in arbitrary code execution
(CVE-2026-9256).<br/>
Thanks to Mufeed VH of Winfunc Research.
</para>
</change>

</changes>


<changes ver="1.31.0" date="2026-05-13">

<change type="security">
<para lang="ru">
при использовании директивы proxy_set_body атакующий мог вставить данные
в проксируемый запрос на HTTP/2-бэкенд (CVE-2026-42926).<br/>
Спасибо Mufeed VH из Winfunc Research.
</para>
<para lang="en">
when using the "proxy_set_body" directive, an attacker might inject data
in the proxied request to an HTTP/2 backend (CVE-2026-42926).<br/>
Thanks to Mufeed VH of Winfunc Research.
</para>
</change>

<change type="security">
<para lang="ru">
при обработке специально созданного запроса модулем ngx_http_rewrite_module
могло происходить переполнение буфера в рабочем процессе,
что потенциально могло приводить к выполнению произвольного кода
(CVE-2026-42945).<br/>
Спасибо Leo Lin.
</para>
<para lang="en">
a heap memory buffer overflow might occur in a worker process
while handling a specially crafted request by ngx_http_rewrite_module,
potentially resulting in arbitrary code execution
(CVE-2026-42945).<br/>
Thanks to Leo Lin.
</para>
</change>

<change type="security">
<para lang="ru">
при обработке специально созданного ответа модулем ngx_http_scgi_module
или ngx_http_uwsgi_module могло происходить чтение данных за границами
буфера рабочего процесса, что позволяло атакующему
отправить клиенту содержимое памяти рабочего процесса
или вызвать segmentation fault в рабочем процессе (CVE-2026-42946).<br/>
Спасибо Leo Lin.
</para>
<para lang="en">
a heap memory buffer overread might occur in a worker process
while handling a specially crafted response by ngx_http_scgi_module
or ngx_http_uwsgi_module, allowing an attacker to cause
a disclosure of worker process memory
or segmentation fault in a worker process (CVE-2026-42946).<br/>
Thanks to Leo Lin.
</para>
</change>

<change type="security">
<para lang="ru">
при обработке специально переданного ответа с декодированием из UTF-8
через директиву charset_map могло происходить чтение данных
за границами буфера рабочего процесса, что позволяло атакующему
отправить клиенту ограниченное содержимое памяти рабочего процесса
или вызвать segmentation fault в рабочем процессе (CVE-2026-42934).<br/>
Спасибо David Carlier.
</para>
<para lang="en">
a heap memory buffer overread might occur in a worker process
while handling a specially sent response with decoding from UTF-8
via the "charset_map" directive, allowing an attacker to cause
a limited disclosure of worker proccess memory
or segmentation fault in a worker process (CVE-2026-42934).<br/>
Thanks to David Carlier.
</para>
</change>

<change type="security">
<para lang="ru">
при использовании HTTP/3 обработка миграции соединения могла приводить
к созданию QUIC-стримов с новым адресом клиента до завершения валидации,
что позволяло атакующему выполнить подмену адреса (CVE-2026-40460).<br/>
Спасибо Rodrigo Laneth.
</para>
<para lang="en">
when using HTTP/3, processing of connection migration might cause
new QUIC streams to receive a new client address before validation,
allowing an attacker to cause address spoofing (CVE-2026-40460).<br/>
Thanks to Rodrigo Laneth.
</para>
</change>

<change type="security">
<para lang="ru">
при использовании директивы ssl_ocsp
во время обработки ответов DNS-сервера
могло произойти обращение к ранее освобождённой памяти,
что позволяло атакующему повредить память рабочего процесса
или вызвать segmentation fault в рабочем процессе (CVE-2026-40701).<br/>
Спасибо Leo Lin.
</para>
<para lang="en">
use-after-free might occur
during DNS server response processing
if the "ssl_ocsp" directive was used,
allowing an attacker to cause worker process memory corruption
or segmentation fault in a worker process (CVE-2026-40701).<br/>
Thanks to Leo Lin.
</para>
</change>

<change type="change">
<para lang="ru">
теперь nginx возвращает ошибку, если в запросе по протоколу
HTTP/2 или HTTP/3 присутствуют строки заголовка "Connection",
"Proxy-Connection", "Keep-Alive", "Transfer-Encoding", "Upgrade",
а также "TE" со значением, отличным от "trailers".
</para>
<para lang="en">
now nginx rejects HTTP/2 and HTTP/3 requests with the "Connection",
"Proxy-Connection", "Keep-Alive", "Transfer-Encoding", "Upgrade"
header lines, and "TE" with any value other than "trailers".
</para>
</change>

<change type="change">
<para lang="ru">
модуль ngx_http_dav_module теперь возвращает ошибку,
если при обработке COPY- или MOVE-запроса
исходные и целевые ресурсы совпадают
или одна коллекция включает в себя другую.
</para>
<para lang="en">
the ngx_http_dav_module now rejects a COPY or MOVE requests
when the source and destination resources are the same
or have a parent-child collection relationship.
</para>
</change>

<change type="change">
<para lang="ru">
уровень логгирования ошибок SSL
"invalid alert", "record layer failure",
а также ошибок "SSL alert number N" для любых значений N
понижен с уровня crit до info.
</para>
<para lang="en">
the logging level of the
"invalid alert" and "record layer failure" SSL errors,
and of the "SSL alert number N" for any alert numbers
has been lowered from "crit" to "info".
</para>
</change>

<change type="change">
<para lang="ru">
теперь сборка модуля sticky может быть выключена
с помощью параметра configure --without-http_upstream_sticky_module;
параметр configure --without-http_upstream_sticky объявлен устаревшим.
</para>
<para lang="en">
now the "sticky" module can be disabled with the
--without-http_upstream_sticky_module configure option;
the --without-http_upstream_sticky configure option is deprecated.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_http_tunnel_module;
поддержка аутентификации через прокси-серверы
в директивах auth_basic, satisfy и auth_delay.
</para>
<para lang="en">
the ngx_http_tunnel_module;
support for authenticating to proxies
in the "auth_basic", "satisfy", and "auth_delay" directives.
</para>
</change>

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

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

<change type="bugfix">
<para lang="ru">
соединения к HTTP/2-бэкендам могли не кэшироваться
при использовании директив proxy_set_body или proxy_pass_request_body.
</para>
<para lang="en">
connections with HTTP/2 backends might not be cached
when using the "proxy_set_body" or "proxy_pass_request_body" directives.
</para>
</change>

<change type="bugfix">
<para lang="ru">
проксированные ответы HTTP/0.9, SCGI или uWSGI
могли передаваться неверно,
если первая строка была прочитана не целиком.
</para>
<para lang="en">
proxied HTTP/0.9, SCGI, or uWSGI responses
might be transferred incorrectly
if the first line was not fully read.
</para>
</change>

</changes>


<changes ver="1.29.8" date="2026-04-07">

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

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

<change type="feature">
<para lang="ru">
теперь директива include внутри блока geo поддерживает маски.
</para>
<para lang="en">
now the "include" directive inside the "geo" block supports wildcards.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке ответов с кодом HTTP 103 (Early Hints)
от проксируемого бэкенда.
</para>
<para lang="en">
in processing of HTTP 103 (Early Hints) responses
from a proxied backend.
</para>
</change>

<change type="bugfix">
<para lang="ru">
переменные $request_port и $is_request_port
были недоступны в подзапросах.
</para>
<para lang="en">
the $request_port and $is_request_port variables
were not available in subrequests.
</para>
</change>

</changes>


<changes ver="1.29.7" date="2026-03-24">

<change type="security">
<para lang="ru">
при обработке COPY- или MOVE-запроса в location'е с включённым
alias могло произойти переполнение буфера, что позволяло
атакующему модифицировать исходный или целевой путь за пределы
document root (CVE-2026-27654).<br/>
Спасибо Calif.io при содействии Claude и Anthropic Research.
</para>
<para lang="en">
a buffer overflow might occur while handling a COPY or MOVE
request in a location with "alias", allowing an attacker
to modify the source or destination path outside of the
document root (CVE-2026-27654).<br/>
Thanks to Calif.io in collaboration with Claude and Anthropic Research.
</para>
</change>

<change type="security">
<para lang="ru">
обработка специально созданного mp4-файла модулем ngx_http_mp4_module
на 32-битных платформах могла приводить к падению рабочего процесса,
а также потенциально могла иметь другие последствия (CVE-2026-27784).<br/>
Спасибо Prabhav Srinath (sprabhav7).
</para>
<para lang="en">
processing of a specially crafted mp4 file by the ngx_http_mp4_module
on 32-bit platforms might cause a worker process crash,
or might have potential other impact (CVE-2026-27784).<br/>
Thanks to Prabhav Srinath (sprabhav7).
</para>
</change>

<change type="security">
<para lang="ru">
обработка специально созданного mp4-файла модулем ngx_http_mp4_module
могла приводить к падению рабочего процесса, а также потенциально
могла иметь другие последствия (CVE-2026-32647).<br/>
Спасибо Xint Code и Pavel Kohout (Aisle Research).
</para>
<para lang="en">
processing of a specially crafted mp4 file by the ngx_http_mp4_module
might cause a worker process crash, or might have potential
other impact (CVE-2026-32647).<br/>
Thanks to Xint Code and Pavel Kohout (Aisle Research).
</para>
</change>

<change type="security">
<para lang="ru">
если использовался метод аутентификации CRAM-MD5 или APOP, то
в рабочем процессе мог произойти segmentation fault,
если были разрешены повторные попытки аутентификации (CVE-2026-27651).<br/>
Спасибо Arkadi Vainbrand.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if the CRAM-MD5 or APOP authentication methods were used
and authentication retry was enabled (CVE-2026-27651).<br/>
Thanks to Arkadi Vainbrand.
</para>
</change>

<change type="security">
<para lang="ru">
атакующий мог использовать записи PTR DNS чтобы вставить данные
в auth_http-запросы, а также в команду XCLIENT в SMTP-соединении
к бекенду (CVE-2026-28753).<br/>
Спасибо Asim Viladi Oglu Manizada, Colin Warren,
Xiao Liu (Yunnan University), Yuan Tan (UC Riverside)
и Bird Liu (Lanzhou University).
</para>
<para lang="en">
an attacker might use PTR DNS records to inject data in
auth_http requests, as well as in the XCLIENT command in
the backend SMTP connection (CVE-2026-28753).<br/>
Thanks to Asim Viladi Oglu Manizada, Colin Warren,
Xiao Liu (Yunnan University), Yuan Tan (UC Riverside),
and Bird Liu (Lanzhou University).
</para>
</change>

<change type="security">
<para lang="ru">
SSL handshake мог завершиться успешно при том, что OCSP
отклонил клиентский сертификат в модуле stream (CVE-2026-28755).<br/>
Спасибо Mufeed VH из Winfunc Research.
</para>
<para lang="en">
SSL handshake might succeed despite OCSP rejecting a client
certificate in the stream module (CVE-2026-28755).<br/>
Thanks to Mufeed VH of Winfunc Research.
</para>
</change>

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

<change type="feature">
<para lang="ru">
параметр local директивы keepalive в блоке upstream.
</para>
<para lang="en">
the "local" parameter of the "keepalive" directive
in the "upstream" block.
</para>
</change>

<change type="change">
<para lang="ru">
теперь директива keepalive в блоке upstream включена по умолчанию.
</para>
<para lang="en">
now the "keepalive" directive in the "upstream" block is
enabled by default.
</para>
</change>

<change type="change">
<para lang="ru">
теперь модуль ngx_http_proxy_module поддерживает keepalive по умолчанию;
значение proxy_http_version по умолчанию равно "1.1";
proxy заголовок "Connection" по умолчанию больше не посылается.
</para>
<para lang="en">
now ngx_http_proxy_module supports keepalive by default;
the default value for "proxy_http_version" is "1.1";
the "Connection" proxy header is not sent by default anymore.
</para>
</change>

<change type="bugfix">
<para lang="ru">
некорректный HTTP/2-запрос мог быть отправлен после переключения
на следующий бэкенд при использовании буферизованного тела в модуле
ngx_http_grpc_module.
</para>
<para lang="en">
an invalid HTTP/2 request might be sent after switching to the next
upstream if buffered body was used in the ngx_http_grpc_module.
</para>
</change>

</changes>


<changes ver="1.29.6" date="2026-03-10">

<change type="feature">
<para lang="ru">
режим привязки сессий;
директива sticky в блоке upstream модуля http;
директива server поддерживает параметры route и drain.
</para>
<para lang="en">
session affinity support;
the "sticky" directive in the "upstream" block of the "http" module;
the "server" directive supports the "route" and "drain" parameters.
</para>
</change>

<change type="change">
<para lang="ru">
теперь nginx ограничивает размер и частоту отправки пакетов
QUIC stateless reset.
</para>
<para lang="en">
now nginx limits the size and rate of QUIC stateless reset packets.
</para>
</change>

<change type="bugfix">
<para lang="ru">
получение QUIC-пакета в другом рабочем процессе
могло приводить к разрыву соединения.
</para>
<para lang="en">
receiving a QUIC packet by a wrong worker process
could cause the connection to terminate.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при отправке закэшированного ответа HTTP/2
в логах могли появляться сообщения
"[crit] cache file ... contains invalid header".
</para>
<para lang="en">
"[crit] cache file ... contains invalid header"
messages might appear in logs
when sending a cached HTTP/2 response.
</para>
</change>

<change type="bugfix">
<para lang="ru">
проксирование на scgi-бэкенды могло не работать при использовании
chunked transfer encoding и директивы scgi_request_buffering.<br/>
Спасибо Mufeed VH.
</para>
<para lang="en">
proxying to scgi backends might not work when using
chunked transfer encoding and the "scgi_request_buffering" directive.<br/>
Thanks to Mufeed VH.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
nginx считал запятую разделителем в строке "Cookie"
заголовка запроса при вычислении переменных "$cookie_...".
</para>
<para lang="en">
nginx treated a comma as separator in the "Cookie"
request header line when evaluating "$cookie_..." variables.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в парсинге литеральных аргументов IMAP команд.
</para>
<para lang="en">
in IMAP command literal argument parsing.
</para>
</change>

</changes>


<changes ver="1.29.5" date="2026-02-04">

<change type="security">
<para lang="ru">
атакующий мог вставить незашифрованные данные в ответ от
SSL-бэкенда (CVE-2026-1642).
</para>
<para lang="en">
an attacker might inject plain text data in the response from an SSL
backend (CVE-2026-1642).
</para>
</change>

<change type="bugfix">
<para lang="ru">
обращение к ранее освобождённой памяти могло произойти после
переключения на следующий gRPC- или HTTP/2-бэкенд.
</para>
<para lang="en">
use-after-free might occur after switching to the next
gRPC or HTTP/2 backend.
</para>
</change>

<change type="bugfix">
<para lang="ru">
некорректный HTTP/2-запрос мог быть отправлен после переключения
на следующий бэкенд.
</para>
<para lang="en">
an invalid HTTP/2 request might be sent after switching to the next
upstream.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ответ с несколькими диапазонами мог быть больше, чем исходный ответ.
</para>
<para lang="en">
a response with multiple ranges might be larger than the source
response.
</para>
</change>

<change type="bugfix">
<para lang="ru">
исправлена установка переменной HTTP_HOST при проксировании на
FastCGI-, SCGI- и uwsgi-бэкенды.
</para>
<para lang="en">
fixed setting HTTP_HOST when proxying to FastCGI, SCGI,
and uwsgi backends.
</para>
</change>

<change type="bugfix">
<para lang="ru">
устранено предупреждение при компиляции при помощи MSVC 2022 x86.
</para>
<para lang="en">
fixed warning when compiling with MSVC 2022 x86.
</para>
</change>

<change type="change">
<para lang="ru">
уровень логгирования ошибки SSL "ech_required"
понижен с уровня crit до info.
</para>
<para lang="en">
the logging level of the "ech_required" SSL error
has been lowered from "crit" to "info".
</para>
</change>

</changes>


<changes ver="1.29.4" date="2025-12-09">

<change type="feature">
<para lang="ru">
модуль ngx_http_proxy_module поддерживает HTTP/2.
</para>
<para lang="en">
the ngx_http_proxy_module supports HTTP/2.
</para>
</change>

<change type="feature">
<para lang="ru">
поддержка расширения TLS Encrypted ClientHello
при использовании ветки разработки ECH OpenSSL;
директива ssl_ech_file.<br/>
Спасибо Stephen Farrell.
</para>
<para lang="en">
Encrypted ClientHello TLS extension support
when using OpenSSL ECH feature branch;
the "ssl_ech_file" directive.<br/>
Thanks to Stephen Farrell.
</para>
</change>

<change type="change">
<para lang="ru">
валидация хоста и порта в строке запроса,
в заголовке "Host" и псевдо-заголовке ":authority"
изменена на соответствующую RFC 3986.
</para>
<para lang="en">
validation of host and port in the request line,
"Host" header field, and ":authority" pseudo-header field
has been changed to follow RFC 3986.
</para>
</change>

<change type="change">
<para lang="ru">
теперь одиночный символ LF, используемый для перевода строки
в chunked-теле запроса или ответа, считается ошибкой.
</para>
<para lang="en">
now a single LF used as a line terminator
in a chunked request or response body is considered an error.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании HTTP/3 с OpenSSL 3.5.1 и новее
в рабочем процессе мог произойти segmentation fault;
ошибка появилась в 1.29.1.<br/>
Спасибо Jan Svojanovsky.
</para>
<para lang="en">
when using HTTP/3 with OpenSSL 3.5.1 or newer
a segmentation fault might occur in a worker process;
the bug had appeared in 1.29.1.<br/>
Thanks to Jan Svojanovsky.
</para>
</change>

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

</changes>


<changes ver="1.29.3" date="2025-10-28">

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

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

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

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

<change type="feature">
<para lang="ru">
теперь сжатие сертификатов доступно с BoringSSL.
</para>
<para lang="en">
now certificate compression is available with BoringSSL.
</para>
</change>

<change type="bugfix">
<para lang="ru">
теперь сжатие сертификатов запрещено при включенном OCSP stapling.
</para>
<para lang="en">
now certificate compression is disabled with OCSP stapling.
</para>
</change>

</changes>


<changes ver="1.29.2" date="2025-10-07">

<change type="feature">
<para lang="ru">
теперь nginx можно собрать с AWS-LC.<br/>
Спасибо Samuel Chiang.
</para>
<para lang="en">
now nginx can be built with AWS-LC.<br/>
Thanks Samuel Chiang.
</para>
</change>

<change type="bugfix">
<para lang="ru">
теперь директива ssl_protocols работает
в виртуальном сервере, отличном от сервера по умолчанию,
при использовании OpenSSL 1.1.1 и новее.
</para>
<para lang="en">
now the "ssl_protocols" directive works
in a virtual server different from the default server
when using OpenSSL 1.1.1 or newer.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании TLSv1.3 с OpenSSL и клиентских сертификатов
SSL handshake всегда завершался ошибкой
при восстановлении сессии с другим значением SNI;
ошибка появилась в 1.27.4.
</para>
<para lang="en">
SSL handshake always failed
when using TLSv1.3 with OpenSSL and client certificates
and resuming a session with a different SNI value;
the bug had appeared in 1.27.4.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании QUIC и директивы ssl_reject_handshake
в логах могли появляться сообщения
"ignoring stale global SSL error";
ошибка появилась в 1.29.0.<br/>
Спасибо Владимиру Хомутову.
</para>
<para lang="en">
the "ignoring stale global SSL error"
alerts might appear in logs
when using QUIC and the "ssl_reject_handshake" directive;
the bug had appeared in 1.29.0.<br/>
Thanks to Vladimir Homutov.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке delta-seconds
в строке "Cache-Control" в заголовке ответа бэкенда.
</para>
<para lang="en">
in delta-seconds processing
in the "Cache-Control" backend response header line.
</para>
</change>

<change type="bugfix">
<para lang="ru">
команда XCLIENT не использовала кодировку xtext.<br/>
Спасибо Igor Morgenstern из Aisle Research.
</para>
<para lang="en">
an XCLIENT command didn't use the xtext encoding.<br/>
Thanks to Igor Morgenstern of Aisle Research.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в кэшировании SSL-сертификатов во время переконфигурации.
</para>
<para lang="en">
in SSL certificate caching during reconfiguration.
</para>
</change>

</changes>


<changes ver="1.29.1" date="2025-08-13">

<change type="security">
<para lang="ru">
обработка специально созданного логина/пароля при использовании
метода аутентификации "none" в модуле ngx_mail_smtp_module
могла приводить к отправке серверу аутентификации
части содержимого памяти рабочего процесса (CVE-2025-53859).
</para>
<para lang="en">
processing of a specially crafted login/password when using
the "none" authentication method in the ngx_mail_smtp_module
might cause worker process memory disclosure
to the authentication server (CVE-2025-53859).
</para>
</change>

<change type="change">
<para lang="ru">
теперь сжатие сертификатов в протоколе TLSv1.3 по умолчанию запрещено.
</para>
<para lang="en">
now TLSv1.3 certificate compression is disabled by default.
</para>
</change>

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

<change type="feature">
<para lang="ru">
поддержка 0-RTT в QUIC при использовании OpenSSL 3.5.1 и новее.
</para>
<para lang="en">
support for 0-RTT in QUIC when using OpenSSL 3.5.1 or newer.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании HTTP/2 и директивы early_hints
ответ 103 мог буферизироваться.
</para>
<para lang="en">
the 103 response might be buffered
when using HTTP/2 and the "early_hints" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке заголовков запроса "Host" и ":authority"
с одинаковыми значениями при использовании HTTP/2;
ошибка появилась в 1.17.9.
</para>
<para lang="en">
in handling "Host" and ":authority" header lines
with equal values when using HTTP/2;
the bug had appeared in 1.17.9.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке заголовка запроса "Host" с портом
при использовании HTTP/3.
</para>
<para lang="en">
in handling "Host" header lines with a port
when using HTTP/3.
</para>
</change>

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

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

</changes>


<changes ver="1.29.0" date="2025-06-24">

<change type="feature">
<para lang="ru">
поддержка ответа с кодом 103 от proxy- и gRPC-бэкендов;
директива early_hints.
</para>
<para lang="en">
support for response code 103 from proxy and gRPC backends;
the "early_hints" directive.
</para>
</change>

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

<change type="feature">
<para lang="ru">
поддержка параметра so_keepalive директивы listen на macOS.
</para>
<para lang="en">
support for the "so_keepalive" parameter of the "listen" directive on macOS.
</para>
</change>

<change type="change">
<para lang="ru">
уровень логгирования ошибок SSL в QUIC handshake
изменён с уровня error на crit для критических ошибок
и на info для всех остальных;
уровень логгирования неподдерживаемых транспортных параметров QUIC
понижен с уровня info до debug.
</para>
<para lang="en">
the logging level of SSL errors in a QUIC handshake
has been changed from "error" to "crit" for critical errors,
and to "info" for the rest;
the logging level of unsupported QUIC transport parameters
has been lowered from "info" to "debug".
</para>
</change>

<change type="change">
<para lang="ru">
бинарная версия nginx/Windows теперь использует для сборки Windows SDK 10.
</para>
<para lang="en">
the native nginx/Windows binary release is now built using Windows SDK 10.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался gcc 15,
если использовались модули ngx_http_v2_module и ngx_http_v3_module.
</para>
<para lang="en">
nginx could not be built by gcc 15
if ngx_http_v2_module or ngx_http_v3_module modules were used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx мог не собираться gcc 14 и новее с оптимизацией -O3 -flto,
если использовался модуль ngx_http_v3_module.
</para>
<para lang="en">
nginx might not be built by gcc 14 or newer with -O3 -flto optimization
if ngx_http_v3_module was used.
</para>
</change>

<change>
<para lang="ru">
Исправления и улучшения в HTTP/3.
</para>
<para lang="en">
Bugfixes and improvements in HTTP/3.
</para>
</change>

</changes>


<changes ver="1.27.5" date="2025-04-16">

<change type="feature">
<para lang="ru">
контроль перегрузки CUBIC в соединениях QUIC.
</para>
<para lang="en">
CUBIC congestion control in QUIC connections.
</para>
</change>

<change type="change">
<para lang="ru">
ограничение на максимальный размер кэшируемых в разделяемой памяти
SSL-сессий поднято до 8192.
</para>
<para lang="en">
the maximum size limit for SSL sessions cached in shared memory
has been raised to 8192.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директивах grpc_ssl_password_file, proxy_ssl_password_file и
uwsgi_ssl_password_file
при загрузке SSL-сертификатов и зашифрованных ключей из переменных;
ошибка появилась в 1.23.1.
</para>
<para lang="en">
in the "grpc_ssl_password_file", "proxy_ssl_password_file", and
"uwsgi_ssl_password_file" directives
when loading SSL certificates and encrypted keys from variables;
the bug had appeared in 1.23.1.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в переменных $ssl_curve и $ssl_curves
при использовании подключаемых кривых в OpenSSL.
</para>
<para lang="en">
in the $ssl_curve and $ssl_curves variables
when using pluggable curves in OpenSSL.
</para>
</change>

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

<change>
<para lang="ru">
Улучшения производительности и исправления в HTTP/3.
</para>
<para lang="en">
Performance improvements and bugfixes in HTTP/3.
</para>
</change>

</changes>


<changes ver="1.27.4" date="2025-02-05">

<change type="security">
<para lang="ru">
недостаточная проверка в обработке виртуальных серверов
при использовании SNI в TLSv1.3 позволяла повторно использовать
SSL-сессию в контексте другого виртуального сервера,
чтобы обойти проверку клиентских SSL-сертификатов (CVE-2025-23419).
</para>
<para lang="en">
insufficient check in virtual servers handling with TLSv1.3 SNI
allowed to reuse SSL sessions in a different virtual server,
to bypass client SSL certificates verification (CVE-2025-23419).
</para>
</change>

<change type="feature">
<para lang="ru">
директивы ssl_object_cache_inheritable, ssl_certificate_cache,
proxy_ssl_certificate_cache, grpc_ssl_certificate_cache
и uwsgi_ssl_certificate_cache.
</para>
<para lang="en">
the "ssl_object_cache_inheritable", "ssl_certificate_cache",
"proxy_ssl_certificate_cache", "grpc_ssl_certificate_cache",
and "uwsgi_ssl_certificate_cache" directives.
</para>
</change>

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

<change type="workaround">
<para lang="ru">
при использовании zlib-ng
в логах появлялись сообщения "gzip filter failed to use preallocated memory".
</para>
<para lang="en">
"gzip filter failed to use preallocated memory" alerts appeared in logs
when using zlib-ng.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не мог собрать библиотеку libatomic из исходных текстов,
если использовался параметр --with-libatomic=DIR.
</para>
<para lang="en">
nginx could not build libatomic library using the library sources
if the --with-libatomic=DIR option was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
могла происходить ошибка установления соединения
при использовании 0-RTT в QUIC;
ошибка появилась в 1.27.1.
</para>
<para lang="en">
QUIC connection might not be established when using 0-RTT;
the bug had appeared in 1.27.1.
</para>
</change>

<change type="bugfix">
<para lang="ru">
теперь nginx игнорирует пакеты согласования версий QUIC от клиентов.
</para>
<para lang="en">
nginx now ignores QUIC version negotiation packets from clients.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался на Solaris 10 и более ранних
с модулем ngx_http_v3_module.
</para>
<para lang="en">
nginx could not be built on Solaris 10 and earlier
with the ngx_http_v3_module.
</para>
</change>

<change>
<para lang="ru">
Исправления в HTTP/3.
</para>
<para lang="en">
Bugfixes in HTTP/3.
</para>
</change>

</changes>


<changes ver="1.27.3" date="2024-11-26">

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

<change type="feature">
<para lang="ru">
директивы resolver и resolver_timeout в блоке upstream.
</para>
<para lang="en">
the "resolver" and "resolver_timeout" directives in the "upstream" block.
</para>
</change>

<change type="feature">
<para lang="ru">
поддержка SmarterMail-специфичного режима
IMAP LOGIN с нетегированным ответом CAPABILITY
в почтовом прокси-сервере.
</para>
<para lang="en">
SmarterMail specific mode support
for IMAP LOGIN with untagged CAPABILITY response
in the mail proxy module.
</para>
</change>

<change type="change">
<para lang="ru">
теперь протоколы TLSv1 и TLSv1.1 по умолчанию запрещены.
</para>
<para lang="en">
now TLSv1 and TLSv1.1 protocols are disabled by default.
</para>
</change>

<change type="change">
<para lang="ru">
IPv6-адрес в квадратных скобках без порта теперь можно указывать
в директивах proxy_bind, fastcgi_bind, grpc_bind, memcached_bind,
scgi_bind и uwsgi_bind,
а также как адрес клиента в модуле ngx_http_realip_module.
</para>
<para lang="en">
an IPv6 address in square brackets and no port can be specified
in the "proxy_bind", "fastcgi_bind", "grpc_bind", "memcached_bind",
"scgi_bind", and "uwsgi_bind" directives,
and as client address in ngx_http_realip_module.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
параметр so_keepalive директивы listen
мог работать некорректно на DragonFly BSD.
</para>
<para lang="en">
the "so_keepalive" parameter of the "listen" directive
might be handled incorrectly on DragonFly BSD.
</para>
</change>

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

</changes>


<changes ver="1.27.2" date="2024-10-02">

<change type="feature">
<para lang="ru">
SSL-сертификаты, секретные ключи и списки CRL теперь кэшируются
на старте или во время переконфигурации.
</para>
<para lang="en">
SSL certificates, secret keys, and CRLs are now cached
on start or during reconfiguration.
</para>
</change>

<change type="feature">
<para lang="ru">
проверка клиентских сертификатов с помощью OCSP в модуле stream.
</para>
<para lang="en">
client certificate validation with OCSP in the stream module.
</para>
</change>

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

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

<change type="feature">
<para lang="ru">
директива ssl_client_certificate теперь поддерживает сертификаты
с дополнительными данными.
</para>
<para lang="en">
the "ssl_client_certificate" directive now supports certificates
with auxiliary information.
</para>
</change>

<change type="change">
<para lang="ru">
теперь наличие директивы ssl_client_certificate не обязательно
для проверки клиентских SSL-сертификатов.
</para>
<para lang="en">
now the "ssl_client_certificate" directive is not required
for client SSL certificates verification.
</para>
</change>

</changes>


<changes ver="1.27.1" date="2024-08-14">

<change type="security">
<para lang="ru">
обработка специально созданного mp4-файла модулем ngx_http_mp4_module
могла приводить к падению рабочего процесса (CVE-2024-7347).<br/>
Спасибо Nils Bars.
</para>
<para lang="en">
processing of a specially crafted mp4 file by the ngx_http_mp4_module
might cause a worker process crash (CVE-2024-7347).<br/>
Thanks to Nils Bars.
</para>
</change>

<change type="change">
<para lang="ru">
теперь обработчик в модуле stream не является обязательным.
</para>
<para lang="en">
now the stream module handler is not mandatory.
</para>
</change>

<change type="bugfix">
<para lang="ru">
новые HTTP/2-соединения могли игнорировать
плавное завершение старых рабочих процессов.<br/>
Спасибо Kasei Wang.
</para>
<para lang="en">
new HTTP/2 connections might ignore
graceful shutdown of old worker processes.<br/>
Thanks to Kasei Wang.
</para>
</change>

<change>
<para lang="ru">
Исправления в HTTP/3.
</para>
<para lang="en">
Bugfixes in HTTP/3.
</para>
</change>

</changes>


<changes ver="1.27.0" date="2024-05-29">

<change type="security">
<para lang="ru">
при использовании HTTP/3 обработка специально созданной QUIC-сессии могла
приводить к падению рабочего процесса, отправке клиенту содержимого памяти
рабочего процесса на системах с MTU больше 4096 байт, а также потенциально
могла иметь другие последствия
(CVE-2024-32760, CVE-2024-31079, CVE-2024-35200, CVE-2024-34161).<br/>
Спасибо Nils Bars из CISPA.
</para>
<para lang="en">
when using HTTP/3, processing of a specially crafted QUIC session might
cause a worker process crash, worker process memory disclosure on systems
with MTU larger than 4096 bytes, or might have potential other impact
(CVE-2024-32760, CVE-2024-31079, CVE-2024-35200, CVE-2024-34161).<br/>
Thanks to Nils Bars of CISPA.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
уменьшено потребление памяти для долгоживущих запросов,
если используются директивы gzip, gunzip, ssi, sub_filter или grpc_pass.
</para>
<para lang="en">
reduced memory consumption for long-lived requests
if "gzip", "gunzip", "ssi", "sub_filter", or "grpc_pass" directives are used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался gcc 14,
если использовался параметр --with-libatomic.<br/>
Спасибо Edgar Bonet.
</para>
<para lang="en">
nginx could not be built by gcc 14
if the --with-libatomic option was used.<br/>
Thanks to Edgar Bonet.
</para>
</change>

<change>
<para lang="ru">
Исправления в HTTP/3.
</para>
<para lang="en">
Bugfixes in HTTP/3.
</para>
</change>

</changes>


<changes ver="1.25.5" date="2024-04-16">

<change type="feature">
<para lang="ru">
виртуальные сервера в модуле stream.
</para>
<para lang="en">
virtual servers in the stream module.
</para>
</change>

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

<change type="feature">
<para lang="ru">
параметры deferred, accept_filter и setfib директивы listen в модуле stream.
</para>
<para lang="en">
the "deferred", "accept_filter", and "setfib" parameters of the "listen"
directive in the stream module.
</para>
</change>

<change type="feature">
<para lang="ru">
определение размера строки кэша процессора для некоторых архитектур.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
cache line size detection for some architectures.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="feature">
<para lang="ru">
поддержка Homebrew на Apple Silicon.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
support for Homebrew on Apple Silicon.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="bugfix">
<para lang="ru">
улучшения и исправления кросс-компиляции для Windows.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
Windows cross-compilation bugfixes and improvements.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="bugfix">
<para lang="ru">
неожиданное закрытие соединения при использовании 0-RTT в QUIC.<br/>
Спасибо Владимиру Хомутову.
</para>
<para lang="en">
unexpected connection closure while using 0-RTT in QUIC.<br/>
Thanks to Vladimir Khomutov.
</para>
</change>

</changes>


<changes ver="1.25.4" date="2024-02-14">

<change type="security">
<para lang="ru">
при использовании HTTP/3 в рабочем процессе мог произойти segmentation fault
во время обработки специально созданной QUIC-сессии
(CVE-2024-24989, CVE-2024-24990).
</para>
<para lang="en">
when using HTTP/3 a segmentation fault might occur in a worker process
while processing a specially crafted QUIC session
(CVE-2024-24989, CVE-2024-24990).
</para>
</change>

<change type="bugfix">
<para lang="ru">
соединения с незавершенными AIO-операциями могли закрываться преждевременно
во время плавного завершения старых рабочих процессов.
</para>
<para lang="en">
connections with pending AIO operations might be closed prematurely
during graceful shutdown of old worker processes.
</para>
</change>

<change type="bugfix">
<para lang="ru">
теперь nginx не пишет в лог сообщения об утечке сокетов,
если во время плавного завершения старых рабочих процессов
было запрошено быстрое завершение.
</para>
<para lang="en">
socket leak alerts no longer logged when fast shutdown
was requested after graceful shutdown of old worker processes.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании AIO в подзапросе могла происходить
ошибка на сокете, утечка сокетов,
либо segmentation fault в рабочем процессе (при SSL-проксировании).
</para>
<para lang="en">
a socket descriptor error, a socket leak,
or a segmentation fault in a worker process (for SSL proxying)
might occur if AIO was used in a subrequest.
</para>
</change>

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

<change>
<para lang="ru">
Исправления и улучшения в HTTP/3.
</para>
<para lang="en">
Bugfixes and improvements in HTTP/3.
</para>
</change>

</changes>


<changes ver="1.25.3" date="2023-10-24">

<change type="change">
<para lang="ru">
улучшено детектирование некорректного поведения клиентов
при использовании HTTP/2.
</para>
<para lang="en">
improved detection of misbehaving clients
when using HTTP/2.
</para>
</change>

<change type="feature">
<para lang="ru">
уменьшение времени запуска
при использовании большого количества location'ов.<br/>
Спасибо Yusuke Nojima.
</para>
<para lang="en">
startup speedup
when using a large number of locations.<br/>
Thanks to Yusuke Nojima.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
строка "Status" в заголовке ответа бэкенда с пустой поясняющей фразой
обрабатывалась некорректно.
</para>
<para lang="en">
the "Status" backend response header line with an empty reason phrase
was handled incorrectly.
</para>
</change>

<change type="bugfix">
<para lang="ru">
утечки памяти во время переконфигурации
при использовании библиотеки PCRE2.<br/>
Спасибо ZhenZhong Wu.
</para>
<para lang="en">
memory leak during reconfiguration
when using the PCRE2 library.<br/>
Thanks to ZhenZhong Wu.
</para>
</change>

<change>
<para lang="ru">
Исправления и улучшения в HTTP/3.
</para>
<para lang="en">
Bugfixes and improvements in HTTP/3.
</para>
</change>

</changes>


<changes ver="1.25.2" date="2023-08-15">

<change type="feature">
<para lang="ru">
path MTU discovery при использовании HTTP/3.
</para>
<para lang="en">
path MTU discovery when using HTTP/3.
</para>
</change>

<change type="feature">
<para lang="ru">
поддержка шифра TLS_AES_128_CCM_SHA256 при использовании HTTP/3.
</para>
<para lang="en">
TLS_AES_128_CCM_SHA256 cipher suite support when using HTTP/3.
</para>
</change>

<change type="change">
<para lang="ru">
теперь при загрузке конфигурации OpenSSL
nginx использует appname "nginx".
</para>
<para lang="en">
now nginx uses appname "nginx"
when loading OpenSSL configuration.
</para>
</change>

<change type="change">
<para lang="ru">
теперь nginx не пытается загружать конфигурацию OpenSSL,
если для сборки OpenSSL использовался параметр --with-openssl
и переменная окружения OPENSSL_CONF не установлена.
</para>
<para lang="en">
now nginx does not try to load OpenSSL configuration
if the --with-openssl option was used to built OpenSSL
and the OPENSSL_CONF environment variable is not set.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в переменной $body_bytes_sent при использовании HTTP/3.
</para>
<para lang="en">
in the $body_bytes_sent variable when using HTTP/3.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в HTTP/3.
</para>
<para lang="en">
in HTTP/3.
</para>
</change>

</changes>


<changes ver="1.25.1" date="2023-06-13">

<change type="feature">
<para lang="ru">
директива http2, позволяющая включать HTTP/2 в отдельных блоках server;
параметр http2 директивы listen объявлен устаревшим.
</para>
<para lang="en">
the "http2" directive, which enables HTTP/2 on a per-server basis;
the "http2" parameter of the "listen" directive is now deprecated.
</para>
</change>

<change type="change">
<para lang="ru">
поддержка HTTP/2 server push упразднена.
</para>
<para lang="en">
HTTP/2 server push support has been removed.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
в HTTP/3 при использовании OpenSSL.
</para>
<para lang="en">
in HTTP/3 when using OpenSSL.
</para>
</change>

</changes>


<changes ver="1.25.0" date="2023-05-23">

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

</changes>


<changes ver="1.23.4" date="2023-03-28">

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

<change type="change">
<para lang="ru">
теперь nginx выдаёт предупреждение
при переопределении параметров listen-сокета, задающих используемые протоколы.
</para>
<para lang="en">
now nginx issues a warning
if protocol parameters of a listening socket are redefined.
</para>
</change>

<change type="change">
<para lang="ru">
теперь, если клиент использует pipelining,
nginx закрывает соединения с ожиданием дополнительных данных (lingering close).
</para>
<para lang="en">
now nginx closes connections with lingering
if pipelining was used by the client.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
диапазоны портов в директиве listen не работали;
ошибка появилась в 1.23.3.<br/>
Спасибо Валентину Бартеневу.
</para>
<para lang="en">
port ranges in the "listen" directive did not work;
the bug had appeared in 1.23.3.<br/>
Thanks to Valentin Bartenev.
</para>
</change>

<change type="bugfix">
<para lang="ru">
для обработки запроса мог быть выбран неверный location,
если в конфигурации использовался
префиксный location длиннее 255 символов.
</para>
<para lang="en">
incorrect location might be chosen to process a request
if a prefix location longer than 255 characters
was used in the configuration.
</para>
</change>

<change type="bugfix">
<para lang="ru">
не-ASCII символы в именах файлов на Windows
не поддерживались модулями ngx_http_autoindex_module и
ngx_http_dav_module, а также директивой include.
</para>
<para lang="en">
non-ASCII characters in file names on Windows were not supported
by the ngx_http_autoindex_module, the ngx_http_dav_module,
and the "include" directive.
</para>
</change>

<change type="change">
<para lang="ru">
уровень логгирования ошибок SSL
"data length too long", "length too short", "bad legacy version",
"no shared signature algorithms", "bad digest length",
"missing sigalgs extension", "encrypted length too long",
"bad length", "bad key update", "mixed handshake and non handshake data",
"ccs received early", "data between ccs and finished",
"packet length too long", "too many warn alerts", "record too small",
и "got a fin before a ccs"
понижен с уровня crit до info.
</para>
<para lang="en">
the logging level of the
"data length too long", "length too short", "bad legacy version",
"no shared signature algorithms", "bad digest length",
"missing sigalgs extension", "encrypted length too long",
"bad length", "bad key update", "mixed handshake and non handshake data",
"ccs received early", "data between ccs and finished",
"packet length too long", "too many warn alerts", "record too small",
and "got a fin before a ccs" SSL errors
has been lowered from "crit" to "info".
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании HTTP/2 и директивы error_page
для перенаправления ошибок с кодом 400
могла происходить утечка сокетов.
</para>
<para lang="en">
a socket leak might occur
when using HTTP/2 and the "error_page" directive
to redirect errors with code 400.
</para>
</change>

<change type="bugfix">
<para lang="ru">
сообщения об ошибках записи в syslog
не содержали информации о том, что
ошибки происходили в процессе записи в syslog.<br/>
Спасибо Safar Safarly.
</para>
<para lang="en">
messages about logging to syslog errors
did not contain information
that the errors happened while logging to syslog.<br/>
Thanks to Safar Safarly.
</para>
</change>

<change type="workaround">
<para lang="ru">
при использовании zlib-ng
в логах появлялись сообщения "gzip filter failed to use preallocated memory".
</para>
<para lang="en">
"gzip filter failed to use preallocated memory" alerts appeared in logs
when using zlib-ng.
</para>
</change>

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

</changes>


<changes ver="1.23.3" date="2022-12-13">

<change type="bugfix">
<para lang="ru">
при чтении заголовка протокола PROXY версии 2, содержащего
большое количество TLV, могла возникать ошибка.
</para>
<para lang="en">
an error might occur when reading PROXY protocol version 2 header
with large number of TLVs.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании SSI для обработки подзапросов, созданных другими модулями,
в рабочем процессе мог произойти segmentation fault.<br/>
Спасибо Ciel Zhao.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if SSI was used to process subrequests created by other modules.<br/>
Thanks to Ciel Zhao.
</para>
</change>

<change type="workaround">
<para lang="ru">
теперь, если при преобразовании в адреса имени хоста,
указанного в директиве listen, возвращается несколько адресов,
nginx игнорирует дубликаты среди этих адресов.
</para>
<para lang="en">
when a hostname used in the "listen" directive
resolves to multiple addresses,
nginx now ignores duplicates within these addresses.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx мог нагружать процессор
при небуферизированном проксировании,
если использовались SSL-соединения с бэкендами.
</para>
<para lang="en">
nginx might hog CPU
during unbuffered proxying
if SSL connections to backends were used.
</para>
</change>

</changes>


<changes ver="1.23.2" date="2022-10-19">

<change type="security">
<para lang="ru">
обработка специально созданного mp4-файла модулем ngx_http_mp4_module
могла приводить к падению рабочего процесса,
отправке клиенту части содержимого памяти рабочего процесса,
а также потенциально могла иметь другие последствия
(CVE-2022-41741, CVE-2022-41742).
</para>
<para lang="en">
processing of a specially crafted mp4 file by the ngx_http_mp4_module
might cause a worker process crash,
worker process memory disclosure,
or might have potential other impact
(CVE-2022-41741, CVE-2022-41742).
</para>
</change>

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

<change type="feature">
<para lang="ru">
ключи шифрования TLS session tickets теперь автоматически меняются
при использовании разделяемой памяти в ssl_session_cache.
</para>
<para lang="en">
TLS session tickets encryption keys are now automatically rotated
when using shared memory in the "ssl_session_cache" directive.
</para>
</change>

<change type="change">
<para lang="ru">
уровень логгирования ошибок SSL "bad record type"
понижен с уровня crit до info.<br/>
Спасибо Murilo Andrade.
</para>
<para lang="en">
the logging level of the "bad record type" SSL errors
has been lowered from "crit" to "info".<br/>
Thanks to Murilo Andrade.
</para>
</change>

<change type="change">
<para lang="ru">
теперь при использовании разделяемой памяти в ssl_session_cache
сообщения "could not allocate new session"
логгируются на уровне warn вместо alert
и не чаще одного раза в секунду.
</para>
<para lang="en">
now when using shared memory in the "ssl_session_cache" directive
the "could not allocate new session" errors
are logged at the "warn" level instead of "alert"
and not more often than once per second.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
в логгировании ошибок протокола PROXY.<br/>
Спасибо Сергею Брестеру.
</para>
<para lang="en">
in logging of the PROXY protocol errors.<br/>
Thanks to Sergey Brester.
</para>
</change>

<change type="workaround">
<para lang="ru">
при использовании TLSv1.3 с OpenSSL
разделяемая память из ssl_session_cache расходовалась
в том числе на сессии, использующие TLS session tickets.
</para>
<para lang="en">
shared memory from the "ssl_session_cache" directive
was spent on sessions using TLS session tickets
when using TLSv1.3 with OpenSSL.
</para>
</change>

<change type="workaround">
<para lang="ru">
таймаут, заданный с помощью директивы ssl_session_timeout,
не работал при использовании TLSv1.3 с OpenSSL или BoringSSL.
</para>
<para lang="en">
timeout specified with the "ssl_session_timeout" directive
did not work when using TLSv1.3 with OpenSSL or BoringSSL.
</para>
</change>

</changes>


<changes ver="1.23.1" date="2022-07-19">

<change type="feature">
<para lang="ru">
оптимизация использования памяти
в конфигурациях с SSL-проксированием.
</para>
<para lang="en">
memory usage optimization
in configurations with SSL proxying.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь с помощью параметра "ipv4=off" директивы "resolver"
можно запретить поиск IPv4-адресов при преобразовании имён в адреса.
</para>
<para lang="en">
looking up of IPv4 addresses while resolving now can be disabled
with the "ipv4=off" parameter of the "resolver" directive.
</para>
</change>

<change type="change">
<para lang="ru">
уровень логгирования ошибок SSL "bad key share", "bad extension",
"bad cipher" и "bad ecpoint"
понижен с уровня crit до info.
</para>
<para lang="en">
the logging level of the "bad key share", "bad extension",
"bad cipher", and "bad ecpoint" SSL errors
has been lowered from "crit" to "info".
</para>
</change>

<change type="bugfix">
<para lang="ru">
при возврате диапазонов
nginx не удалял строку заголовка "Content-Range",
если она присутствовала в исходном ответе бэкенда.
</para>
<para lang="en">
while returning byte ranges
nginx did not remove the "Content-Range" header line
if it was present in the original backend response.
</para>
</change>

<change type="bugfix">
<para lang="ru">
проксированный ответ мог быть отправлен не полностью
при переконфигурации на Linux;
ошибка появилась в 1.17.5.
</para>
<para lang="en">
a proxied response might be truncated
during reconfiguration on Linux;
the bug had appeared in 1.17.5.
</para>
</change>

</changes>


<changes ver="1.23.0" date="2022-06-21">

<change>
<para lang="ru">
Изменение во внутреннем API:
теперь строки заголовков представлены связными списками.
</para>
<para lang="en">
Change in internal API:
now header lines are represented as linked lists.
</para>
</change>

<change type="change">
<para lang="ru">
теперь nginx объединяет произвольные строки заголовков с одинаковыми именами
при отправке на FastCGI-, SCGI- и uwsgi-бэкенды,
в методе $r->header_in() модуля ngx_http_perl_module,
и при доступе через переменные "$http_...", "$sent_http_...",
"$sent_trailer_...", "$upstream_http_..." и "$upstream_trailer_...".
</para>
<para lang="en">
now nginx combines arbitrary header lines with identical names
when sending to FastCGI, SCGI, and uwsgi backends,
in the $r->header_in() method of the ngx_http_perl_module,
and during lookup of the "$http_...", "$sent_http_...",
"$sent_trailer_...", "$upstream_http_...", and "$upstream_trailer_..."
variables.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если в заголовке ответа бэкенда было несколько строк "Vary",
при кэшировании nginx учитывал только последнюю из них.
</para>
<para lang="en">
if there were multiple "Vary" header lines in the backend response,
nginx only used the last of them when caching.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если в заголовке ответа бэкенда было несколько строк "WWW-Authenticate"
и использовался перехват ошибок с кодом 401 от бэкенда
или директива auth_request,
nginx пересылал клиенту только первую из этих строк.
</para>
<para lang="en">
if there were multiple "WWW-Authenticate" header lines in the backend response
and errors with code 401 were intercepted
or the "auth_request" directive was used,
nginx only sent the first of the header lines to the client.
</para>
</change>

<change type="change">
<para lang="ru">
уровень логгирования ошибок SSL "application data after close notify"
понижен с уровня crit до info.
</para>
<para lang="en">
the logging level of the "application data after close notify" SSL errors
has been lowered from "crit" to "info".
</para>
</change>

<change type="bugfix">
<para lang="ru">
соединения могли зависать, если nginx был собран на Linux 2.6.17 и новее,
а использовался на системах без поддержки EPOLLRDHUP, в частности, на
системах с эмуляцией epoll;
ошибка появилась в 1.17.5.<br/>
Спасибо Marcus Ball.
</para>
<para lang="en">
connections might hang if nginx was built on Linux 2.6.17 or newer,
but was used on systems without EPOLLRDHUP support, notably with epoll
emulation layers;
the bug had appeared in 1.17.5.<br/>
Thanks to Marcus Ball.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не кэшировал ответ,
если строка заголовка ответа "Expires" запрещала кэширование,
а последующая строка заголовка "Cache-Control" разрешала кэширование.
</para>
<para lang="en">
nginx did not cache the response
if the "Expires" response header line disabled caching,
but following "Cache-Control" header line enabled caching.
</para>
</change>

</changes>


<changes ver="1.21.6" date="2022-01-25">

<change type="bugfix">
<para lang="ru">
при использование EPOLLEXCLUSIVE на Linux
распределение клиентских соединений между рабочими процессами
было неравномерным.
</para>
<para lang="en">
when using EPOLLEXCLUSIVE on Linux
client connections were unevenly distributed
among worker processes.
</para>
</change>

<change type="bugfix">
<para lang="ru">
во время плавного завершения старых рабочих процессов
nginx возвращал в ответах строку заголовка "Connection: keep-alive".
</para>
<para lang="en">
nginx returned the "Connection: keep-alive" header line in responses
during graceful shutdown of old worker processes.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве ssl_session_ticket_key при использовании TLSv1.3.
</para>
<para lang="en">
in the "ssl_session_ticket_key" when using TLSv1.3.
</para>
</change>

</changes>


<changes ver="1.21.5" date="2021-12-28">

<change type="change">
<para lang="ru">
теперь nginx по умолчанию собирается с библиотекой PCRE2.
</para>
<para lang="en">
now nginx is built with the PCRE2 library by default.
</para>
</change>

<change type="change">
<para lang="ru">
теперь nginx всегда использует sendfile(SF_NODISKIO) на FreeBSD.
</para>
<para lang="en">
now nginx always uses sendfile(SF_NODISKIO) on FreeBSD.
</para>
</change>

<change type="feature">
<para lang="ru">
поддержка sendfile(SF_NOCACHE) на FreeBSD.
</para>
<para lang="en">
support for sendfile(SF_NOCACHE) on FreeBSD.
</para>
</change>

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

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

</changes>


<changes ver="1.21.4" date="2021-11-02">

<change type="change">
<para lang="ru">
поддержка NPN вместо ALPN для установления HTTP/2-соединений
упразднена.
</para>
<para lang="en">
support for NPN instead of ALPN to establish HTTP/2 connections
has been removed.
</para>
</change>

<change type="change">
<para lang="ru">
теперь nginx закрывает SSL соединение, если клиент использует ALPN,
но nginx не поддерживает ни один из присланных клиентом протоколов.
</para>
<para lang="en">
now nginx rejects SSL connections if ALPN is used by the client,
but no supported protocols can be negotiated.
</para>
</change>

<change type="change">
<para lang="ru">
в директиве sendfile_max_chunk значение по умолчанию
изменено на 2 мегабайта.
</para>
<para lang="en">
the default value of the "sendfile_max_chunk" directive
was changed to 2 megabytes.
</para>
</change>

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

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

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

<change type="feature">
<para lang="ru">
поддержка SSL_sendfile() при использовании OpenSSL 3.0.
</para>
<para lang="en">
support for SSL_sendfile() when using OpenSSL 3.0.
</para>
</change>

<change type="feature">
<para lang="ru">
директива mp4_start_key_frame в модуле ngx_http_mp4_module.<br/>
Спасибо Tracey Jaquith.
</para>
<para lang="en">
the "mp4_start_key_frame" directive in the ngx_http_mp4_module.<br/>
Thanks to Tracey Jaquith.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в переменной $content_length при использовании chunked transfer encoding.
</para>
<para lang="en">
in the $content_length variable when using chunked transfer encoding.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при получении ответа некорректной длины от проксируемого бэкенда
nginx мог тем не менее закэшировать соединение.<br/>
Спасибо Awdhesh Mathpal.
</para>
<para lang="en">
after receiving a response with incorrect length from a proxied backend
nginx might nevertheless cache the connection.<br/>
Thanks to Awdhesh Mathpal.
</para>
</change>

<change type="bugfix">
<para lang="ru">
некорректные заголовки от бэкендов
логгировались на уровне info вместо error;
ошибка появилась в 1.21.1.
</para>
<para lang="en">
invalid headers from backends
were logged at the "info" level instead of "error";
the bug had appeared in 1.21.1.
</para>
</change>

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

</changes>


<changes ver="1.21.3" date="2021-09-07">

<change type="change">
<para lang="ru">
оптимизация чтения тела запроса
при использовании HTTP/2.
</para>
<para lang="en">
optimization of client request body reading
when using HTTP/2.
</para>
</change>

<change type="bugfix">
<para lang="ru">
во внутреннем API для обработки тела запроса
при использовании HTTP/2 и буферизации обрабатываемых данных.
</para>
<para lang="en">
in request body filters internal API
when using HTTP/2 and buffering of the data being processed.
</para>
</change>

</changes>


<changes ver="1.21.2" date="2021-08-31">

<change type="change">
<para lang="ru">
теперь nginx возвращает ошибку,
если в запросе по протоколу HTTP/1.0 присутствует
строка заголовка "Transfer-Encoding".
</para>
<para lang="en">
now nginx rejects HTTP/1.0 requests
with the "Transfer-Encoding" header line.
</para>
</change>

<change type="change">
<para lang="ru">
экспортные шифры больше не поддерживаются.
</para>
<para lang="en">
export ciphers are no longer supported.
</para>
</change>

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

<change type="feature">
<para lang="ru">
теперь серверу аутентификации почтового прокси-сервера
передаются строки заголовка "Auth-SSL-Protocol" и "Auth-SSL-Cipher".<br/>
Спасибо Rob Mueller.
</para>
<para lang="en">
the "Auth-SSL-Protocol" and "Auth-SSL-Cipher" header lines
are now passed to the mail proxy authentication server.<br/>
Thanks to Rob Mueller.
</para>
</change>

<change type="feature">
<para lang="ru">
API для обработки тела запроса
теперь позволяет буферизировать обрабатываемые данные.
</para>
<para lang="en">
request body filters API
now permits buffering of the data being processed.
</para>
</change>

<change type="bugfix">
<para lang="ru">
SSL-соединения к бэкендам в модуле stream
могли зависать после SSL handshake.
</para>
<para lang="en">
backend SSL connections in the stream module
might hang after an SSL handshake.
</para>
</change>

<change type="bugfix">
<para lang="ru">
уровень безопасности, доступный в OpenSSL 1.1.0 и новее,
не учитывался при загрузке сертификатов сервера,
если был задан через "@SECLEVEL=N" в директиве ssl_ciphers.
</para>
<para lang="en">
the security level, which is available in OpenSSL 1.1.0 or newer,
did not affect loading of the server certificates
when set with "@SECLEVEL=N" in the "ssl_ciphers" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
SSL-соединения с gRPC-бэкендами могли зависать,
если использовались методы select, poll или /dev/poll.
</para>
<para lang="en">
SSL connections with gRPC backends might hang
if select, poll, or /dev/poll methods were used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании HTTP/2
тело запроса всегда записывалось на диск,
если в запросе не было строки заголовка "Content-Length".
</para>
<para lang="en">
when using HTTP/2
client request body was always written to disk
if the "Content-Length" header line was not present in the request.
</para>
</change>

</changes>


<changes ver="1.21.1" date="2021-07-06">

<change type="change">
<para lang="ru">
теперь nginx для метода CONNECT всегда возвращает ошибку.
</para>
<para lang="en">
now nginx always returns an error for the CONNECT method.
</para>
</change>

<change type="change">
<para lang="ru">
теперь nginx всегда возвращает ошибку,
если в запросе одновременно присутствуют строки заголовка "Content-Length"
и "Transfer-Encoding".
</para>
<para lang="en">
now nginx always returns an error
if both "Content-Length" and "Transfer-Encoding" header lines
are present in the request.
</para>
</change>

<change type="change">
<para lang="ru">
теперь nginx всегда возвращает ошибку,
если в строке запроса используются пробелы или управляющие символы.
</para>
<para lang="en">
now nginx always returns an error
if spaces or control characters are used in the request line.
</para>
</change>

<change type="change">
<para lang="ru">
теперь nginx всегда возвращает ошибку,
если в имени заголовка используются пробелы или управляющие символы.
</para>
<para lang="en">
now nginx always returns an error
if spaces or control characters are used in a header name.
</para>
</change>

<change type="change">
<para lang="ru">
теперь nginx всегда возвращает ошибку,
если в строке "Host" заголовка запроса
используются пробелы или управляющие символы.
</para>
<para lang="en">
now nginx always returns an error
if spaces or control characters
are used in the "Host" request header line.
</para>
</change>

<change type="change">
<para lang="ru">
оптимизация тестирования конфигурации
при использовании большого количества listen-сокетов.
</para>
<para lang="en">
optimization of configuration testing
when using many listening sockets.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не экранировал
символы """, "&lt;", ">", "\", "^", "`", "{", "|", и "}"
при проксировании с изменением URI запроса.
</para>
<para lang="en">
nginx did not escape
""", "&lt;", ">", "\", "^", "`", "{", "|", and "}" characters
when proxying with changed URI.
</para>
</change>

<change type="bugfix">
<para lang="ru">
SSL-переменные могли быть пустыми при записи в лог;
ошибка появилась в 1.19.5.
</para>
<para lang="en">
SSL variables might be empty when used in logs;
the bug had appeared in 1.19.5.
</para>
</change>

<change type="bugfix">
<para lang="ru">
keepalive-соединения с gRPC-бэкендами могли не закрываться
после получения GOAWAY-фрейма.
</para>
<para lang="en">
keepalive connections with gRPC backends might not be closed
after receiving a GOAWAY frame.
</para>
</change>

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

</changes>


<changes ver="1.21.0" date="2021-05-25">

<change type="security">
<para lang="ru">
при использовании директивы resolver
во время обработки ответа DNS-сервера
могла происходить перезапись одного байта памяти,
что позволяло атакующему,
имеющему возможность подделывать UDP-пакеты от DNS-сервера,
вызвать падение рабочего процесса
или, потенциально, выполнение произвольного кода (CVE-2021-23017).
</para>
<para lang="en">
1-byte memory overwrite might occur
during DNS server response processing
if the "resolver" directive was used,
allowing an attacker
who is able to forge UDP packets from the DNS server
to cause worker process crash
or, potentially, arbitrary code execution (CVE-2021-23017).
</para>
</change>

<change type="feature">
<para lang="ru">
директивы proxy_ssl_certificate, proxy_ssl_certificate_key,
grpc_ssl_certificate, grpc_ssl_certificate_key,
uwsgi_ssl_certificate и uwsgi_ssl_certificate_key
поддерживают переменные.
</para>
<para lang="en">
variables support
in the "proxy_ssl_certificate", "proxy_ssl_certificate_key"
"grpc_ssl_certificate", "grpc_ssl_certificate_key",
"uwsgi_ssl_certificate", and "uwsgi_ssl_certificate_key" directives.
</para>
</change>

<change type="feature">
<para lang="ru">
директива max_errors в почтовом прокси-сервере.
</para>
<para lang="en">
the "max_errors" directive in the mail proxy module.
</para>
</change>

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

<change type="feature">
<para lang="ru">
параметр fastopen директивы listen в модуле stream.<br/>
Спасибо Anbang Wen.
</para>
<para lang="en">
the "fastopen" parameter of the "listen" directive in the stream module.<br/>
Thanks to Anbang Wen.
</para>
</change>

<change type="bugfix">
<para lang="ru">
специальные символы не экранировались
при автоматическом перенаправлении с добавлением завершающего слэша.
</para>
<para lang="en">
special characters were not escaped
during automatic redirect with appended trailing slash.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании SMTP pipelining
соединения с клиентами в почтовом прокси-сервере
могли неожиданно закрываться.
</para>
<para lang="en">
connections with clients in the mail proxy module
might be closed unexpectedly
when using SMTP pipelining.
</para>
</change>

</changes>


<changes ver="1.19.10" date="2021-04-13">

<change type="change">
<para lang="ru">
в директиве keepalive_requests значение по умолчанию изменено на 1000.
</para>
<para lang="en">
the default value of the "keepalive_requests" directive was changed to 1000.
</para>
</change>

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

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

<change type="workaround">
<para lang="ru">
при использовании zlib-ng
в логах появлялись сообщения "gzip filter failed to use preallocated memory".
</para>
<para lang="en">
"gzip filter failed to use preallocated memory" alerts appeared in logs
when using zlib-ng.
</para>
</change>

</changes>


<changes ver="1.19.9" date="2021-03-30">

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

<change type="bugfix">
<para lang="ru">
при работе с gRPC-бэкендами могли возникать ошибки
"upstream sent response body larger than indicated content length";
ошибка появилась в 1.19.1.
</para>
<para lang="en">
"upstream sent response body larger than indicated content length"
errors might occur when working with gRPC backends;
the bug had appeared in 1.19.1.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если клиент закрывал соединение в момент отбрасывания тела запроса,
nginx мог не закрыть соединение до истечения keepalive-таймаута.
</para>
<para lang="en">
nginx might not close a connection till keepalive timeout expiration
if the connection was closed by the client while discarding the request body.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при ожидании задержки limit_req или auth_delay, а также при работе с бэкендами
nginx мог не обнаружить, что соединение уже закрыто клиентом.
</para>
<para lang="en">
nginx might not detect that a connection was already closed by the client
when waiting for auth_delay or limit_req delay, or when working with backends.
</para>
</change>

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

</changes>


<changes ver="1.19.8" date="2021-03-09">

<change type="feature">
<para lang="ru">
в директиве proxy_cookie_flags теперь
флаги можно задавать с помощью переменных.
</para>
<para lang="en">
flags in the "proxy_cookie_flags" directive
can now contain variables.
</para>
</change>

<change type="feature">
<para lang="ru">
параметр proxy_protocol в директиве listen,
директивы proxy_protocol и set_real_ip_from
в почтовом прокси-сервере.
</para>
<para lang="en">
the "proxy_protocol" parameter of the "listen" directive,
the "proxy_protocol" and "set_real_ip_from" directives
in mail proxy.
</para>
</change>

<change type="bugfix">
<para lang="ru">
HTTP/2-соединения сразу закрывались
при использовании "keepalive_timeout 0";
ошибка появилась в 1.19.7.
</para>
<para lang="en">
HTTP/2 connections were immediately closed
when using "keepalive_timeout 0";
the bug had appeared in 1.19.7.
</para>
</change>

<change type="bugfix">
<para lang="ru">
некоторые ошибки логгировались как неизвестные,
если nginx был собран с glibc 2.32.
</para>
<para lang="en">
some errors were logged as unknown
if nginx was built with glibc 2.32.
</para>
</change>

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

</changes>


<changes ver="1.19.7" date="2021-02-16">

<change type="change">
<para lang="ru">
обработка соединений в HTTP/2 была изменена
и теперь более соответствует HTTP/1.x;
директивы http2_recv_timeout, http2_idle_timeout
и http2_max_requests упразднены,
вместо них следует использовать директивы
keepalive_timeout и keepalive_requests.
</para>
<para lang="en">
connections handling in HTTP/2 has been changed
to better match HTTP/1.x;
the "http2_recv_timeout", "http2_idle_timeout",
and "http2_max_requests" directives have been removed,
the "keepalive_timeout" and "keepalive_requests" directives
should be used instead.
</para>
</change>

<change type="change">
<para lang="ru">
директивы http2_max_field_size и http2_max_header_size упразднены,
вместо них следует использовать директиву large_client_header_buffers.
</para>
<para lang="en">
the "http2_max_field_size" and "http2_max_header_size" directives
have been removed,
the "large_client_header_buffers" directive should be used instead.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь при исчерпании свободных соединений
nginx закрывает не только keepalive-соединения,
но и соединения в lingering close.
</para>
<para lang="en">
now, if free worker connections are exhausted,
nginx starts closing not only keepalive connections,
but also connections in lingering close.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в логах могли появляться сообщения "zero size buf in output",
если бэкенд возвращал некорректный ответ
при небуферизированном проксировании;
ошибка появилась в 1.19.1.
</para>
<para lang="en">
"zero size buf in output" alerts might appear in logs
if an upstream server returned an incorrect response
during unbuffered proxying;
the bug had appeared in 1.19.1.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директивы return
вместе с image_filter или xslt_stylesheet
HEAD-запросы обрабатывались некорректно.
</para>
<para lang="en">
HEAD requests were handled incorrectly
if the "return" directive was used
with the "image_filter" or "xslt_stylesheet" directives.
</para>
</change>

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

</changes>


<changes ver="1.19.6" date="2020-12-15">

<change type="bugfix">
<para lang="ru">
ошибки "no live upstreams",
если server в блоке upstream был помечен как down.
</para>
<para lang="en">
"no live upstreams" errors
if a "server" inside "upstream" block was marked as "down".
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
nginx возвращал ошибку 400 на запросы вида
<nobr>"GET http://example.com?args HTTP/1.0"</nobr>.
</para>
<para lang="en">
nginx returned the 400 response on requests like
<nobr>"GET http://example.com?args HTTP/1.0"</nobr>.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модулях ngx_http_flv_module и ngx_http_mp4_module.<br/>
Спасибо Chris Newton.
</para>
<para lang="en">
in the ngx_http_flv_module and ngx_http_mp4_module.<br/>
Thanks to Chris Newton.
</para>
</change>

</changes>


<changes ver="1.19.5" date="2020-11-24">

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

<change type="feature">
<para lang="ru">
при сборке дополнительных модулей
теперь можно указывать одни и те же исходные файлы в разных модулях.
</para>
<para lang="en">
the same source files can now be specified in different modules
while building addon modules.
</para>
</change>

<change type="bugfix">
<para lang="ru">
SSL shutdown не работал
при закрытии соединений с ожиданием дополнительных данных (lingering close).
</para>
<para lang="en">
SSL shutdown did not work
when lingering close was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при работе с gRPC-бэкендами
могли возникать ошибки "upstream sent frame for closed stream".
</para>
<para lang="en">
"upstream sent frame for closed stream" errors might occur
when working with gRPC backends.
</para>
</change>

<change type="bugfix">
<para lang="ru">
во внутреннем API для обработки тела запроса.
</para>
<para lang="en">
in request body filters internal API.
</para>
</change>

</changes>


<changes ver="1.19.4" date="2020-10-27">

<change type="feature">
<para lang="ru">
директивы ssl_conf_command, proxy_ssl_conf_command, grpc_ssl_conf_command
и uwsgi_ssl_conf_command.
</para>
<para lang="en">
the "ssl_conf_command", "proxy_ssl_conf_command", "grpc_ssl_conf_command",
and "uwsgi_ssl_conf_command" directives.
</para>
</change>

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

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

</changes>


<changes ver="1.19.3" date="2020-09-29">

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

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

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

<change type="bugfix">
<para lang="ru">
расширение управления кэшированием stale-if-error
ошибочно применялось, если бэкенд возвращал ответ
с кодом 500, 502, 503, 504, 403, 404 или 429.
</para>
<para lang="en">
the "stale-if-error" cache control extension
was erroneously applied if backend returned a response
with status code 500, 502, 503, 504, 403, 404, or 429.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если использовалось кэширование
и бэкенд возвращал ответы с строкой заголовка Vary,
в логах могли появляться сообщения "[crit] cache file ... has too long header".
</para>
<para lang="en">
"[crit] cache file ... has too long header" messages might appear in logs
if caching was used
and the backend returned responses with the "Vary" header line.
</para>
</change>

<change type="workaround">
<para lang="ru">
при использовании OpenSSL 1.1.1
в логах могли появляться сообщения "[crit] SSL_write() failed".
</para>
<para lang="en">
"[crit] SSL_write() failed" messages might appear in logs
when using OpenSSL 1.1.1.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в логах могли появляться сообщения
"SSL_shutdown() failed (SSL: ... bad write retry)";
ошибка появилась в 1.19.2.
</para>
<para lang="en">
"SSL_shutdown() failed (SSL: ... bad write retry)"
messages might appear in logs;
the bug had appeared in 1.19.2.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
утечки сокетов при использовании HTTP/2 и подзапросов в модуле njs.
</para>
<para lang="en">
socket leak when using HTTP/2 and subrequests in the njs module.
</para>
</change>

</changes>


<changes ver="1.19.2" date="2020-08-11">

<change type="change">
<para lang="ru">
теперь nginx начинает закрывать keepalive-соединения,
не дожидаясь исчерпания всех свободных соединений,
а также пишет об этом предупреждение в лог ошибок.
</para>
<para lang="en">
now nginx starts closing keepalive connections
before all free worker connections are exhausted,
and logs a warning about this to the error log.
</para>
</change>

<change type="change">
<para lang="ru">
оптимизация чтения тела запроса
при использовании chunked transfer encoding.
</para>
<para lang="en">
optimization of client request body reading
when using chunked transfer encoding.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
в логах могли появляться сообщения "zero size buf in output",
если FastCGI-сервер возвращал некорректный ответ;
ошибка появилась в 1.19.1.
</para>
<para lang="en">
"zero size buf in output" alerts might appear in logs
if a FastCGI server returned an incorrect response;
the bug had appeared in 1.19.1.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
SSL shutdown мог не работать.
</para>
<para lang="en">
SSL shutdown might not work.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в логах могли появляться сообщения
"SSL_shutdown() failed (SSL: ... bad write retry)".
</para>
<para lang="en">
"SSL_shutdown() failed (SSL: ... bad write retry)"
messages might appear in logs.
</para>
</change>

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

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

</changes>


<changes ver="1.19.1" date="2020-07-07">

<change type="change">
<para lang="ru">
директивы lingering_close, lingering_time и lingering_timeout
теперь работают при использовании HTTP/2.
</para>
<para lang="en">
the "lingering_close", "lingering_time", and "lingering_timeout" directives
now work when using HTTP/2.
</para>
</change>

<change type="change">
<para lang="ru">
теперь лишние данные, присланные бэкендом, всегда отбрасываются.
</para>
<para lang="en">
now extra data sent by a backend are always discarded.
</para>
</change>

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

<change type="change">
<para lang="ru">
теперь при получении ответа некорректной длины от gRPC-бэкенда
nginx прекращает обработку ответа с ошибкой.
</para>
<para lang="en">
now after receiving a response with incorrect length from a gRPC backend
nginx stops response processing with an error.
</para>
</change>

<change type="feature">
<para lang="ru">
параметр min_free в директивах proxy_cache_path, fastcgi_cache_path,
scgi_cache_path и uwsgi_cache_path.<br/>
Спасибо Adam Bambuch.
</para>
<para lang="en">
the "min_free" parameter of the "proxy_cache_path", "fastcgi_cache_path",
"scgi_cache_path", and "uwsgi_cache_path" directives.<br/>
Thanks to Adam Bambuch.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не удалял unix domain listen-сокеты
при плавном завершении по сигналу SIGQUIT.
</para>
<para lang="en">
nginx did not delete unix domain listen sockets
during graceful shutdown on the SIGQUIT signal.
</para>
</change>

<change type="bugfix">
<para lang="ru">
UDP-пакеты нулевого размера не проксировались.
</para>
<para lang="en">
zero length UDP datagrams were not proxied.
</para>
</change>

<change type="bugfix">
<para lang="ru">
проксирование на uwsgi-бэкенды с использованием SSL могло не работать.<br/>
Спасибо Guanzhong Chen.
</para>
<para lang="en">
proxying to uwsgi backends using SSL might not work.<br/>
Thanks to Guanzhong Chen.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
при использовании файловых систем XFS и NFS
размер кэша на диске мог считаться некорректно.
</para>
<para lang="en">
on XFS and NFS file systems
disk cache size might be calculated incorrectly.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если сервер memcached возвращал некорректный ответ,
в логах могли появляться сообщения "negative size buf in writer".
</para>
<para lang="en">
"negative size buf in writer" alerts might appear in logs
if a memcached server returned a malformed response.
</para>
</change>

</changes>


<changes ver="1.19.0" date="2020-05-26">

<change type="feature">
<para lang="ru">
проверка клиентских сертификатов с помощью OCSP.
</para>
<para lang="en">
client certificate validation with OCSP.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при работе с gRPC-бэкендами
могли возникать ошибки "upstream sent frame for closed stream".
</para>
<para lang="en">
"upstream sent frame for closed stream" errors might occur
when working with gRPC backends.
</para>
</change>

<change type="bugfix">
<para lang="ru">
OCSP stapling мог не работать,
если не была указана директива resolver.
</para>
<para lang="en">
OCSP stapling might not work
if the "resolver" directive was not specified.
</para>
</change>

<change type="bugfix">
<para lang="ru">
соединения с некорректным HTTP/2 preface не логгировались.
</para>
<para lang="en">
connections with incorrect HTTP/2 preface were not logged.
</para>
</change>

</changes>


<changes ver="1.17.10" date="2020-04-14">

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

</changes>


<changes ver="1.17.9" date="2020-03-03">

<change type="change">
<para lang="ru">
теперь nginx не разрешает
несколько строк "Host" в заголовке запроса.
</para>
<para lang="en">
now nginx does not allow
several "Host" request header lines.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx игнорировал дополнительные
строки "Transfer-Encoding" в заголовке запроса.
</para>
<para lang="en">
nginx ignored additional
"Transfer-Encoding" request header lines.
</para>
</change>

<change type="bugfix">
<para lang="ru">
утечки сокетов при использовании HTTP/2.
</para>
<para lang="en">
socket leak when using HTTP/2.
</para>
</change>

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

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

<change type="bugfix">
<para lang="ru">
при перенаправлении ошибок с кодом 494 с помощью директивы error_page
nginx возвращал ответ с кодом 494 вместо 400.
</para>
<para lang="en">
nginx used status code 494 instead of 400
if errors with code 494 were redirected with the "error_page" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
утечки сокетов при использовании подзапросов в модуле njs и директивы aio.
</para>
<para lang="en">
socket leak when using subrequests in the njs module and the "aio" directive.
</para>
</change>

</changes>


<changes ver="1.17.8" date="2020-01-21">

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

<change type="bugfix">
<para lang="ru">
при обработке pipelined-запросов по SSL-соединению мог произойти таймаут;
ошибка появилась в 1.17.5.
</para>
<para lang="en">
a timeout might occur while handling pipelined requests in an SSL connection;
the bug had appeared in 1.17.5.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве debug_points при использовании HTTP/2.<br/>
Спасибо Даниилу Бондареву.
</para>
<para lang="en">
in the "debug_points" directive when using HTTP/2.<br/>
Thanks to Daniil Bondarev.
</para>
</change>

</changes>


<changes ver="1.17.7" date="2019-12-24">

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

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

<change type="bugfix">
<para lang="ru">
строка Location заголовка ответа могла содержать мусор,
если URI запроса был изменён на URI, содержащий нулевой символ.
</para>
<para lang="en">
the "Location" response header line might contain garbage
if the request URI was rewritten to the one containing a null character.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при возврате перенаправлений с помощью директивы error_page
запросы с телом обрабатывались некорректно;
ошибка появилась в 0.7.12.
</para>
<para lang="en">
requests with bodies were handled incorrectly
when returning redirections with the "error_page" directive;
the bug had appeared in 0.7.12.
</para>
</change>

<change type="bugfix">
<para lang="ru">
утечки сокетов при использовании HTTP/2.
</para>
<para lang="en">
socket leak when using HTTP/2.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при обработке pipelined-запросов по SSL-соединению мог произойти таймаут;
ошибка появилась в 1.17.5.
</para>
<para lang="en">
a timeout might occur while handling pipelined requests in an SSL connection;
the bug had appeared in 1.17.5.
</para>
</change>

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

</changes>


<changes ver="1.17.6" date="2019-11-19">

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

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

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

</changes>


<changes ver="1.17.5" date="2019-10-22">

<change type="feature">
<para lang="ru">
теперь nginx использует вызов ioctl(FIONREAD), если он доступен,
чтобы избежать чтения из быстрого соединения в течение долгого времени.
</para>
<para lang="en">
now nginx uses ioctl(FIONREAD), if available,
to avoid reading from a fast connection for a long time.
</para>
</change>

<change type="bugfix">
<para lang="ru">
неполные закодированные символы в конце URI запроса игнорировались.
</para>
<para lang="en">
incomplete escaped characters at the end of the request URI were ignored.
</para>
</change>

<change type="bugfix">
<para lang="ru">
"/." и "/.." в конце URI запроса не нормализовывались.
</para>
<para lang="en">
"/." and "/.." at the end of the request URI were not normalized.
</para>
</change>

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

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

<change type="bugfix">
<para lang="ru">
nginx не собирался с MinGW-w64 gcc 8.1 и новее.
</para>
<para lang="en">
nginx could not be built with MinGW-w64 gcc 8.1 or newer.
</para>
</change>

</changes>


<changes ver="1.17.4" date="2019-09-24">

<change type="change">
<para lang="ru">
улучшено детектирование некорректного поведения клиентов в HTTP/2.
</para>
<para lang="en">
better detection of incorrect client behavior in HTTP/2.
</para>
</change>

<change type="change">
<para lang="ru">
в обработке непрочитанного тела запроса
при возврате ошибок в HTTP/2.
</para>
<para lang="en">
in handling of not fully read client request body
when returning errors in HTTP/2.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
при использовании HTTP/2 и директивы proxy_request_buffering
в рабочем процессе мог произойти segmentation fault.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
when using HTTP/2 and the "proxy_request_buffering" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
на Windows при использовании SSL
уровень записи в лог ошибки ECONNABORTED был "crit" вместо "error".
</para>
<para lang="en">
the ECONNABORTED error log level was "crit" instead of "error"
on Windows when using SSL.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx игнорировал лишние данные при использовании chunked transfer encoding.
</para>
<para lang="en">
nginx ignored extra data when using chunked transfer encoding.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если использовалась директива return и
при чтении тела запроса возникала ошибка,
nginx всегда возвращал ошибку 500.
</para>
<para lang="en">
nginx always returned the 500 error
if the "return" directive was used
and an error occurred during reading client request body.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке ошибок выделения памяти.
</para>
<para lang="en">
in memory allocation error handling.
</para>
</change>

</changes>


<changes ver="1.17.3" date="2019-08-13">

<change type="security">
<para lang="ru">
при использовании HTTP/2 клиент мог вызвать
чрезмерное потребление памяти и ресурсов процессора
(CVE-2019-9511, CVE-2019-9513, CVE-2019-9516).
</para>
<para lang="en">
when using HTTP/2 a client might cause
excessive memory consumption and CPU usage
(CVE-2019-9511, CVE-2019-9513, CVE-2019-9516).
</para>
</change>

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

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

</changes>


<changes ver="1.17.2" date="2019-07-23">

<change type="change">
<para lang="ru">
минимальная поддерживаемая версия zlib&mdash;1.2.0.4.<br/>
Спасибо Илье Леошкевичу.
</para>
<para lang="en">
minimum supported zlib version is 1.2.0.4.<br/>
Thanks to Ilya Leoshkevich.
</para>
</change>

<change type="change">
<para lang="ru">
метод $r->internal_redirect() встроенного перла
теперь ожидает закодированный URI.
</para>
<para lang="en">
the $r->internal_redirect() embedded perl method
now expects escaped URIs.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь с помощью метода $r->internal_redirect() встроенного перла
можно перейти в именованный location.
</para>
<para lang="en">
it is now possible to switch to a named location
using the $r->internal_redirect() embedded perl method.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке ошибок во встроенном перле.
</para>
<para lang="en">
in error handling in embedded perl.
</para>
</change>

<change type="bugfix">
<para lang="ru">
на старте или во время переконфигурации мог произойти segmentation fault,
если в конфигурации использовалось значение hash bucket size больше 64 килобайт.
</para>
<para lang="en">
a segmentation fault might occur on start or during reconfiguration
if hash bucket size larger than 64 kilobytes was used in the configuration.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании методов обработки соединений select, poll и /dev/poll
nginx мог нагружать процессор во время небуферизованного проксирования
и при проксировании WebSocket-соединений.
</para>
<para lang="en">
nginx might hog CPU during unbuffered proxying
and when proxying WebSocket connections
if the select, poll, or /dev/poll methods were used.
</para>
</change>

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

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

</changes>


<changes ver="1.17.1" date="2019-06-25">

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

<change type="feature">
<para lang="ru">
при использовании директивы hash в блоке upstream
пустой ключ хэширования теперь приводит к переключению
на round-robin балансировку.<br/>
Спасибо Niklas Keller.
</para>
<para lang="en">
when using the "hash" directive inside the "upstream" block
an empty hash key now triggers round-robin balancing.<br/>
Thanks to Niklas Keller.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если использовалось кэширование и директива image_filter,
а ошибки с кодом 415 перенаправлялись с помощью директивы error_page;
ошибка появилась в 1.11.10.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if caching was used along with the "image_filter" directive,
and errors with code 415 were redirected with the "error_page" directive;
the bug had appeared in 1.11.10.
</para>
</change>

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

</changes>


<changes ver="1.17.0" date="2019-05-21">

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

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

<change type="change">
<para lang="ru">
минимальная поддерживаемая версия OpenSSL&mdash;0.9.8.
</para>
<para lang="en">
minimum supported OpenSSL version is 0.9.8.
</para>
</change>

<change type="change">
<para lang="ru">
теперь postpone-фильтр собирается всегда.
</para>
<para lang="en">
now the postpone filter is always built.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива include не работала в блоках if и limit_except.
</para>
<para lang="en">
the "include" directive did not work inside the "if" and "limit_except" blocks.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке byte ranges.
</para>
<para lang="en">
in byte ranges processing.
</para>
</change>

</changes>


<changes ver="1.15.12" date="2019-04-16">

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если в директивах ssl_certificate или ssl_certificate_key
использовались переменные
и был включён OCSP stapling.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if variables were used
in the "ssl_certificate" or "ssl_certificate_key" directives
and OCSP stapling was enabled.
</para>
</change>

</changes>


<changes ver="1.15.11" date="2019-04-09">

<change type="bugfix">
<para lang="ru">
в директиве ssl_stapling_file на Windows.
</para>
<para lang="en">
in the "ssl_stapling_file" directive on Windows.
</para>
</change>

</changes>


<changes ver="1.15.10" date="2019-03-26">

<change type="change">
<para lang="ru">
теперь при использовании имени хоста в директиве listen
nginx создаёт listen-сокеты для всех адресов,
соответствующих этому имени
(ранее использовался только первый адрес).
</para>
<para lang="en">
when using a hostname in the "listen" directive
nginx now creates listening sockets
for all addresses the hostname resolves to
(previously, only the first address was used).
</para>
</change>

<change type="feature">
<para lang="ru">
диапазоны портов в директиве listen.
</para>
<para lang="en">
port ranges in the "listen" directive.
</para>
</change>

<change type="feature">
<para lang="ru">
возможность загрузки SSL-сертификатов и секретных ключей из переменных.
</para>
<para lang="en">
loading of SSL certificates and secret keys from variables.
</para>
</change>

<change type="workaround">
<para lang="ru">
переменная $ssl_server_name могла быть пустой
при использовании OpenSSL 1.1.1.
</para>
<para lang="en">
the $ssl_server_name variable might be empty
when using OpenSSL 1.1.1.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx/Windows не собирался с Visual Studio 2015 и новее;
ошибка появилась в 1.15.9.
</para>
<para lang="en">
nginx/Windows could not be built with Visual Studio 2015 or newer;
the bug had appeared in 1.15.9.
</para>
</change>

</changes>


<changes ver="1.15.9" date="2019-02-26">

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

<change type="feature">
<para lang="ru">
метод poll теперь доступен на Windows
при использовании Windows Vista и новее.
</para>
<para lang="en">
the "poll" method is now available on Windows
when using Windows Vista or newer.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если при использовании метода select на Windows
происходила ошибка при установлении соединения с бэкендом,
nginx ожидал истечения таймаута на установление соединения.
</para>
<para lang="en">
if the "select" method was used on Windows
and an error occurred while establishing a backend connection,
nginx waited for the connection establishment timeout to expire.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директивы proxy_upload_rate и proxy_download_rate
в модуле stream
работали некорректно при проксировании UDP-пакетов.
</para>
<para lang="en">
the "proxy_upload_rate" and "proxy_download_rate" directives
in the stream module
worked incorrectly when proxying UDP datagrams.
</para>
</change>

</changes>


<changes ver="1.15.8" date="2018-12-25">

<change type="feature">
<para lang="ru">
переменная $upstream_bytes_sent.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
the $upstream_bytes_sent variable.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="feature">
<para lang="ru">
новые директивы в скриптах подсветки синтаксиса для vim.<br/>
Спасибо Геннадию Махомеду.
</para>
<para lang="en">
new directives in vim syntax highlighting scripts.<br/>
Thanks to Gena Makhomed.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
в директиве geo при использовании unix domain listen-сокетов.
</para>
<para lang="en">
in the "geo" directive when using unix domain listen sockets.
</para>
</change>

<change type="workaround">
<para lang="ru">
при использовании директивы ssl_early_data с OpenSSL
в логах могли появляться сообщения
"ignoring stale global SSL error ... bad length".
</para>
<para lang="en">
the "ignoring stale global SSL error ... bad length"
alerts might appear in logs
when using the "ssl_early_data" directive with OpenSSL.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в nginx/Windows.
</para>
<para lang="en">
in nginx/Windows.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_autoindex_module на 32-битных платформах.
</para>
<para lang="en">
in the ngx_http_autoindex_module on 32-bit platforms.
</para>
</change>

</changes>


<changes ver="1.15.7" date="2018-11-27">

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

<change type="feature">
<para lang="ru">
параметр "delay" директивы "limit_req".<br/>
Спасибо Владиславу Шабанову и Петру Щучкину.
</para>
<para lang="en">
the "delay" parameter of the "limit_req" directive.<br/>
Thanks to Vladislav Shabanov and Peter Shchuchkin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
утечки памяти в случае ошибок при переконфигурации.
</para>
<para lang="en">
memory leak on errors during reconfiguration.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в переменных $upstream_response_time, $upstream_connect_time и
$upstream_header_time.
</para>
<para lang="en">
in the $upstream_response_time, $upstream_connect_time, and
$upstream_header_time variables.
</para>
</change>

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

</changes>


<changes ver="1.15.6" date="2018-11-06">

<change type="security">
<para lang="ru">
при использовании HTTP/2 клиент мог вызвать
чрезмерное потреблению памяти (CVE-2018-16843)
и ресурсов процессора (CVE-2018-16844).
</para>
<para lang="en">
when using HTTP/2 a client might cause
excessive memory consumption (CVE-2018-16843)
and CPU usage (CVE-2018-16844).
</para>
</change>

<change type="security">
<para lang="ru">
при обработке специально созданного mp4-файла модулем ngx_http_mp4_module
содержимое памяти рабочего процесса могло быть отправлено клиенту
(CVE-2018-16845).
</para>
<para lang="en">
processing of a specially crafted mp4 file with the ngx_http_mp4_module
might result in worker process memory disclosure
(CVE-2018-16845).
</para>
</change>

<change type="feature">
<para lang="ru">
директивы proxy_socket_keepalive, fastcgi_socket_keepalive,
grpc_socket_keepalive, memcached_socket_keepalive,
scgi_socket_keepalive и uwsgi_socket_keepalive.
</para>
<para lang="en">
the "proxy_socket_keepalive", "fastcgi_socket_keepalive",
"grpc_socket_keepalive", "memcached_socket_keepalive",
"scgi_socket_keepalive", and "uwsgi_socket_keepalive" directives.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если nginx был собран с OpenSSL 1.1.0, а использовался с OpenSSL 1.1.1,
протокол TLS 1.3 всегда был разрешён.
</para>
<para lang="en">
if nginx was built with OpenSSL 1.1.0 and used with OpenSSL 1.1.1,
the TLS 1.3 protocol was always enabled.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при работе с gRPC-бэкендами могло расходоваться большое количество памяти.
</para>
<para lang="en">
working with gRPC backends might result in excessive memory consumption.
</para>
</change>

</changes>


<changes ver="1.15.5" date="2018-10-02">

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

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

</changes>


<changes ver="1.15.4" date="2018-09-25">

<change type="feature">
<para lang="ru">
теперь директиву ssl_early_data можно использовать с OpenSSL.
</para>
<para lang="en">
now the "ssl_early_data" directive can be used with OpenSSL.
</para>
</change>

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

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

<change type="bugfix">
<para lang="ru">
при использовании директивы error_page для перенаправления ошибок,
возникающих на ранних этапах обработки запроса,
в частности ошибок с кодом 400,
могла происходить утечка сокетов.
</para>
<para lang="en">
a socket leak might occur
when using the "error_page" directive
to redirect early request processing errors,
notably errors with code 400.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива return при возврате ошибок не изменяла код ответа,
если запрос был перенаправлен с помощью директивы error_page.
</para>
<para lang="en">
the "return" directive did not change the response code when returning errors
if the request was redirected by the "error_page" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
стандартные сообщения об ошибках и ответы модуля ngx_http_autoindex_module
содержали атрибут bgcolor, что могло приводить к их некорректному отображению
при использовании пользовательских настроек цветов в браузерах.<br/>
Спасибо Nova DasSarma.
</para>
<para lang="en">
standard error pages and responses of the ngx_http_autoindex_module module
used the "bgcolor" attribute, and might be displayed incorrectly when using
custom color settings in browsers.<br/>
Thanks to Nova DasSarma.
</para>
</change>

<change type="change">
<para lang="ru">
уровень логгирования ошибок SSL "no suitable key share" и
"no suitable signature algorithm"
понижен с уровня crit до info.
</para>
<para lang="en">
the logging level of the "no suitable key share" and
"no suitable signature algorithm" SSL errors
has been lowered from "crit" to "info".
</para>
</change>

</changes>


<changes ver="1.15.3" date="2018-08-28">

<change type="feature">
<para lang="ru">
теперь TLSv1.3 можно использовать с BoringSSL.
</para>
<para lang="en">
now TLSv1.3 can be used with BoringSSL.
</para>
</change>

<change type="feature">
<para lang="ru">
директива ssl_early_data,
сейчас доступна при использовании BoringSSL.
</para>
<para lang="en">
the "ssl_early_data" directive,
currently available with BoringSSL.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы keepalive_timeout и keepalive_requests
в блоке upstream.
</para>
<para lang="en">
the "keepalive_timeout" and "keepalive_requests" directives
in the "upstream" block.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_dav_module
при копировании файла поверх существующего файла с помощью метода COPY
не обнулял целевой файл.
</para>
<para lang="en">
the ngx_http_dav_module
did not truncate destination file when copying a file over an existing one
with the COPY method.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_dav_module
при перемещении файла между файловыми системами с помощью метода MOVE
устанавливал нулевые права доступа на результирующий файл
и не сохранял время изменения файла.
</para>
<para lang="en">
the ngx_http_dav_module
used zero access rights on the destination file
and did not preserve file modification time
when moving a file between different file systems with the MOVE method.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_dav_module
при копировании файла с помощью метода COPY
для результирующего файла использовал права доступа по умолчанию.
</para>
<para lang="en">
the ngx_http_dav_module
used default access rights
when copying a file with the COPY method.
</para>
</change>

<change type="workaround">
<para lang="ru">
некоторые клиенты могли не работать при использовании HTTP/2;
ошибка появилась в 1.13.5.
</para>
<para lang="en">
some clients might not work when using HTTP/2;
the bug had appeared in 1.13.5.
</para>
</change>

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

</changes>


<changes ver="1.15.2" date="2018-07-24">

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

<change type="feature">
<para lang="ru">
теперь при использовании директивы reset_timedout_connection
nginx сбрасывает соединения, закрываемые с кодом 444.
</para>
<para lang="en">
now when using the "reset_timedout_connection" directive
nginx will reset connections being closed with the 444 code.
</para>
</change>

<change type="change">
<para lang="ru">
уровень логгирования ошибок SSL "http request", "https proxy request",
"unsupported protocol" и "version too low"
понижен с уровня crit до info.
</para>
<para lang="en">
a logging level of the "http request", "https proxy request",
"unsupported protocol", and "version too low" SSL errors
has been lowered from "crit" to "info".
</para>
</change>

<change type="bugfix">
<para lang="ru">
запросы к DNS-серверу не отправлялись повторно,
если при первой попытке отправки происходила ошибка.
</para>
<para lang="en">
DNS requests were not resent
if initial sending of a request failed.
</para>
</change>

<change type="bugfix">
<para lang="ru">
параметр reuseport директивы listen игнорировался,
если количество рабочих процессов было задано после директивы listen.
</para>
<para lang="en">
the "reuseport" parameter of the "listen" directive was ignored
if the number of worker processes was specified after the "listen" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании OpenSSL 1.1.0 и новее
директиву ssl_prefer_server_ciphers нельзя было выключить
в виртуальном сервере, если она была включена в сервере по умолчанию.
</para>
<para lang="en">
when using OpenSSL 1.1.0 or newer
it was not possible to switch off "ssl_prefer_server_ciphers" in
a virtual server if it was switched on in the default server.
</para>
</change>

<change type="bugfix">
<para lang="ru">
повторное использование SSL-сессий к бэкендам
не работало с протоколом TLS 1.3.
</para>
<para lang="en">
SSL session reuse with upstream servers
did not work with the TLS 1.3 protocol.
</para>
</change>

</changes>


<changes ver="1.15.1" date="2018-07-03">

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

<change type="feature">
<para lang="ru">
улучшена производительность при использовании директив hash и ip_hash
совместно с директивой zone.
</para>
<para lang="en">
improved performance when using the "hash" and "ip_hash" directives
with the "zone" directive.
</para>
</change>

<change type="feature">
<para lang="ru">
параметр reuseport директивы listen
теперь использует SO_REUSEPORT_LB на FreeBSD 12.
</para>
<para lang="en">
the "reuseport" parameter of the "listen" directive
now uses SO_REUSEPORT_LB on FreeBSD 12.
</para>
</change>

<change type="bugfix">
<para lang="ru">
HTTP/2 server push не работал, если SSL терминировался прокси-сервером
перед nginx'ом.
</para>
<para lang="en">
HTTP/2 server push did not work if SSL was terminated by a proxy server
in front of nginx.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива tcp_nopush всегда использовалась для соединений к бэкендам.
</para>
<para lang="en">
the "tcp_nopush" directive was always used on backend connections.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при отправке сохранённого на диск тела запроса на gRPC-бэкенд
могли возникать ошибки.
</para>
<para lang="en">
sending a disk-buffered request body to a gRPC backend
might fail.
</para>
</change>

</changes>


<changes ver="1.15.0" date="2018-06-05">

<change type="change">
<para lang="ru">
директива "ssl" теперь считается устаревшей;
вместо неё следует использовать параметр ssl директивы listen.
</para>
<para lang="en">
the "ssl" directive is deprecated;
the "ssl" parameter of the "listen" directive should be used instead.
</para>
</change>

<change type="change">
<para lang="ru">
теперь при использовании директивы listen с параметром ssl
nginx определяет отсутствие SSL-сертификатов при тестировании конфигурации.
</para>
<para lang="en">
now nginx detects missing SSL certificates during configuration testing
when using the "ssl" parameter of the "listen" directive.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь модуль stream умеет обрабатывать
несколько входящих UDP-пакетов от клиента в рамках одной сессии.
</para>
<para lang="en">
now the stream module can handle
multiple incoming UDP datagrams from a client within a single session.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве proxy_cache_valid
можно было указать некорректный код ответа.
</para>
<para lang="en">
it was possible to specify an incorrect response code
in the "proxy_cache_valid" directive.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
логгирование в syslog останавливалось при изменении локального IP-адреса.
</para>
<para lang="en">
logging to syslog stopped on local IP address changes.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался компилятором clang, если был установлен CUDA SDK;
ошибка появилась в 1.13.8.
</para>
<para lang="en">
nginx could not be built by clang with CUDA SDK installed;
the bug had appeared in 1.13.8.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании unix domain listen-сокетов на FreeBSD
в процессе обновления исполняемого файла
в логе могли появляться сообщения "getsockopt(TCP_FASTOPEN) ... failed".
</para>
<para lang="en">
"getsockopt(TCP_FASTOPEN) ... failed" messages might appear in logs
during binary upgrade
when using unix domain listen sockets on FreeBSD.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
при использовании директивы limit_req
заданная скорость обработки запросов могла не соблюдаться.
</para>
<para lang="en">
request processing rate might exceed configured rate
when using the "limit_req" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке адресов клиентов при использовании unix domain listen-сокетов
для работы с датаграммами на Linux.
</para>
<para lang="en">
in handling of client addresses when using unix domain listen sockets
to work with datagrams on Linux.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке ошибок выделения памяти.
</para>
<para lang="en">
in memory allocation error handling.
</para>
</change>

</changes>


<changes ver="1.13.12" date="2018-04-10">

<change type="bugfix">
<para lang="ru">
при возврате большого ответа
соединения с gRPC-бэкендами могли неожиданно закрываться.
</para>
<para lang="en">
connections with gRPC backends might be closed unexpectedly
when returning a large response.
</para>
</change>

</changes>


<changes ver="1.13.11" date="2018-04-03">

<change type="feature">
<para lang="ru">
параметр proxy_protocol директивы listen
теперь поддерживает протокол PROXY версии 2.
</para>
<para lang="en">
the "proxy_protocol" parameter of the "listen" directive
now supports the PROXY protocol version 2.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался с OpenSSL 1.1.1 статически на Linux.
</para>
<para lang="en">
nginx could not be built with OpenSSL 1.1.1 statically on Linux.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в параметрах http_404, http_500 и им подобных
директивы proxy_next_upstream.
</para>
<para lang="en">
in the "http_404", "http_500", etc. parameters
of the "proxy_next_upstream" directive.
</para>
</change>

</changes>


<changes ver="1.13.10" date="2018-03-20">

<change type="feature">
<para lang="ru">
теперь параметр set в SSI-директиве include
позволяет сохранять в переменную любые ответы;
максимальный размер ответа задаётся директивой subrequest_output_buffer_size.
</para>
<para lang="en">
the "set" parameter of the "include" SSI directive now allows
writing arbitrary responses to a variable;
the "subrequest_output_buffer_size" directive defines maximum response size.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь nginx использует вызов clock_gettime(CLOCK_MONOTONIC), если он доступен,
что позволяет избежать некорректного срабатывания таймаутов
при изменениях системного времени.
</para>
<para lang="en">
now nginx uses clock_gettime(CLOCK_MONOTONIC) if available,
to avoid timeouts being incorrectly triggered
on system time changes.
</para>
</change>

<change type="feature">
<para lang="ru">
параметр "escape=none" директивы log_format.<br/>
Спасибо Johannes Baiter и Calin Don.
</para>
<para lang="en">
the "escape=none" parameter of the "log_format" directive.<br/>
Thanks to Johannes Baiter and Calin Don.
</para>
</change>

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

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

<change type="bugfix">
<para lang="ru">
в обработке ошибок выделения памяти в директиве geo.
</para>
<para lang="en">
in memory allocation error handling in the "geo" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании переменных в директиве auth_basic_user_file
в лог мог выводиться символ '\0'.<br/>
Спасибо Вадиму Филимонову.
</para>
<para lang="en">
when using variables in the "auth_basic_user_file" directive
a null character might appear in logs.<br/>
Thanks to Vadim Filimonov.
</para>
</change>

</changes>


<changes ver="1.13.9" date="2018-02-20">

<change type="feature">
<para lang="ru">
поддержка HTTP/2 server push;
директивы http2_push и http2_push_preload.
</para>
<para lang="en">
HTTP/2 server push support;
the "http2_push" and "http2_push_preload" directives.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
при использовании директивы ssl_verify_client
в рабочем процессе мог произойти segmentation fault,
если в виртуальном сервере не был указан SSL-сертификат.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if the "ssl_verify_client" directive was used
and no SSL certificate was specified in a virtual server.
</para>
</change>

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

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

</changes>


<changes ver="1.13.8" date="2017-12-26">

<change type="feature">
<para lang="ru">
теперь при использовании параметра transparent директив proxy_bind,
fastcgi_bind, memcached_bind, scgi_bind и uwsgi_bind
nginx автоматически сохраняет capability CAP_NET_RAW в рабочих процессах.
</para>
<para lang="en">
now nginx automatically preserves the CAP_NET_RAW capability in worker processes
when using the "transparent" parameter of the "proxy_bind",
"fastcgi_bind", "memcached_bind", "scgi_bind", and "uwsgi_bind" directives.
</para>
</change>

<change type="feature">
<para lang="ru">
улучшения в определении размера строки кэша процессора.<br/>
Спасибо Debayan Ghosh.
</para>
<para lang="en">
improved CPU cache line size detection.<br/>
Thanks to Debayan Ghosh.
</para>
</change>

<change type="feature">
<para lang="ru">
новые директивы в скриптах подсветки синтаксиса для vim.<br/>
Спасибо Геннадию Махомеду.
</para>
<para lang="en">
new directives in vim syntax highlighting scripts.<br/>
Thanks to Gena Makhomed.
</para>
</change>

<change type="bugfix">
<para lang="ru">
процедура обновления исполняемого файла не работала,
если после завершения родительского процесса
новым родительским процессом nginx'а становился процесс с PID, отличным от 1.
</para>
<para lang="en">
binary upgrade refused to work
if nginx was re-parented to a process with PID different from 1
after its parent process has finished.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_autoindex_module неправильно обрабатывал запросы с телом.
</para>
<para lang="en">
the ngx_http_autoindex_module incorrectly handled requests with bodies.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
при использовании "proxy_buffering off" часть ответа могла буферизироваться,
если клиентское соединение использовало SSL.<br/>
Спасибо Patryk Lesiewicz.
</para>
<para lang="en">
some parts of a response might be buffered when using "proxy_buffering off"
if the client connection used SSL.<br/>
Thanks to Patryk Lesiewicz.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
переменную вида "${name}" с именем в фигурных скобках
нельзя было использовать в начале параметра
не заключив весь параметр в кавычки.
</para>
<para lang="en">
it was not possible to start a parameter
with a variable in the "${name}" form with the name in curly brackets
without enclosing the parameter into single or double quotes.
</para>
</change>

</changes>


<changes ver="1.13.7" date="2017-11-21">

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

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если бэкенд возвращал ответ "101 Switching Protocols" на подзапрос.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
if a backend returned a "101 Switching Protocols" response to a subrequest.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если при переконфигурации изменялся размер зоны разделяемой памяти
и переконфигурация завершалась неудачно,
то в главном процессе происходил segmentation fault.
</para>
<para lang="en">
a segmentation fault occurred in a master process
if a shared memory zone size was changed during a reconfiguration
and the reconfiguration failed.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
nginx возвращал ошибку 500,
если в директиве xslt_stylesheet
были заданы параметры без использования переменных.
</para>
<para lang="en">
nginx returned the 500 error
if parameters without variables were specified
in the "xslt_stylesheet" directive.
</para>
</change>

<change type="workaround">
<para lang="ru">
при использовании варианта библиотеки zlib от Intel
в лог писались сообщения "gzip filter failed to use preallocated memory".
</para>
<para lang="en">
"gzip filter failed to use preallocated memory" alerts appeared in logs
when using a zlib library variant from Intel.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива worker_shutdown_timeout не работала
при использовании почтового прокси-сервера
и при проксировании WebSocket-соединений.
</para>
<para lang="en">
the "worker_shutdown_timeout" directive did not work
when using mail proxy and when proxying WebSocket connections.
</para>
</change>

</changes>


<changes ver="1.13.6" date="2017-10-10">

<change type="bugfix">
<para lang="ru">
при использовании директивы ssl_preread
в модуле stream не работало переключение на следующий бэкенд.
</para>
<para lang="en">
switching to the next upstream server in the stream module did not work
when using the "ssl_preread" directive.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
nginx не поддерживал даты после 2038 года
на 32-битных платформах с 64-битным time_t.
</para>
<para lang="en">
nginx did not support dates after the year 2038
on 32-bit platforms with 64-bit time_t.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке дат до 1970 года и после 10000 года.
</para>
<para lang="en">
in handling of dates prior to the year 1970 and after the year 10000.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле stream таймауты ожидания UDP-пакетов от бэкендов
не логгировались или логгировались на уровне info вместо error.
</para>
<para lang="en">
in the stream module timeouts waiting for UDP datagrams from upstream servers
were not logged or logged at the "info" level instead of "error".
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании HTTP/2 nginx мог вернуть ошибку 400,
не указав в логе причину.
</para>
<para lang="en">
when using HTTP/2 nginx might return the 400 response
without logging the reason.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке повреждённых файлов кэша.
</para>
<para lang="en">
in processing of corrupted cache files.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при кэшировании ошибок, перехваченных error_page,
не учитывались заголовки управления кэшированием.
</para>
<para lang="en">
cache control headers were ignored
when caching errors intercepted by error_page.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании HTTP/2 тело запроса могло быть повреждено.
</para>
<para lang="en">
when using HTTP/2 client request body might be corrupted.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке адресов клиентов при использовании unix domain сокетов.
</para>
<para lang="en">
in handling of client addresses when using unix domain sockets.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директивы "hash ... consistent" в блоке upstream
nginx нагружал процессор, если использовались большие веса
и все или почти все бэкенды были недоступны.
</para>
<para lang="en">
nginx hogged CPU
when using the "hash ... consistent" directive in the upstream block
if large weights were used and all or most of the servers were unavailable.
</para>
</change>

</changes>


<changes ver="1.13.5" date="2017-09-05">

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

<change type="bugfix">
<para lang="ru">
директива ssl_session_ticket_key и параметр include директивы geo
не работали на Windows.
</para>
<para lang="en">
the "ssl_session_ticket_key" directive and
the "include" parameter of the "geo" directive did not work on Windows.
</para>
</change>

<change type="bugfix">
<para lang="ru">
на 32-битных платформах
при запросе более 4 гигабайт с помощью нескольких диапазонов
возвращалась некорректная длина ответа.
</para>
<para lang="en">
incorrect response length was returned
on 32-bit platforms when requesting more than 4 gigabytes
with multiple ranges.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива "expires modified" и
обработка строки If-Range заголовка запроса
не учитывали время последнего изменения ответа,
если использовалось проксирование без кэширования.
</para>
<para lang="en">
the "expires modified" directive and
processing of the "If-Range" request header line
did not use the response last modification time
if proxying without caching was used.
</para>
</change>

</changes>


<changes ver="1.13.4" date="2017-08-08">

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

<change type="bugfix">
<para lang="ru">
клиентские соединения могли сбрасываться при тестировании конфигурации,
если использовался параметр reuseport директивы listen на Linux.
</para>
<para lang="en">
client connections might be dropped during configuration testing
when using the "reuseport" parameter of the "listen" directive on Linux.
</para>
</change>

<change type="bugfix">
<para lang="ru">
тело запроса могло быть недоступно в подзапросах,
если оно было сохранено в файл и использовалось проксирование.
</para>
<para lang="en">
request body might not be available in subrequests
if it was saved to a file and proxying was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
очистка кэша по max_size не работала на Windows.
</para>
<para lang="en">
cleaning cache based on the "max_size" parameter did not work on Windows.
</para>
</change>

<change type="bugfix">
<para lang="ru">
любое выделение разделяемой памяти на Windows требовало 4096 байт памяти.
</para>
<para lang="en">
any shared memory allocation required 4096 bytes on Windows.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директивы zone в блоке upstream на Windows
рабочий процесс мог завершаться аварийно.
</para>
<para lang="en">
nginx worker might be terminated abnormally
when using the "zone" directive inside the "upstream" block on Windows.
</para>
</change>

</changes>


<changes ver="1.13.3" date="2017-07-11">

<change type="security">
<para lang="ru">
специально созданный запрос мог вызвать целочисленное переполнение
в range-фильтре и последующую некорректную обработку запрошенных диапазонов,
что потенциально могло привести к утечке конфиденциальной информации
(CVE-2017-7529).
</para>
<para lang="en">
a specially crafted request might result in an integer overflow
and incorrect processing of ranges in the range filter,
potentially resulting in sensitive information leak
(CVE-2017-7529).
</para>
</change>

</changes>


<changes ver="1.13.2" date="2017-06-27">

<change type="change">
<para lang="ru">
теперь при запросе диапазона, начинающегося с 0, из пустого файла
nginx возвращает ответ 200 вместо 416.
</para>
<para lang="en">
nginx now returns 200 instead of 416
when a range starting with 0 is requested from an empty file.
</para>
</change>

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

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

<change type="bugfix">
<para lang="ru">
nginx не собирался под MSYS2 / MinGW 64-bit.<br/>
Спасибо Orgad Shaneh.
</para>
<para lang="en">
nginx could not be built under MSYS2 / MinGW 64-bit.<br/>
Thanks to Orgad Shaneh.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании SSI с большим количеством подзапросов
и proxy_pass с переменными
в рабочем процессе мог произойти segmentation fault.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
when using SSI with many includes
and proxy_pass with variables.
</para>
</change>

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

</changes>


<changes ver="1.13.1" date="2017-05-30">

<change type="feature">
<para lang="ru">
теперь в качестве параметра директивы set_real_ip_from
можно указывать имя хоста.
</para>
<para lang="en">
now a hostname can be used
as the "set_real_ip_from" directive parameter.
</para>
</change>

<change type="feature">
<para lang="ru">
улучшения в скриптах подсветки синтаксиса для vim.
</para>
<para lang="en">
vim syntax highlighting scripts improvements.
</para>
</change>

<change type="feature">
<para lang="ru">
директива worker_cpu_affinity теперь работает на DragonFly BSD.<br/>
Спасибо Sepherosa Ziehau.
</para>
<para lang="en">
the "worker_cpu_affinity" directive now works on DragonFly BSD.<br/>
Thanks to Sepherosa Ziehau.
</para>
</change>

<change type="bugfix">
<para lang="ru">
SSL renegotiation в соединениях к бэкендам
не работал при использовании OpenSSL до 1.1.0.
</para>
<para lang="en">
SSL renegotiation on backend connections
did not work when using OpenSSL before 1.1.0.
</para>
</change>

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

<change type="workaround">
<para lang="ru">
теперь cache manager пропускает заблокированные записи
при очистке кэша по max_size.
</para>
<para lang="en">
now cache manager ignores long locked cache entries
when cleaning cache based on the "max_size" parameter.
</para>
</change>

<change type="bugfix">
<para lang="ru">
клиентские SSL-соединения сразу закрывались, если использовался
отложенный accept и параметр proxy_protocol директивы listen.
</para>
<para lang="en">
client SSL connections were immediately closed if deferred accept
and the "proxy_protocol" parameter of the "listen" directive were used.
</para>
</change>

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

<change type="workaround">
<para lang="ru">
теперь директива tcp_nodelay
устанавливает опцию TCP_NODELAY перед SSL handshake.
</para>
<para lang="en">
now the "tcp_nodelay" directive
sets the TCP_NODELAY option before an SSL handshake.
</para>
</change>

</changes>


<changes ver="1.13.0" date="2017-04-25">

<change type="change">
<para lang="ru">
теперь SSL renegotiation допускается в соединениях к бэкендам.
</para>
<para lang="en">
SSL renegotiation is now allowed on backend connections.
</para>
</change>

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

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

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

<change type="feature">
<para lang="ru">
при логгировании сигналов теперь указывается PID отправившего сигнал процесса.
</para>
<para lang="en">
when logging signals nginx now logs PID of the process which sent the signal.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке ошибок выделения памяти.
</para>
<para lang="en">
in memory allocation error handling.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если сервер в модуле stream слушал на wildcard-адресе,
исходящий адрес ответного UDP-пакета
мог отличаться от адреса назначения исходного пакета.
</para>
<para lang="en">
if a server in the stream module listened on a wildcard address,
the source address of a response UDP datagram could differ
from the original datagram destination address.
</para>
</change>

</changes>


<changes ver="1.11.13" date="2017-04-04">

<change type="feature">
<para lang="ru">
параметр http_429 в директивах proxy_next_upstream, fastcgi_next_upstream,
scgi_next_upstream и uwsgi_next_upstream.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
the "http_429" parameter of the "proxy_next_upstream", "fastcgi_next_upstream",
"scgi_next_upstream", and "uwsgi_next_upstream" directives.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке ошибок выделения памяти.
</para>
<para lang="en">
in memory allocation error handling.
</para>
</change>

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

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

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

<change type="bugfix">
<para lang="ru">
при использовании 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 built 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.
</para>
</change>

<change type="change">
<para lang="ru">
теперь keepalive соединения после запросов POST не запрещаются для
MSIE 7.0+.<br/>
Спасибо Adam Lounds.
</para>
<para lang="en">
now keepalive connections after POST requests are not disabled for
MSIE 7.0+.<br/>
Thanks to Adam Lounds.
</para>
</change>

<change type="workaround">
<para lang="ru">
теперь keepalive соединения запрещены для Safari.<br/>
Спасибо Joshua Sierles.
</para>
<para lang="en">
now keepalive connections are disabled for Safari.<br/>
Thanks to Joshua Sierles.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если проксированный или FastCGI запрос внутренне перенаправлялся
в другой проксированный или FastCGI location, то переменная
$upstream_response_time могла иметь ненормально большое значение;
ошибка появилась в 0.8.7.
</para>
<para lang="en">
if a proxied or FastCGI request was internally redirected
to another proxied or FastCGI location,
then $upstream_response_time variable may have abnormally large value;
the bug had appeared in 0.8.7.
</para>
</change>

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

</changes>


<changes ver="0.8.32" date="2010-01-11">

<change type="bugfix">
<para lang="ru">
ошибки при использовании кодировки UTF-8 в ngx_http_autoindex_module.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
UTF-8 encoding usage in the ngx_http_autoindex_module.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
именованные выделения в регулярных выражениях работали только для
двух переменных.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
regular expression named captures worked for two names only.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
теперь в строке заголовка запроса "Host" используется имя "localhost",
если в директиве auth_http указан unix domain сокет.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
now the "localhost" name is used in the "Host" request header line,
if an unix domain socket is defined in the "auth_http" directive.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не поддерживал передачу chunk'ами для 201-ых ответов.<br/>
Спасибо Julian Reich.
</para>
<para lang="en">
nginx did not support chunked transfer encoding for 201 responses.<br/>
Thanks to Julian Reich.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если директива "expires modified" выставляла дату в прошлом, то в строке
заголовка ответа "Cache-Control" выдавалось отрицательное число.<br/>
Спасибо Алексею Капранову.
</para>
<para lang="en">
if the "expires modified" set date in the past, then a negative number
was set in the "Cache-Control" response header line.<br/>
Thanks to Alex Kapranoff.
</para>
</change>

</changes>


<changes ver="0.8.31" date="2009-12-23">

<change type="feature">
<para lang="ru">
теперь директива error_page может перенаправлять ответы со статусом 301 и 302.
</para>
<para lang="en">
now the "error_page" directive may redirect the 301 and 302 responses.
</para>
</change>

<change type="feature">
<para lang="ru">
переменные $geoip_city_continent_code, $geoip_latitude и $geoip_longitude.<br/>
Спасибо Arvind Sundararajan.
</para>
<para lang="en">
the $geoip_city_continent_code, $geoip_latitude, and $geoip_longitude
variables.<br/>
Thanks to Arvind Sundararajan.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_http_image_filter_module теперь всегда удаляет
EXIF и другие данные, если они занимают больше 5% в JPEG-файле.
</para>
<para lang="en">
now the ngx_http_image_filter_module deletes always EXIF and other
application specific data if the data consume more than 5% of a JPEG file.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx закрывал соединение при запросе закэшированного
ответа с пустым телом.<br/>
Спасибо Piotr Sikora.
</para>
<para lang="en">
nginx closed a connection if a cached response had an empty body.<br/>
Thanks to Piotr Sikora.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx мог не собираться gcc 4.x при использовании оптимизации -O2 и выше.<br/>
Спасибо Максиму Дунину и Денису Латыпову.
</para>
<para lang="en">
nginx might not be built by gcc 4.x if the -O2 or higher optimization option
was used.<br/>
Thanks to Maxim Dounin and Denis F. Latypoff.
</para>
</change>

<change type="bugfix">
<para lang="ru">
регулярные выражения в location всегда тестировались с учётом регистра;
ошибка появилась в 0.8.25.
</para>
<para lang="en">
regular expressions in location were always tested in case-sensitive mode;
the bug had appeared in 0.8.25.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx кэшировал 304 ответ, если в заголовке проксируемого запроса
была строка "If-None-Match".<br/>
Спасибо Tim Dettrick и David Kostal.
</para>
<para lang="en">
nginx cached a 304 response if there was the "If-None-Match" header line
in a proxied request.<br/>
Thanks to Tim Dettrick and David Kostal.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx/Windows пытался дважды удалить временный файл
при перезаписи уже существующего файла.
</para>
<para lang="en">
nginx/Windows tried to delete a temporary file twice
if the file should replace an already existent file.
</para>
</change>

</changes>


<changes ver="0.8.30" date="2009-12-15">

<change type="change">
<para lang="ru">
теперь по умолчанию размер буфера директивы large_client_header_buffers
равен 8K.<br/>
Спасибо Andrew Cholakian.
</para>
<para lang="en">
now the default buffer size of the "large_client_header_buffers"
directive is 8K.<br/>
Thanks to Andrew Cholakian.
</para>
</change>

<change type="feature">
<para lang="ru">
файл conf/fastcgi.conf для простых конфигураций FastCGI.
</para>
<para lang="en">
the conf/fastcgi.conf for simple FastCGI configurations.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx/Windows пытался дважды переименовать временный файл
при перезаписи уже существующего файла.
</para>
<para lang="en">
nginx/Windows tried to rename a temporary file twice if the file
should replace an already existent file.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки double free or corruption, возникающей, если имя хоста не было найдено;
ошибка появилась в 0.8.22.<br/>
Спасибо Константину Свисту.
</para>
<para lang="en">
of "double free or corruption" error issued if host could not be resolved;
the bug had appeared in 0.8.22.<br/>
Thanks to Konstantin Svist.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в использовании libatomic на некоторых платформах.<br/>
Спасибо W-Mark Kubacki.
</para>
<para lang="en">
in libatomic usage on some platforms.<br/>
Thanks to W-Mark Kubacki.
</para>
</change>

</changes>


<changes ver="0.8.29" date="2009-11-30">

<change type="change">
<para lang="ru">
теперь для проксируемых ответов HTTP/0.9 в лог пишется код ответа "009".
</para>
<para lang="en">
now the "009" status code is written to an access log for proxied HTTP/0.9
responses.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы addition_types, charset_types, gzip_types, ssi_types,
sub_filter_types и xslt_types поддерживают параметр "*".
</para>
<para lang="en">
the "addition_types", "charset_types", "gzip_types", "ssi_types",
"sub_filter_types", and "xslt_types" directives support an "*" parameter.
</para>
</change>

<change type="feature">
<para lang="ru">
использование встроенных атомарных операций GCC 4.1+.<br/>
Спасибо W-Mark Kubacki.
</para>
<para lang="en">
GCC 4.1+ built-in atomic operations usage.<br/>
Thanks to W-Mark Kubacki.
</para>
</change>

<change type="feature">
<para lang="ru">
параметр --with-libatomic[=DIR] в configure.<br/>
Спасибо W-Mark Kubacki.
</para>
<para lang="en">
the --with-libatomic[=DIR] option in the configure.<br/>
Thanks to W-Mark Kubacki.
</para>
</change>

<change type="bugfix">
<para lang="ru">
listen unix domain сокет имели ограниченные права доступа.
</para>
<para lang="en">
listen unix domain socket had limited access rights.
</para>
</change>

<change type="bugfix">
<para lang="ru">
закэшированные ответы HTTP/0.9 неправильно обрабатывались.
</para>
<para lang="en">
cached HTTP/0.9 responses were handled incorrectly.
</para>
</change>

<change type="bugfix">
<para lang="ru">
именованные выделения в регулярных выражениях, заданные как "?P&lt;...&gt;",
не работали в директиве server_name.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
regular expression named captures given by "?P&lt;...&gt;" did not work
in a "server_name" directive.<br/>
Thanks to Maxim Dounin.
</para>
</change>

</changes>


<changes ver="0.8.28" date="2009-11-23">

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

</changes>


<changes ver="0.8.27" date="2009-11-17">

<change type="bugfix">
<para lang="ru">
регулярные выражения не работали в nginx/Windows;
ошибка появилась в 0.8.25.
</para>
<para lang="en">
regular expressions did not work in nginx/Windows;
the bug had appeared in 0.8.25.
</para>
</change>

</changes>


<changes ver="0.8.26" date="2009-11-16">

<change type="bugfix">
<para lang="ru">
ошибки при использовании выделений в директиве rewrite;
ошибка появилась в 0.8.25.
</para>
<para lang="en">
in captures usage in "rewrite" directive;
the bug had appeared in 0.8.25.
</para>
</change>

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

</changes>


<changes ver="0.8.25" date="2009-11-16">

<change type="change">
<para lang="ru">
теперь в лог ошибок не пишется сообщение, если переменная не найдена
с помощью метода $r->variable().
</para>
<para lang="en">
now no message is written in an error log if a variable is not found by
$r->variable() method.
</para>
</change>

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

<change type="feature">
<para lang="ru">
именованные выделения в регулярных выражениях.
</para>
<para lang="en">
regular expression named captures.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь при использовании переменных в директиве proxy_pass не требуется
задавать URI.
</para>
<para lang="en">
now URI part is not required a "proxy_pass" directive if variables are used.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь директива msie_padding работает и для Chrome.
</para>
<para lang="en">
now the "msie_padding" directive works for Chrome too.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в рабочем процессе происходил segmentation fault при недостатке памяти;
ошибка появилась в 0.8.18.
</para>
<para lang="en">
a segmentation fault occurred in a worker process on low memory condition;
the bug had appeared in 0.8.18.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx передавал сжатые ответы клиентам, не поддерживающим сжатие,
при настройках gzip_static on и gzip_vary off;
ошибка появилась в 0.8.16.
</para>
<para lang="en">
nginx sent gzipped responses to clients those do not support gzip,
if "gzip_static on" and "gzip_vary off";
the bug had appeared in 0.8.16.
</para>
</change>

</changes>


<changes ver="0.8.24" date="2009-11-11">

<change type="bugfix">
<para lang="ru">
nginx всегда добавлял строку "Content-Encoding: gzip" в заголовок
304-ых ответов модуля ngx_http_gzip_static_module.
</para>
<para lang="en">
nginx always added "Content-Encoding: gzip" response header line
in 304 responses sent by ngx_http_gzip_static_module.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
параметр "unix:" в директиве set_real_ip_from неправильно наследовался
с предыдущего уровня.
</para>
<para lang="en">
the "unix:" parameter of the "set_real_ip_from" directive inherited
incorrectly from previous level.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в resolver'е при определении пустого имени.
</para>
<para lang="en">
in resolving empty name.
</para>
</change>

</changes>


<changes ver="0.8.23" date="2009-11-11">

<change type="security">
<para lang="ru">
теперь SSL/TLS renegotiation запрещён.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
now SSL/TLS renegotiation is disabled.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
listen unix domain сокет не наследовался во время обновления без перерыва.
</para>
<para lang="en">
listen unix domain socket did not inherit while online upgrade.
</para>
</change>

<change type="bugfix">
<para lang="ru">
параметр "unix:" в директиве set_real_ip_from не работал без ещё
одной директивы с любым IP-адресом.
</para>
<para lang="en">
the "unix:" parameter of the "set_real_ip_from" directive did not without
yet another directive with any IP address.
</para>
</change>

<change type="bugfix">
<para lang="ru">
segmentation fault и зацикливания в resolver'е.
</para>
<para lang="en">
segmentation fault and infinite looping in resolver.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в resolver'е.<br/>
Спасибо Артёму Бохану.
</para>
<para lang="en">
in resolver.<br/>
Thanks to Artem Bokhan.
</para>
</change>

</changes>


<changes ver="0.8.22" date="2009-11-03">

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

<change type="feature">
<para lang="ru">
директивы access и deny поддерживают IPv6.
</para>
<para lang="en">
the "access" and the "deny" directives support IPv6.
</para>
</change>

<change type="feature">
<para lang="ru">
директива set_real_ip_from поддерживает IPv6 адреса в заголовках запроса.
</para>
<para lang="en">
the "set_real_ip_from" directive supports IPv6 addresses in request headers.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
nginx не удалял unix domain сокет после тестирования конфигурации.
</para>
<para lang="en">
nginx did not delete unix domain socket after configuration testing.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx удалял unix domain сокет во время обновления без перерыва.
</para>
<para lang="en">
nginx deleted unix domain socket while online upgrade.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault
при использовании limit_rate в HTTPS сервере.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
a segmentation fault might occur in a worker process,
if limit_rate was used in HTTPS server.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при записи в лог переменной $limit_rate
в рабочем процессе происходил segmentation fault.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
a segmentation fault might occur in a worker process
while $limit_rate logging.<br/>
Thanks to Maxim Dounin.
</para>
</change>

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

</changes>


<changes ver="0.8.21" date="2009-10-26">

<change type="feature">
<para lang="ru">
теперь ключ -V показывает статус поддержки TLS SNI.
</para>
<para lang="en">
now the "-V" switch shows TLS SNI support.
</para>
</change>

<change type="feature">
<para lang="ru">
директива listen модуля HTTP поддерживает unix domain сокеты.<br/>
Спасибо Hongli Lai.
</para>
<para lang="en">
the "listen" directive of the HTTP module supports unix domain sockets.<br/>
Thanks to Hongli Lai.
</para>
</change>

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

<change type="feature">
<para lang="ru">
теперь параметр "default" не обязателен для установки параметров listen-сокета.
</para>
<para lang="en">
now a "default" parameter is not required to set listen socket options.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не поддерживал даты в 2038 году на 32-битных платформах;
</para>
<para lang="en">
nginx did not support dates in 2038 year on 32-bit platforms;
</para>
</change>

<change type="bugfix">
<para lang="ru">
утечки сокетов;
ошибка появилась в 0.8.11.
</para>
<para lang="en">
socket leak;
the bug had appeared in 0.8.11.
</para>
</change>

</changes>


<changes ver="0.8.20" date="2009-10-14">

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

<change type="bugfix">
<para lang="ru">
модуль ngx_http_autoindex_module не показывал последний слэш для линков
на каталоги;
ошибка появилась в 0.7.15.
</para>
<para lang="en">
the ngx_http_autoindex_module did not show the trailing slash in links to
a directory;
the bug had appeared in 0.7.15.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не закрывал лог, заданный параметром конфигурации --error-log-path;
ошибка появилась в 0.7.53.
</para>
<para lang="en">
nginx did not close a log file set by the --error-log-path configuration option;
the bug had appeared in 0.7.53.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не считал запятую разделителем в строке "Cache-Control" в
заголовке ответа бэкенда.
</para>
<para lang="en">
nginx did not treat a comma as separator in the "Cache-Control" backend response
header line.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx/Windows мог не создать временный файл, файл в кэше или файл
с помощью директив proxy/fastcgi_store, если рабочий процесс не имел
достаточно прав для работы с каталогами верхнего уровня.
</para>
<para lang="en">
nginx/Windows might not create temporary file, a cache file, or
"proxy/fastcgi_store"d file if a worker had no enough access rights
for top level directories.
</para>
</change>

<change type="bugfix">
<para lang="ru">
строки "Set-Cookie" и "P3P" в заголовке ответа FastCGI-сервера не скрывались
при кэшировании, если не использовались директивы fastcgi_hide_header
с любыми параметрами.
</para>
<para lang="en">
the "Set-Cookie" and "P3P" FastCGI response header lines were not hidden
while caching if no "fastcgi_hide_header" directives were used with
any parameters.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx неверно считал размер кэша на диске.
</para>
<para lang="en">
nginx counted incorrectly disk cache size.
</para>
</change>

</changes>


<changes ver="0.8.19" date="2009-10-06">

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

<change type="change">
<para lang="ru">
теперь по умолчанию используются следующие шифры SSL:
"ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM".
</para>
<para lang="en">
now default SSL ciphers are "ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM".
</para>
</change>

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

</changes>


<changes ver="0.8.18" date="2009-10-06">

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

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

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

<change type="bugfix">
<para lang="ru">
теперь директива limit_req соответствует алгоритму leaky bucket.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
now "limit_req" directive conforms to the leaky bucket algorithm.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не работал на Linux/sparc.<br/>
Спасибо Marcus Ramberg.
</para>
<para lang="en">
nginx did not work on Linux/sparc.<br/>
Thanks to Marcus Ramberg.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx слал символ '\0' в строке "Location" в заголовке в ответе на запрос
MKCOL.<br/>
Спасибо Xie Zhenye.
</para>
<para lang="en">
nginx sent '\0' in a "Location" response header line on MKCOL request.<br/>
Thanks to Xie Zhenye.
</para>
</change>

<change type="bugfix">
<para lang="ru">
вместо кода ответа 499 в лог записывался код 0;
ошибка появилась в 0.8.11.
</para>
<para lang="en">
zero status code was logged instead of 499 status code;
the bug had appeared in 0.8.11.
</para>
</change>

<change type="bugfix">
<para lang="ru">
утечки сокетов;
ошибка появилась в 0.8.11.
</para>
<para lang="en">
socket leak;
the bug had appeared in 0.8.11.
</para>
</change>

</changes>


<changes ver="0.8.17" date="2009-09-28">

<change type="security">
<para lang="ru">
теперь символы "/../" запрещены в строке "Destination" в заголовке запроса.
</para>
<para lang="en">
now "/../" are disabled in "Destination" request header line.
</para>
</change>

<change type="change">
<para lang="ru">
теперь значение переменной $host всегда в нижнем регистре.
</para>
<para lang="en">
now $host variable value is always low case.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
утечки сокетов;
ошибка появилась в 0.8.11.
</para>
<para lang="en">
socket leak;
the bug had appeared in 0.8.11.
</para>
</change>

</changes>


<changes ver="0.8.16" date="2009-09-22">

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

<change type="bugfix">
<para lang="ru">
директива "addition_types" была неверно названа "addtion_types".
</para>
<para lang="en">
"addition_types" directive was incorrectly named "addtion_types".
</para>
</change>

<change type="bugfix">
<para lang="ru">
порчи кэша resolver'а.<br/>
Спасибо Matthew Dempsky.
</para>
<para lang="en">
resolver cache poisoning.<br/>
Thanks to Matthew Dempsky.
</para>
</change>

<change type="bugfix">
<para lang="ru">
утечки памяти в resolver'е.<br/>
Спасибо Matthew Dempsky.
</para>
<para lang="en">
memory leak in resolver.<br/>
Thanks to Matthew Dempsky.
</para>
</change>

<change type="bugfix">
<para lang="ru">
неверная строка запроса в переменной $request записывалась в access_log
только при использовании error_log на уровне info или debug.
</para>
<para lang="en">
invalid request line in $request variable was written in access_log
only if error_log was set to "info" or "debug" level.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в поддержке альфа-канала PNG в модуле ngx_http_image_filter_module.
</para>
<para lang="en">
in PNG alpha-channel support in the ngx_http_image_filter_module.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx всегда добавлял строку "Vary: Accept-Encoding" в заголовок ответа,
если обе директивы gzip_static и gzip_vary были включены.
</para>
<para lang="en">
nginx always added "Vary: Accept-Encoding" response header line,
if both "gzip_static" and "gzip_vary" were on.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в поддержке кодировки UTF-8 директивой try_files в nginx/Windows.
</para>
<para lang="en">
in UTF-8 encoding support by "try_files" directive in nginx/Windows.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки при использовании post_action;
ошибка появилась в 0.8.11.<br/>
Спасибо Игорю Артемьеву.
</para>
<para lang="en">
in "post_action" directive usage;
the bug had appeared in 0.8.11.<br/>
Thanks to Igor Artemiev.
</para>
</change>

</changes>


<changes ver="0.8.15" date="2009-09-14">

<change type="security">
<para lang="ru">
при обработке специально созданного запроса
в рабочем процессе мог произойти segmentation fault.<br/>
Спасибо Chris Ries.
</para>
<para lang="en">
a segmentation fault might occur in worker process
while specially crafted request handling.<br/>
Thanks to Chris Ries.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если были описаны имена .domain.tld, .sub.domain.tld и .domain-some.tld,
то имя .sub.domain.tld попадало под маску .domain.tld.
</para>
<para lang="en">
if names .domain.tld, .sub.domain.tld, and .domain-some.tld were defined,
then the name .sub.domain.tld was matched by .domain.tld.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в поддержке прозрачности в модуле ngx_http_image_filter_module.
</para>
<para lang="en">
in transparency support in the ngx_http_image_filter_module.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в файловом AIO.
</para>
<para lang="en">
in file AIO.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки при использовании X-Accel-Redirect;
ошибка появилась в 0.8.11.
</para>
<para lang="en">
in X-Accel-Redirect usage;
the bug had appeared in 0.8.11.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки при использовании встроенного перла;
ошибка появилась в 0.8.11.
</para>
<para lang="en">
in embedded perl module;
the bug had appeared in 0.8.11.
</para>
</change>

</changes>


<changes ver="0.8.14" date="2009-09-07">

<change type="bugfix">
<para lang="ru">
устаревший закэшированный запрос мог залипнуть в состоянии "UPDATING".
</para>
<para lang="en">
an expired cached response might stick in the "UPDATING" state.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании error_log на уровне info или debug
в рабочем процессе мог произойти segmentation fault.<br/>
Спасибо Сергею Боченкову.
</para>
<para lang="en">
a segmentation fault might occur in worker process,
if error_log was set to info or debug level.<br/>
Thanks to Sergey Bochenkov.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки при использовании встроенного перла;
ошибка появилась в 0.8.11.
</para>
<para lang="en">
in embedded perl module;
the bug had appeared in 0.8.11.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива error_page не перенаправляла ошибку 413;
ошибка появилась в 0.6.10.
</para>
<para lang="en">
an "error_page" directive did not redirect a 413 error;
the bug had appeared in 0.6.10.
</para>
</change>

</changes>


<changes ver="0.8.13" date="2009-08-31">

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

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

</changes>


<changes ver="0.8.12" date="2009-08-31">

<change type="feature">
<para lang="ru">
параметр sendfile в директиве aio во FreeBSD.
</para>
<para lang="en">
the "sendfile" parameter in the "aio" directive on FreeBSD.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки при использовании try_files;
ошибка появилась в 0.8.11.
</para>
<para lang="en">
in try_files;
the bug had appeared in 0.8.11.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки при использовании memcached;
ошибка появилась в 0.8.11.
</para>
<para lang="en">
in memcached;
the bug had appeared in 0.8.11.
</para>
</change>

</changes>

<changes ver="0.8.11" date="2009-08-28">

<change type="change">
<para lang="ru">
теперь директива "gzip_disable msie6" не запрещает сжатие для
<nobr>MSIE 6.0 SV1.</nobr>
</para>
<para lang="en">
now directive "gzip_disable msie6" does not disable gzipping for
<nobr>MSIE 6.0 SV1.</nobr>
</para>
</change>

<change type="feature">
<para lang="ru">
поддержка файлового AIO во FreeBSD и Linux.
</para>
<para lang="en">
file AIO support on FreeBSD and Linux.
</para>
</change>

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

</changes>


<changes ver="0.8.10" date="2009-08-24">

<change type="bugfix">
<para lang="ru">
утечек памяти при использовании базы GeoIP City.
</para>
<para lang="en">
memory leaks if GeoIP City database was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки при копировании временных файлов в постоянное место хранения;
ошибка появилась в 0.8.9.
</para>
<para lang="en">
in copying temporary files to permanent storage area;
the bug had appeared in 0.8.9.
</para>
</change>

</changes>


<changes ver="0.8.9" date="2009-08-17">

<change type="feature">
<para lang="ru">
теперь стартовый загрузчик кэша работает в отдельном процесс;
это должно улучшить обработку больших кэшей.
</para>
<para lang="en">
now the start cache loader runs in a separate process;
this should improve large caches handling.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь временные файлы и постоянное место хранения могут располагаться
на разных файловых системах.
</para>
<para lang="en">
now temporary files and permanent storage area may reside at
different file systems.
</para>
</change>

</changes>


<changes ver="0.8.8" date="2009-08-10">

<change type="bugfix">
<para lang="ru">
в обработке заголовков ответа, разделённых в FastCGI-записях.
</para>
<para lang="en">
in handling FastCGI headers split in records.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если запрос обрабатывался в двух проксированных или FastCGI location'ах
и в первом из них использовалось кэширование,
то в рабочем процессе происходил segmentation fault;
ошибка появилась в 0.8.7.
</para>
<para lang="en">
a segmentation fault occurred in worker process,
if a request was handled in two proxied or FastCGIed locations
and a caching was enabled in the first location;
the bug had appeared in 0.8.7.
</para>
</change>

</changes>


<changes ver="0.8.7" date="2009-07-27">

<change type="change">
<para lang="ru">
минимальная поддерживаемая версия OpenSSL&mdash;0.9.7.
</para>
<para lang="en">
minimum supported OpenSSL version is 0.9.7.
</para>
</change>

<change type="change">
<para lang="ru">
параметр ask директивы ssl_verify_client изменён на параметр optional
и теперь он проверяет клиентский сертификат, если он был предложен.<br/>
Спасибо Brice Figureau.
</para>
<para lang="en">
the "ask" parameter of the "ssl_verify_client" directive was changed
to the "optional" parameter and now it checks a client certificate if it was
offered.<br/>
Thanks to Brice Figureau.
</para>
</change>

<change type="feature">
<para lang="ru">
переменная $ssl_client_verify.<br/>
Спасибо Brice Figureau.
</para>
<para lang="en">
the $ssl_client_verify variable.<br/>
Thanks to Brice Figureau.
</para>
</change>

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

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

<change type="feature">
<para lang="ru">
директива image_filter поддерживает переменные для задания размеров.
</para>
<para lang="en">
the "image_filter" directive supports variables for setting size.
</para>
</change>

<change type="bugfix">
<para lang="ru">
использование переменной $ssl_client_cert портило память;
ошибка появилась в 0.7.7.<br/>
Спасибо Сергею Журавлёву.
</para>
<para lang="en">
the $ssl_client_cert variable usage corrupted memory;
the bug had appeared in 0.7.7.<br/>
Thanks to Sergey Zhuravlev.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директивы proxy_pass_header и fastcgi_pass_header" не передавали клиенту
строки "X-Accel-Redirect", "X-Accel-Limit-Rate", "X-Accel-Buffering" и
"X-Accel-Charset" из заголовка ответа бэкенда.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
"proxy_pass_header" and "fastcgi_pass_header" directives did not pass to
a client the "X-Accel-Redirect", "X-Accel-Limit-Rate", "X-Accel-Buffering",
and "X-Accel-Charset" lines from backend response header.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке строк "Last-Modified" и "Accept-Ranges" в заголовке ответа бэкенда;
ошибка появилась в 0.7.44.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
in handling "Last-Modified" and "Accept-Ranges" backend response header lines;
the bug had appeared in 0.7.44.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки "[alert] zero size buf" при получении пустых ответы в подзапросах;
ошибка появилась в 0.8.5.
</para>
<para lang="en">
the "[alert] zero size buf" error if subrequest returns an empty response;
the bug had appeared in 0.8.5.
</para>
</change>

</changes>


<changes ver="0.8.6" date="2009-07-20">

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

<change type="bugfix">
<para lang="ru">
XSLT-фильтр мог выдавать ошибку "not well formed XML document" для
правильного документа.<br/>
Спасибо Kuramoto Eiji.
</para>
<para lang="en">
XSLT filter may fail with message "not well formed XML document"
for valid XML document.<br/>
Thanks to Kuramoto Eiji.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в MacOSX, Cygwin и nginx/Windows при проверке location'ов, заданных
регулярным выражением, теперь всегда делается сравнение без учёта
регистра символов.
</para>
<para lang="en">
now in MacOSX, Cygwin, and nginx/Windows locations given by a regular
expression are always tested in case insensitive mode.
</para>
</change>

<change type="bugfix">
<para lang="ru">
теперь nginx/Windows игнорирует точки в конце URI.<br/>
Спасибо Hugo Leisink.
</para>
<para lang="en">
now nginx/Windows ignores trailing dots in URI.<br/>
Thanks to Hugo Leisink.
</para>
</change>

<change type="bugfix">
<para lang="ru">
имя файла указанного в --conf-path игнорировалось при установке;
ошибка появилась в 0.6.6.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
name of file specified in --conf-path was not honored during installation;
the bug had appeared in 0.6.6.<br/>
Thanks to Maxim Dounin.
</para>
</change>

</changes>


<changes ver="0.8.5" date="2009-07-13">

<change type="bugfix">
<para lang="ru">
теперь nginx разрешает подчёркивания в методе запроса.
</para>
<para lang="en">
now nginx allows underscores in a request method.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании HTTP Basic-аутентификации на Windows
для неверных имени/пароля возвращалась 500-ая ошибка.
</para>
<para lang="en">
a 500 error code was returned for invalid login/password while HTTP
Basic authentication on Windows.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ответы модуля ngx_http_perl_module не работали в подзапросах.
</para>
<para lang="en">
ngx_http_perl_module responses did not work in subrequests.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_limit_req_module.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
in ngx_http_limit_req_module.<br/>
Thanks to Maxim Dounin.
</para>
</change>

</changes>


<changes ver="0.8.4" date="2009-06-22">

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

</changes>


<changes ver="0.8.3" date="2009-06-19">

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

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

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

<change type="bugfix">
<para lang="ru">
если использовался перехват 401 ошибки от бэкенда и бэкенд
не возвращал строку "WWW-Authenticate" в заголовке ответа,
то в рабочем процессе происходил segmentation fault.<br/>
Спасибо Евгению Мычло.
</para>
<para lang="en">
a segmentation fault occurred in worker process,
if a backend 401 error was intercepted and the backend did not set
the "WWW-Authenticate" response header line.<br/>
Thanks to Eugene Mychlo.
</para>
</change>

</changes>


<changes ver="0.8.2" date="2009-06-15">

<change type="bugfix">
<para lang="ru">
во взаимодействии open_file_cache и proxy/fastcgi кэша на старте.
</para>
<para lang="en">
in open_file_cache and proxy/fastcgi cache interaction on start up.
</para>
</change>

<change type="bugfix">
<para lang="ru">
open_file_cache мог кэшировать открытые файлы очень долго;
ошибка появилась в 0.7.4.
</para>
<para lang="en">
open_file_cache might cache open file descriptors too long;
the bug had appeared in 0.7.4.
</para>
</change>

</changes>


<changes ver="0.8.1" date="2009-06-08">

<change type="feature">
<para lang="ru">
параметр updating в директивах proxy_cache_use_stale и fastcgi_cache_use_stale.
</para>
<para lang="en">
the "updating" parameter in "proxy_cache_use_stale" and
"fastcgi_cache_use_stale" directives.
</para>
</change>

<change type="bugfix">
<para lang="ru">
строки "If-Modified-Since", "If-Range" и им подобные в заголовке запроса
клиента передавались бэкенду при кэшировании, если не использовалась
директива proxy_set_header с любыми параметрами.
</para>
<para lang="en">
the "If-Modified-Since", "If-Range", etc. client request header lines
were passed to backend while caching if no "proxy_set_header" directive
was used with any parameters.
</para>
</change>

<change type="bugfix">
<para lang="ru">
строки "Set-Cookie" и "P3P" в заголовке ответа бэкенда не скрывались
при кэшировании, если не использовались директивы
proxy_hide_header/fastcgi_hide_header с любыми параметрами.
</para>
<para lang="en">
the "Set-Cookie" and "P3P" response header lines were not hidden while caching
if no "proxy_hide_header/fastcgi_hide_header" directives were used with
any parameters.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_image_filter_module не понимал формат GIF87a.<br/>
Спасибо Денису Ильиных.
</para>
<para lang="en">
the ngx_http_image_filter_module did not support GIF87a format.<br/>
Thanks to Denis Ilyinyh.
</para>
</change>

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

</changes>


<changes ver="0.8.0" date="2009-06-02">

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

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

<change type="bugfix">
<para lang="ru">
XSLT-фильтр не работал в подзапросах.
</para>
<para lang="en">
XLST filter did not work in subrequests.
</para>
</change>

<change type="bugfix">
<para lang="ru">
обработке относительных путей в nginx/Windows.
</para>
<para lang="en">
in relative paths handling in nginx/Windows.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в proxy_store, fastcgi_store, proxy_cache и fastcgi_cache в nginx/Windows.
</para>
<para lang="en">
in proxy_store, fastcgi_store, proxy_cache, and fastcgi_cache in nginx/Windows.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке ошибок выделения памяти.<br/>
Спасибо Максиму Дунину и Кириллу Коринскому.
</para>
<para lang="en">
in memory allocation error handling.<br/>
Thanks to Maxim Dounin and Kirill A. Korinskiy.
</para>
</change>

</changes>


<changes ver="0.7.59" date="2009-05-25">

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

<change type="bugfix">
<para lang="ru">
утечки сокетов;
ошибка появилась в 0.7.25.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
socket leak;
the bug had appeared in 0.7.25.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании переменной $request_body
в рабочем процессе происходил segmentation fault,
если в запросе не было тела;
ошибка появилась в 0.7.58.
</para>
<para lang="en">
a segmentation fault occurred in worker process,
<nobr>if a request</nobr> had no body and the $request_body
variable was used;<br/>
the bug had appeared in 0.7.58.
</para>
</change>

<change type="bugfix">
<para lang="ru">
SSL-модули могли не собираться на Solaris и Linux;
ошибка появилась в 0.7.56.
</para>
<para lang="en">
the SSL modules might not built on Solaris and Linux;<br/>
the bug had appeared in 0.7.56.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ответы модуля ngx_http_xslt_filter_module не обрабатывались
SSI-, charset- и gzip-фильтрами.
</para>
<para lang="en">
ngx_http_xslt_filter_module responses were not handled by SSI, charset,
and gzip filters.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива charset не ставила кодировку для ответов модуля
ngx_http_gzip_static_module.
</para>
<para lang="en">
a "charset" directive did not set a charset to ngx_http_gzip_static_module
responses.
</para>
</change>

</changes>


<changes ver="0.7.58" date="2009-05-18">

<change type="feature">
<para lang="ru">
директива listen почтового прокси-сервера поддерживает IPv6.
</para>
<para lang="en">
a "listen" directive of the mail proxy module supports IPv6.
</para>
</change>

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

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

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

<change type="bugfix">
<para lang="ru">
в модуле ngx_http_autoindex_module в ссылках на имена файлов,
содержащих символ ":".
</para>
<para lang="en">
in ngx_http_autoindex_module in file name links
having a ":" symbol in the name.
</para>
</change>

<change type="bugfix">
<para lang="ru">
процедура "make upgrade" не работала;
ошибка появилась в 0.7.53.<br/>
Спасибо Денису Латыпову.
</para>
<para lang="en">
"make upgrade" procedure did not work;
the bug had appeared in 0.7.53.<br/>
Thanks to Denis F. Latypoff.
</para>
</change>

</changes>


<changes ver="0.7.57" date="2009-05-12">

<change type="bugfix">
<para lang="ru">
при перенаправлении ошибок модуля ngx_http_image_filter_module
в именованный location в рабочем процессе происходил floating-point fault;
ошибка появилась в 0.7.56.
</para>
<para lang="en">
a floating-point fault occurred in worker process,
if the ngx_http_image_filter_module errors were redirected to named location;
the bug had appeared in 0.7.56.
</para>
</change>

</changes>


<changes ver="0.7.56" date="2009-05-11">

<change type="feature">
<para lang="ru">
nginx/Windows поддерживает IPv6 в директиве listen модуля HTTP.
</para>
<para lang="en">
nginx/Windows supports IPv6 in a "listen" directive of the HTTP module.
</para>
</change>

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

</changes>


<changes ver="0.7.55" date="2009-05-06">

<change type="bugfix">
<para lang="ru">
параметры http_XXX в директивах proxy_cache_use_stale
и fastcgi_cache_use_stale не работали.
</para>
<para lang="en">
the http_XXX parameters in "proxy_cache_use_stale" and
"fastcgi_cache_use_stale" directives did not work.
</para>
</change>

<change type="bugfix">
<para lang="ru">
fastcgi кэш не кэшировал ответы, состоящие только из заголовка.
</para>
<para lang="en">
fastcgi cache did not cache header only responses.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки "select() failed (9: Bad file descriptor)" в nginx/Unix
и "select() failed (10038: ...)" в nginx/Windows.
</para>
<para lang="en">
of "select() failed (9: Bad file descriptor)" error in nginx/Unix
and "select() failed (10038: ...)" error in nginx/Windows.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
в сборке модуля ngx_http_image_filter_module.
</para>
<para lang="en">
fix ngx_http_image_filter_module building errors.
</para>
</change>

<change type="bugfix">
<para lang="ru">
файлы больше 2G не передавались с использованием $r->sendfile.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
the files bigger than 2G could not be transferred using $r->sendfile.<br/>
Thanks to Maxim Dounin.
</para>
</change>

</changes>


<changes ver="0.7.54" date="2009-05-01">

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

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

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

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

<change type="bugfix">
<para lang="ru">
улучшение обработки ошибок метода select.
</para>
<para lang="en">
improve handling of "select" method errors.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки "select() failed (10022: ...)" в nginx/Windows.
</para>
<para lang="en">
of "select() failed (10022: ...)" error in nginx/Windows.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в текстовых сообщениях об ошибках в nginx/Windows;
ошибка появилась в 0.7.53.
</para>
<para lang="en">
in error text descriptions in nginx/Windows;
the bug had appeared in 0.7.53.
</para>
</change>

</changes>


<changes ver="0.7.53" date="2009-04-27">

<change type="change">
<para lang="ru">
теперь лог, указанный в --error-log-path, создаётся с самого начала работы.
</para>
<para lang="en">
now a log set by --error-log-path is created from the very start-up.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь ошибки и предупреждения при старте записываются в error_log
и выводятся на stderr.
</para>
<para lang="en">
now the start up errors and warnings are outputted to an error_log and stderr.
</para>
</change>

<change type="feature">
<para lang="ru">
при сборке с пустым параметром --prefix= nginx использует как префикс каталог,
в котором он был запущен.
</para>
<para lang="en">
the empty --prefix= configure parameter forces nginx to use a directory
where it was run as prefix.
</para>
</change>

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

<change type="feature">
<para lang="ru">
ключ -s на Unix-платформах.
</para>
<para lang="en">
the -s switch on Unix platforms.
</para>
</change>

<change type="feature">
<para lang="ru">
ключи -? и -h.<br/>
Спасибо Jerome Loyet.
</para>
<para lang="en">
the -? and -h switches.<br/>
Thanks to Jerome Loyet.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь ключи можно задавать в сжатой форме.
</para>
<para lang="en">
now switches may be set in condensed form.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx/Windows не работал, если файл конфигурации был задан ключом -c.
</para>
<para lang="en">
nginx/Windows did not work if configuration file was given by the -c switch.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директив proxy_store, fastcgi_store,
proxy_cache или fastcgi_cache временные файлы могли не удаляться.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
temporary files might be not removed if the "proxy_store", "fastcgi_store",
"proxy_cache", or "fastcgi_cache" were used.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в заголовке Auth-Method запроса серверу аутентификации почтового
прокси-сервера передавалось неверное значение;
ошибка появилась в 0.7.34.<br/>
Спасибо Simon Lecaille.
</para>
<para lang="en">
an incorrect value was passed to mail proxy authentication server
in "Auth-Method" header line;
the bug had appeared<br/>
in 0.7.34.<br/>
Thanks to Simon Lecaille.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при логгировании на Linux не писались текстовые описания системных ошибок;
ошибка появилась в 0.7.45.
</para>
<para lang="en">
system error text descriptions were not logged on Linux;<br/>
the bug had appeared in 0.7.45.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива fastcgi_cache_min_uses не работала.<br/>
Спасибо Андрею Воробьёву.
</para>
<para lang="en">
the "fastcgi_cache_min_uses" directive did not work.<br/>
Thanks to Andrew Vorobyoff.
</para>
</change>

</changes>


<changes ver="0.7.52" date="2009-04-20">

<change type="feature">
<para lang="ru">
первая бинарная версия под Windows.
</para>
<para lang="en">
the first native Windows binary release.
</para>
</change>

<change type="bugfix">
<para lang="ru">
корректная обработка метода HEAD при кэшировании.
</para>
<para lang="en">
in processing HEAD method while caching.
</para>
</change>

<change type="bugfix">
<para lang="ru">
корректная обработка строк "If-Modified-Since", "If-Range" и им подобных
в заголовке запроса клиента при кэшировании.
</para>
<para lang="en">
in processing the "If-Modified-Since", "If-Range", etc. client request
header lines while caching.
</para>
</change>

<change type="bugfix">
<para lang="ru">
теперь строки "Set-Cookie" и "P3P" скрываются в заголовке ответа
для закэшированных ответов.
</para>
<para lang="en">
now the "Set-Cookie" and "P3P" header lines are hidden in cacheable responses.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если nginx был собран с модулем ngx_http_perl_module и perl
поддерживал потоки, то при выходе основного процесса
могла выдаваться ошибка "panic: MUTEX_LOCK".
</para>
<para lang="en">
if nginx was built with the ngx_http_perl_module and with a perl which
supports threads, then during a master process exit
the message "panic: MUTEX_LOCK" might be issued.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
nginx не собирался на платформах, отличных от i386, amd64, sparc и ppc;
ошибка появилась в 0.7.42.
</para>
<para lang="en">
nginx could not be built on platforms different from i386, amd64, sparc,
and ppc;
the bug had appeared in 0.7.42.
</para>
</change>

</changes>


<changes ver="0.7.51" date="2009-04-12">

<change type="feature">
<para lang="ru">
директива try_files поддерживает код ответа в последнем параметре.
</para>
<para lang="en">
the "try_files" directive supports a response code in the fallback parameter.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь в директиве return можно использовать любой код ответа.
</para>
<para lang="en">
now any response code can be used in the "return" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива error_page делала внешний редирект без строки запроса;
ошибка появилась в 0.7.44.
</para>
<para lang="en">
the "error_page" directive made an external redirect without query string;
the bug had appeared in 0.7.44.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если сервера слушали на нескольких явно описанных адресах,
то виртуальные сервера могли не работать;
ошибка появилась в 0.7.39.
</para>
<para lang="en">
if servers listened on several defined explicitly addresses,
then virtual servers might not work;
the bug had appeared in 0.7.39.
</para>
</change>

</changes>


<changes ver="0.7.50" date="2009-04-06">

<change type="bugfix">
<para lang="ru">
переменные $arg_... не работали;
ошибка появилась в 0.7.49.
</para>
<para lang="en">
the $arg_... variables did not work;
the bug had appeared in 0.7.49.
</para>
</change>

</changes>


<changes ver="0.7.49" date="2009-04-06">

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

</changes>


<changes ver="0.7.48" date="2009-04-06">

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

<change type="bugfix">
<para lang="ru">
теперь nginx учитывает при кэшировании строки "X-Accel-Expires",
"Expires" и "Cache-Control" в заголовке ответа бэкенда.
</para>
<para lang="en">
now nginx takes into account the "X-Accel-Expires", "Expires", and
"Cache-Control" header lines in a backend response.
</para>
</change>

<change type="bugfix">
<para lang="ru">
теперь nginx кэширует только ответы на запросы GET.
</para>
<para lang="en">
now nginx caches responses for the GET requests only.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива fastcgi_cache_key не наследовалась.
</para>
<para lang="en">
the "fastcgi_cache_key" directive was not inherited.
</para>
</change>

<change type="bugfix">
<para lang="ru">
переменные $arg_... не работали с SSI-подзапросами.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
the $arg_... variables did not work with SSI subrequests.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался с библиотекой uclibc.<br/>
Спасибо Timothy Redaelli.
</para>
<para lang="en">
nginx could not be built with uclibc library.<br/>
Thanks to Timothy Redaelli.
</para>
</change>

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

</changes>


<changes ver="0.7.47" date="2009-04-01">

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

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

<change type="bugfix">
<para lang="ru">
если использовался параметр max_size, то cache manager мог удалить весь кэш;
ошибка появилась в 0.7.46.
</para>
<para lang="en">
if the "max_size" parameter was set, then the cache manager might purge
a whole cache;
the bug had appeared in 0.7.46.
</para>
</change>

<change type="change">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если директивы proxy_cache/fastcgi_cache
и proxy_cache_valid/ fastcgi_cache_valid не были заданы на одном уровне;
ошибка появилась в 0.7.46.
</para>
<para lang="en">
a segmentation fault might occur in worker process,
if the "proxy_cache"/"fastcgi_cache" and
the "proxy_cache_valid"/ "fastcgi_cache_valid" were set on different levels;
the bug had appeared in 0.7.46.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault
при перенаправлении запроса проксированному или FastCGI-серверу
с помощью error_page или try_files;
ошибка появилась в 0.7.44.
</para>
<para lang="en">
a segmentation fault might occur in worker process,
if a request was redirected to a proxied or FastCGI server via
error_page or try_files;
the bug had appeared in 0.7.44.
</para>
</change>

</changes>


<changes ver="0.7.46" date="2009-03-30">

<change type="bugfix">
<para lang="ru">
архив предыдущего релиза был неверным.
</para>
<para lang="en">
the previous release tarball was incorrect.
</para>
</change>

</changes>


<changes ver="0.7.45" date="2009-03-30">

<change type="change">
<para lang="ru">
теперь директивы proxy_cache и proxy_cache_valid можно задавать
на разных уровнях.
</para>
<para lang="en">
now the "proxy_cache" and the "proxy_cache_valid" directives can be set on
different levels.
</para>
</change>

<change type="change">
<para lang="ru">
параметр clean_time в директиве proxy_cache_path удалён.
</para>
<para lang="en">
the "clean_time" parameter of the "proxy_cache_path" directive is canceled.
</para>
</change>

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

<change type="feature">
<para lang="ru">
предварительная поддержка кэширования в модуле ngx_http_fastcgi_module.
</para>
<para lang="en">
the ngx_http_fastcgi_module preliminary cache support.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь при ошибках выделения в разделяемой памяти в логе указываются
названия директивы и зоны.
</para>
<para lang="en">
now on shared memory allocation errors directive and zone names are logged.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива "add_header last-modified ''" не удаляла в заголовке ответа
строку "Last-Modified";
ошибка появилась в 0.7.44.
</para>
<para lang="en">
the directive "add_header last-modified ''" did not delete a "Last-Modified"
response header line;
the bug had appeared in 0.7.44.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве auth_basic_user_file не работал относительный путь,
заданный строкой без переменных;
ошибка появилась в 0.7.44.<br/>
Спасибо Jerome Loyet.
</para>
<para lang="en">
a relative path in the "auth_basic_user_file" directive given without variables
did not work;
the bug had appeared in 0.7.44.<br/>
Thanks to Jerome Loyet.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве alias, заданной переменными
без ссылок на выделения в регулярных выражениях;
ошибка появилась в 0.7.42.
</para>
<para lang="en">
in an "alias" directive given using variables
without references to captures of regular expressions;
the bug had appeared in 0.7.42.
</para>
</change>

</changes>


<changes ver="0.7.44" date="2009-03-23">

<change type="feature">
<para lang="ru">
предварительная поддержка кэширования в модуле ngx_http_proxy_module.
</para>
<para lang="en">
the ngx_http_proxy_module preliminary cache support.
</para>
</change>

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

<change type="feature">
<para lang="ru">
теперь директива try_files может быть использована на уровне server.
</para>
<para lang="en">
the "try_files" directive is now allowed on the server block level.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива try_files неправильно обрабатывала строку запроса в последнем
параметре.
</para>
<para lang="en">
the "try_files" directive handled incorrectly a query string
in a fallback parameter.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива try_files могла неверно тестировать каталоги.
</para>
<para lang="en">
the "try_files" directive might test incorrectly directories.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если для пары адрес:порт описан только один сервер, то выделения
в регулярных выражениях в директиве server_name не работали.
</para>
<para lang="en">
if there was a single server for given address:port pair,
then captures in regular expressions in a "server_name" directive did not work.
</para>
</change>

</changes>


<changes ver="0.7.43" date="2009-03-18">

<change type="bugfix">
<para lang="ru">
запрос обрабатывался неверно, если директива root использовала переменные;
ошибка появилась в 0.7.42.
</para>
<para lang="en">
a request was handled incorrectly, if a "root" directive used variables;
the bug had appeared in 0.7.42.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если сервер слушал на адресах типа "*", то значение переменной $server_addr
было "0.0.0.0";
ошибка появилась в 0.7.36.
</para>
<para lang="en">
if a server listened on wildcard address, then the $server_addr variable
value was "0.0.0.0";
the bug had appeared in 0.7.36.
</para>
</change>

</changes>


<changes ver="0.7.42" date="2009-03-16">

<change type="change">
<para lang="ru">
ошибка "Invalid argument", возвращаемая setsockopt(TCP_NODELAY) на Solaris,
теперь игнорируется.
</para>
<para lang="en">
now the "Invalid argument" error returned by setsockopt(TCP_NODELAY) on Solaris,
is ignored.
</para>
</change>

<change type="change">
<para lang="ru">
при отсутствии файла, указанного в директиве auth_basic_user_file,
теперь возвращается ошибка 403 вместо 500.
</para>
<para lang="en">
now if a file specified in a "auth_basic_user_file" directive is absent,
then the 403 error is returned instead of the 500 one.
</para>
</change>

<change type="feature">
<para lang="ru">
директива auth_basic_user_file поддерживает переменные.
<br/>
Спасибо Кириллу Коринскому.
</para>
<para lang="en">
the "auth_basic_user_file" directive supports variables.<br/>
Thanks to Kirill A. Korinskiy.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
в директиве alias со ссылками на выделения в регулярных выражениях;
ошибка появилась в 0.7.40.
</para>
<para lang="en">
in an "alias" directive with references to captures of regular expressions;
the bug had appeared in 0.7.40.
</para>
</change>

<change type="bugfix">
<para lang="ru">
совместимость с Tru64 UNIX.<br/>
Спасибо Dustin Marquess.
</para>
<para lang="en">
compatibility with Tru64 UNIX.<br/>
Thanks to Dustin Marquess.
</para>
</change>

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

</changes>


<changes ver="0.7.41" date="2009-03-11">

<change type="bugfix">
<para lang="ru">
в рабочем процессе мог произойти segmentation fault,
если в server_name или location были выделения в регулярных выражениях;
ошибка появилась в 0.7.40.<br/>
Спасибо Владимиру Сопоту.
</para>
<para lang="en">
a segmentation fault might occur in worker process,
if a "server_name" or a "location" directives had captures
in regular expressions;
the issue had appeared in 0.7.40.<br/>
Thanks to Vladimir Sopot.
</para>
</change>

</changes>


<changes ver="0.7.40" date="2009-03-09">

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

<change type="feature">
<para lang="ru">
директиву alias с ссылками на выделения в регулярных выражениях
можно использовать внутри location'а, заданного регулярным выражением
с выделениями.
</para>
<para lang="en">
an "alias" directive with capture references may be used inside
a location given by a regular expression with captures.
</para>
</change>

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

<change type="workaround">
<para lang="ru">
модуль ngx_http_autoindex_module не показывал последний слэш для каталогов
на файловой системе XFS;
ошибка появилась в 0.7.15.<br/>
Спасибо Дмитрию Кузьменко.
</para>
<para lang="en">
the ngx_http_autoindex_module did not show the trailing slash in directories
on XFS filesystem;
the issue had appeared in 0.7.15.<br/>
Thanks to Dmitry Kuzmenko.
</para>
</change>

</changes>


<changes ver="0.7.39" date="2009-03-02">

<change type="bugfix">
<para lang="ru">
при включённом сжатии большие ответы с использованием SSI могли зависать;
ошибка появилась в 0.7.28.<br/>
Спасибо Артёму Бохану.
</para>
<para lang="en">
large response with SSI might hang, if gzipping was enabled;
the bug had appeared in 0.7.28.<br/>
Thanks to Artem Bokhan.
</para>
</change>

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

</changes>


<changes ver="0.7.38" date="2009-02-23">

<change type="feature">
<para lang="ru">
логгирование ошибок аутентификации.
</para>
<para lang="en">
authentication failures logging.
</para>
</change>

<change type="bugfix">
<para lang="ru">
имя/пароль, заданные в auth_basic_user_file, игнорировались после нечётного
числа пустых строк.<br/>
Спасибо Александру Загребину.
</para>
<para lang="en">
name/password in auth_basic_user_file were ignored after odd number
of empty lines.<br/>
Thanks to Alexander Zagrebin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании длинного пути в unix domain сокете
в главном процессе происходил segmentation fault;
ошибка появилась в 0.7.36.
</para>
<para lang="en">
a segmentation fault occurred in a master process,
if long path was used in unix domain socket;
the bug had appeared in 0.7.36.
</para>
</change>

</changes>


<changes ver="0.7.37" date="2009-02-21">

<change type="bugfix">
<para lang="ru">
директивы, использующие upstream'ы, не работали;
ошибка появилась в 0.7.36.
</para>
<para lang="en">
directives using upstreams did not work;
the bug had appeared in 0.7.36.
</para>
</change>

</changes>


<changes ver="0.7.36" date="2009-02-21">

<change type="feature">
<para lang="ru">
предварительная поддержка IPv6;
директива listen модуля HTTP поддерживает IPv6.
</para>
<para lang="en">
a preliminary IPv6 support;
the "listen" directive of the HTTP module supports IPv6.
</para>
</change>

<change type="bugfix">
<para lang="ru">
переменная $ancient_browser не работала для браузеров, заданных
директивами modern_browser.
</para>
<para lang="en">
the $ancient_browser variable did not work for browsers
preset by a "modern_browser" directives.
</para>
</change>

</changes>


<changes ver="0.7.35" date="2009-02-16">

<change type="bugfix">
<para lang="ru">
директива ssl_engine не использовала SSL-акселератор
для асимметричных шифров.<br/>
Спасибо Marcin Gozdalik.
</para>
<para lang="en">
a "ssl_engine" directive did not use a SSL-accelerator
for asymmetric ciphers.<br/>
Thanks to Marcin Gozdalik.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива try_files выставляла MIME-type, исходя из расширения
первоначального запроса.
</para>
<para lang="en">
a "try_files" directive set MIME type depending on an
original request extension.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директивах server_name, valid_referers и map
неправильно обрабатывались имена вида "*domain.tld",
если использовались маски вида ".domain.tld" и ".subdomain.domain.tld";
ошибка появилась в 0.7.9.
</para>
<para lang="en">
"*domain.tld" names were handled incorrectly in
"server_name", "valid_referers", and "map" directives,
if ".domain.tld" and ".subdomain.domain.tld" wildcards were used;
<nobr>the bug had</nobr> appeared in 0.7.9.
</para>
</change>

</changes>


<changes ver="0.7.34" date="2009-02-10">

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

<change type="feature">
<para lang="ru">
теперь после команды XCLIENT nginx посылает команду HELO/EHLO.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
now nginx sends an HELO/EHLO command after a XCLIENT command.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="feature">
<para lang="ru">
поддержка Microsoft-специфичного режима
<nobr>"AUTH LOGIN with User Name"</nobr>
в почтовом прокси-сервере.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
Microsoft specific "AUTH LOGIN with User Name" mode support
in mail proxy server.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве rewrite, возвращающей редирект, старые аргументы присоединялись
к новым через символ "?" вместо "&amp;";<br/>
ошибка появилась в 0.1.18.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
in a redirect rewrite directive original arguments were concatenated with
new arguments by a "?" rather than an "&amp;";<br/>
the bug had appeared in 0.1.18.<br/>
Thanks to Maxim Dounin.
</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="0.7.33" date="2009-02-02">

<change type="bugfix">
<para lang="ru">
если на запрос с телом возвращался редирект, то ответ мог быть двойным
при использовании методов epoll или rtsig.<br/>
Спасибо Eden Li.
</para>
<para lang="en">
a double response might be returned if the epoll or rtsig methods are used
and a redirect was returned to a request with body.<br/>
Thanks to Eden Li.
</para>
</change>

<change type="bugfix">
<para lang="ru">
для некоторых типов редиректов в переменной $sent_http_location
было пустое значение.
</para>
<para lang="en">
the $sent_http_location variable was empty for some redirects types.
</para>
</change>

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

</changes>


<changes ver="0.7.32" date="2009-01-26">

<change type="feature">
<para lang="ru">
теперь в директиве try_files можно явно указать проверку каталога.
</para>
<para lang="en">
now a directory existence testing can be set explicitly
in the "try_files" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
fastcgi_store не всегда сохранял файлы.
</para>
<para lang="en">
fastcgi_store stored files not always.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в гео-диапазонах.
</para>
<para lang="en">
in geo ranges.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки выделения больших блоков в разделяемой памяти,
если nginx был собран без отладки.<br/>
Спасибо Андрею Квасову.
</para>
<para lang="en">
in shared memory allocations if nginx was built without debugging.<br/>
Thanks to Andrey Kvasov.
</para>
</change>

</changes>


<changes ver="0.7.31" date="2009-01-19">

<change type="change">
<para lang="ru">
теперь директива try_files проверяет только файлы, игнорируя каталоги.
</para>
<para lang="en">
now the "try_files" directive tests files only and ignores directories.
</para>
</change>

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

<change>
<para lang="ru">
Исправления в поддержке строки "Expect" в заголовке запроса.
</para>
<para lang="en">
Bugfixes in an "Expect" request header line support.
</para>
</change>

<change>
<para lang="ru">
Исправления в гео-диапазонах.
</para>
<para lang="en">
Bugfixes in geo ranges.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при отсутствии ответа ngx_http_memcached_module возвращал
в теле ответа строку "END" вместо 404-ой страницы по умолчанию;
ошибка появилась в 0.7.18.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
in a miss case ngx_http_memcached_module returned the "END" line
as response body instead of default 404 page body;
the bug had appeared in 0.7.18.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при проксировании SMTP nginx выдавал сообщение
<nobr>"250 2.0.0 OK"</nobr> вместо "235 2.0.0 OK";
ошибка появилась в 0.7.22.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
while SMTP proxying nginx issued message
"250 2.0.0 OK" instead of "235 2.0.0 OK";
the bug had appeared in 0.7.22.<br/>
Thanks to Maxim Dounin.
</para>
</change>

</changes>



<changes ver="0.7.30" date="2008-12-24">

<change type="bugfix">
<para lang="ru">
в рабочем процессе происходил segmentation fault,
если в директивах fastcgi_pass или proxy_pass
использовались переменные и имя хоста должно было резолвиться;
ошибка появилась в 0.7.29.
</para>
<para lang="en">
a segmentation fault occurred in worker process,
if variables were used in the "fastcgi_pass" or "proxy_pass" directives
and host name must be resolved;
the bug had appeared in 0.7.29.
</para>
</change>

</changes>


<changes ver="0.7.29" date="2008-12-24">

<change type="bugfix">
<para lang="ru">
директивы fastcgi_pass и proxy_pass не поддерживали переменные
при использовании unix domain сокетов.
</para>
<para lang="en">
the "fastcgi_pass" and "proxy_pass" directives did not support
variables if unix domain sockets were used.
</para>
</change>

<change>
<para lang="ru">
Исправления в обработке подзапросов;
ошибки появились в 0.7.25.
</para>
<para lang="en">
Bugfixes in subrequest processing;
the bugs had appeared in 0.7.25.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ответ "100 Continue" выдавался для запросов версии HTTP/1.0;<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
a "100 Continue" response was issued for HTTP/1.0 requests;<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в выделении памяти в модуле ngx_http_gzip_filter_module под Cygwin.
</para>
<para lang="en">
in memory allocation in the ngx_http_gzip_filter_module on Cygwin.
</para>
</change>

</changes>


<changes ver="0.7.28" date="2008-12-22">

<change type="change">
<para lang="ru">
в выделении памяти в модуле ngx_http_gzip_filter_module.
</para>
<para lang="en">
in memory allocation in the ngx_http_gzip_filter_module.
</para>
</change>

<change type="change">
<para lang="ru">
значения по умолчанию для директивы gzip_buffers изменены с 4 4k/8k
на 32 4k или 16 8k.
</para>
<para lang="en">
the default "gzip_buffers" directive values have been changed
to 32 4k or 16 8k from 4 4k/8k.
</para>
</change>

</changes>


<changes ver="0.7.27" date="2008-12-15">

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

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

<change type="feature">
<para lang="ru">
теперь директива geo может брать адрес из переменной.<br/>
Спасибо Андрею Нигматулину.
</para>
<para lang="en">
now the $geo variable may get an address from a variable.<br/>
Thanks to Andrei Nigmatulin.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь модификатор location'а можно указывать без пробела перед названием.
</para>
<para lang="en">
now a location's modifier may be used without space before name.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
теперь директива add_header не добавляет пустое значение.
</para>
<para lang="en">
now a "add_header" directive does not add an empty value.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при запросе файла нулевой длины nginx закрывал соединение, ничего не передав;
ошибка появилась в 0.7.25.
</para>
<para lang="en">
if zero length static file was requested, then nginx just closed connection;
the bug had appeared in 0.7.25.
</para>
</change>

<change type="bugfix">
<para lang="ru">
метод MOVE не мог перемещать файл в несуществующий каталог.
</para>
<para lang="en">
a MOVE method could not move file in non-existent directory.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если в сервере не был описан ни один именованный location,
но такой location использовался в директиве error_page,
то в рабочем процессе происходил segmentation fault.<br/>
Спасибо Сергею Боченкову.
</para>
<para lang="en">
a segmentation fault occurred in worker process,
if no one named location was defined in server,
but some one was used in an error_page directive.<br/>
Thanks to Sergey Bochenkov.
</para>
</change>

</changes>


<changes ver="0.7.26" date="2008-12-08">

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

</changes>


<changes ver="0.7.25" date="2008-12-08">

<change type="change">
<para lang="ru">
в обработке подзапросов.
</para>
<para lang="en">
in subrequest processing.
</para>
</change>

<change type="change">
<para lang="ru">
теперь разрешаются POST'ы без строки "Content-Length" в заголовке запроса.
</para>
<para lang="en">
now POSTs without "Content-Length" header line are allowed.
</para>
</change>

<change type="bugfix">
<para lang="ru">
теперь директивы limit_req и limit_conn указывают причину запрета запроса.
</para>
<para lang="en">
now the "limit_req" and "limit_conn" directives log a prohibition reason.
</para>
</change>

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

</changes>


<changes ver="0.7.24" date="2008-12-01">

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

<change type="bugfix">
<para lang="ru">
nginx не обрабатывал ответ FastCGI-сервера,
если перед ответом сервер передавал много сообщений в stderr.
</para>
<para lang="en">
nginx did not process a FastCGI server response,
if the server send too many messages to stderr before response.
</para>
</change>

<change type="bugfix">
<para lang="ru">
переменные "$cookie_..." не работали в SSI and в перловом модуле.
</para>
<para lang="en">
the "$cookie_..." variables did not work in the SSI and the perl module.
</para>
</change>

</changes>


<changes ver="0.7.23" date="2008-11-27">

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

<change type="feature">
<para lang="ru">
ускорение загрузки geo-базы с большим числом значений.
</para>
<para lang="en">
speeding up loading of geo base with large number of values.
</para>
</change>

<change type="feature">
<para lang="ru">
уменьшение памяти, необходимой для загрузки geo-базы.
</para>
<para lang="en">
decrease of memory required for geo base load.
</para>
</change>

</changes>


<changes ver="0.7.22" date="2008-11-20">

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

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

<change type="bugfix">
<para lang="ru">
директива directio не работала с файловой системой XFS.
</para>
<para lang="en">
the "directio" directive did not work in XFS filesystem.
</para>
</change>

<change type="bugfix">
<para lang="ru">
resolver не понимал большие DNS-ответы.<br/>
Спасибо Zyb.
</para>
<para lang="en">
the resolver did not understand big DNS responses.<br/>
Thanks to Zyb.
</para>
</change>

</changes>


<changes ver="0.7.21" date="2008-11-11">

<change>
<para lang="ru">
Изменения в модуле ngx_http_limit_req_module.
</para>
<para lang="en">
Changes in the ngx_http_limit_req_module.
</para>
</change>

<change type="feature">
<para lang="ru">
поддержка EXSLT в модуле ngx_http_xslt_module.<br/>
Спасибо Денису Латыпову.
</para>
<para lang="en">
the EXSLT support in the ngx_http_xslt_module.<br/>
Thanks to Denis F. Latypoff.
</para>
</change>

<change type="workaround">
<para lang="ru">
совместимость с glibc 2.3.<br/>
Спасибо Eric Benson и Максиму Дунину.
</para>
<para lang="en">
compatibility with glibc 2.3.<br/>
Thanks to Eric Benson and Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не запускался на MacOSX 10.4 и более ранних;
ошибка появилась в 0.7.6.
</para>
<para lang="en">
nginx could not run on MacOSX 10.4 and earlier;
the bug had appeared in 0.7.6.
</para>
</change>

</changes>


<changes ver="0.7.20" date="2008-11-10">

<change>
<para lang="ru">
Изменения в модуле ngx_http_gzip_filter_module.
</para>
<para lang="en">
Changes in the ngx_http_gzip_filter_module.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
на платформах sparc и ppc рабочие процессы могли выходить по сигналу SIGBUS;
ошибка появилась в 0.7.3.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
worker processes might exit on a SIGBUS signal on sparc and ppc platforms;
the bug had appeared in 0.7.3.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директивы вида "proxy_pass http://host/some:uri" не работали;
ошибка появилась в 0.7.12.
</para>
<para lang="en">
the "proxy_pass http://host/some:uri" directives did not work;
the bug had appeared in 0.7.12.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании HTTPS запросы могли завершаться с ошибкой "bad write retry".
</para>
<para lang="en">
in HTTPS mode requests might fail with the "bad write retry" error.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_secure_link_module не работал внутри location'ов
с именами меньше 3 символов.
</para>
<para lang="en">
the ngx_http_secure_link_module did not work inside locations,
whose names are less than 3 characters.
</para>
</change>

<change type="bugfix">
<para lang="ru">
переменная $server_addr могла не иметь значения.
</para>
<para lang="en">
$server_addr variable might have no value.
</para>
</change>

</changes>


<changes ver="0.7.19" date="2008-10-13">

<change type="bugfix">
<para lang="ru">
обновление номера версии.
</para>
<para lang="en">
version number update.
</para>
</change>

</changes>


<changes ver="0.7.18" date="2008-10-13">

<change type="change">
<para lang="ru">
директива underscores_in_headers;
теперь nginx по умолчанию не разрешает подчёркивания в именах строк
в заголовке запроса клиента.
</para>
<para lang="en">
the "underscores_in_headers" directive;
now nginx does not allows underscores in a client request header line names.
</para>
</change>

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

<change type="feature">
<para lang="ru">
директива real_ip_header поддерживает любой заголовок.
</para>
<para lang="en">
the "real_ip_header" directive supports any header.
</para>
</change>

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

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

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

<change type="bugfix">
<para lang="ru">
параметр http_503 в директивах proxy_next_upstream или fastcgi_next_upstream
не работал.
</para>
<para lang="en">
the "http_503" parameter of the "proxy_next_upstream" or
"fastcgi_next_upstream" directives did not work.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx мог выдавать строку "Transfer-Encoding: chunked" для запросов  HEAD.
</para>
<para lang="en">
nginx might send a "Transfer-Encoding: chunked" header line for HEAD requests.
</para>
</change>

<change type="bugfix">
<para lang="ru">
теперь accept-лимит зависит от числа worker_connections.
</para>
<para lang="en">
now accept threshold depends on worker_connections.
</para>
</change>

</changes>


<changes ver="0.7.17" date="2008-09-15">

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

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

<change type="bugfix">
<para lang="ru">
оптимизация directio, появившаяся в 0.7.15, не работала при использовании
open_file_cache.
</para>
<para lang="en">
the "directio" optimization that had appeared in 0.7.15 did not work with
open_file_cache.
</para>
</change>

<change type="bugfix">
<para lang="ru">
access_log с переменными не работал на Linux;
ошибка появилась в 0.7.7.
</para>
<para lang="en">
the "access_log" with variables did not work on Linux;
the bug had appeared in 0.7.7.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_charset_module не понимал название кодировки в кавычках,
полученное от бэкенда.
</para>
<para lang="en">
the ngx_http_charset_module did not understand quoted charset name
received from backend.
</para>
</change>

</changes>


<changes ver="0.7.16" date="2008-09-08">

<change type="bugfix">
<para lang="ru">
nginx не собирался на 64-битных платформах;
ошибка появилась в 0.7.15.
</para>
<para lang="en">
nginx could not be built on 64-bit platforms;
the bug had appeared in 0.7.15.
</para>
</change>

</changes>


<changes ver="0.7.15" date="2008-09-08">

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

<change type="feature">
<para lang="ru">
директива directio оптимизирована для запросов файлов, начинающихся
с произвольной позиции.
</para>
<para lang="en">
the "directio" directive has been optimized for file requests starting
from arbitrary position.
</para>
</change>

<change type="feature">
<para lang="ru">
директива directio при необходимости запрещает использование sendfile.
</para>
<para lang="en">
the "directio" directive turns off sendfile if it is necessary.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь nginx разрешает подчёркивания в именах строк в заголовке запроса клиента.
</para>
<para lang="en">
now nginx allows underscores in a client request header line names.
</para>
</change>

</changes>


<changes ver="0.7.14" date="2008-09-01">

<change type="change">
<para lang="ru">
теперь директивы ssl_certificate и ssl_certificate_key не имеют
значений по умолчанию.
</para>
<para lang="en">
now the ssl_certificate and ssl_certificate_key directives have no
default values.
</para>
</change>

<change type="feature">
<para lang="ru">
директива listen поддерживает параметр ssl.
</para>
<para lang="en">
the "listen" directive supports the "ssl" parameter.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь при переконфигурации nginx учитывает изменение временной зоны
на FreeBSD и Linux.
</para>
<para lang="en">
now nginx takes into account a time zone change while reconfiguration
on FreeBSD and Linux.
</para>
</change>

<change type="bugfix">
<para lang="ru">
параметры директивы listen, такие как backlog, rcvbuf и прочие,
не устанавливались, если сервером по умолчанию был не первый сервер.
</para>
<para lang="en">
the "listen" directive parameters such as "backlog", "rcvbuf", etc.
were not set, if a default server was not the first one.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании в качестве аргументов части URI, выделенного с помощью
директивы rewrite, эти аргументы не экранировались.
</para>
<para lang="en">
if URI part captured by a "rewrite" directive was used as a query string,
then the query string was not escaped.
</para>
</change>

<change type="bugfix">
<para lang="ru">
улучшения тестирования правильности конфигурационного файла.
</para>
<para lang="en">
configuration file validity test improvements.
</para>
</change>


</changes>


<changes ver="0.7.13" date="2008-08-26">

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

</changes>


<changes ver="0.7.12" date="2008-08-26">

<change type="feature">
<para lang="ru">
директива server_name поддерживает пустое имя "".
</para>
<para lang="en">
the "server_name" directive supports empty name "".
</para>
</change>

<change type="feature">
<para lang="ru">
директива gzip_disable поддерживает специальную маску msie6.
</para>
<para lang="en">
the "gzip_disable" directive supports special "msie6" mask.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании параметра max_fails=0 в upstream'е с несколькими
серверами рабочий процесс выходил по сигналу SIGFPE.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
if the "max_fails=0" parameter was used in upstream with several servers,
then a worker process exited on a SIGFPE signal.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при перенаправлении запроса с помощью директивы error_page
терялось тело запроса.
</para>
<para lang="en">
a request body was dropped while redirection via an "error_page" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при перенаправлении запроса с методом HEAD с помощью директивы error_page
возвращался полный ответ.
</para>
<para lang="en">
a full response was returned for request method HEAD
while redirection via an "error_page" directive.
</para>
</change>

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

</changes>


<changes ver="0.7.11" date="2008-08-18">

<change type="change">
<para lang="ru">
теперь ngx_http_charset_module по умолчанию не работает MIME-типом text/css.
</para>
<para lang="en">
now ngx_http_charset_module does not work by default with text/css MIME type.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь nginx возвращает код 405 для метода POST при запросе статического
файла, только если файл существует.
</para>
<para lang="en">
now nginx returns the 405 status code for POST method requesting a static file
only if the file exists.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
после перенаправления запроса с помощью "X-Accel-Redirect"
директива proxy_pass без URI могла использовать оригинальный запрос.
</para>
<para lang="en">
a "proxy_pass" directive without URI part might use original request
after the "X-Accel-Redirect" redirection was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если у каталога были права доступа только на поиск файлов
и первый индексный файл отсутствовал, то nginx возвращал ошибку 500.
</para>
<para lang="en">
if a directory has search only rights and the first index file was absent,
then nginx returned the 500 status code.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибок во вложенных location'ах;
ошибки появились в 0.7.1.
</para>
<para lang="en">
in inclusive locations;
the bugs had appeared in 0.7.1.
</para>
</change>

</changes>


<changes ver="0.7.10" date="2008-08-13">

<change type="bugfix">
<para lang="ru">
ошибок в директивах addition_types, charset_types,
gzip_types, ssi_types, sub_filter_types и xslt_types;
ошибки появились в 0.7.9.
</para>
<para lang="en">
in the "addition_types", "charset_types",
"gzip_types", "ssi_types", "sub_filter_types", and "xslt_types" directives;
the bugs had appeared in 0.7.9.
</para>
</change>

<change type="bugfix">
<para lang="ru">
рекурсивной error_page для 500 ошибки.
</para>
<para lang="en">
of recursive error_page for 500 status code.
</para>
</change>

<change type="bugfix">
<para lang="ru">
теперь модуль ngx_http_realip_module устанавливает адрес не для
всего keepalive соединения, а для каждого запроса по этому соединению.
</para>
<para lang="en">
now the ngx_http_realip_module sets address not for whole keepalive connection,
but for each request passed via the connection.
</para>
</change>

</changes>


<changes ver="0.7.9" date="2008-08-12">

<change type="change">
<para lang="ru">
теперь ngx_http_charset_module по умолчанию работает со следующими MIME-типами:
text/html, text/css, text/xml, text/plain, text/vnd.wap.wml,
application/x-javascript и application/rss+xml.
</para>
<para lang="en">
now ngx_http_charset_module works by default with following MIME types:
text/html, text/css, text/xml, text/plain, text/vnd.wap.wml,
application/x-javascript, and application/rss+xml.
</para>
</change>

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

<change type="feature">
<para lang="ru">
теперь директивы gzip_types, ssi_types и sub_filter_types используют хэш.
</para>
<para lang="en">
now the "gzip_types", "ssi_types", and "sub_filter_types" directives use hash.
</para>
</change>

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

<change type="feature">
<para lang="ru">
директива expires поддерживает суточное время.
</para>
<para lang="en">
the "expires" directive supports daily time.
</para>
</change>

<change type="feature">
<para lang="ru">
улучшения и исправления в модуле ngx_http_xslt_module.<br/>
Спасибо Денису Латыпову и Максиму Дунину.
</para>
<para lang="en">
the ngx_http_xslt_module improvements and bug fixing.<br/>
Thanks to Denis F. Latypoff and Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива log_not_found не работала при поиске индексных файлов.
</para>
<para lang="en">
the "log_not_found" directive did not work for index files tests.
</para>
</change>

<change type="bugfix">
<para lang="ru">
HTTPS-соединения могли зависнуть,
если использовались методы kqueue, epoll, rtsig или eventport;
ошибка появилась в 0.7.7.
</para>
<para lang="en">
HTTPS connections might hang,
if kqueue, epoll, rtsig, or eventport methods were used;
the bug had appeared in 0.7.7.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если в директивах server_name, valid_referers и map
использовалась маска вида "*.domain.tld" и при этом полное имя
вида "domain.tld" не было описано, то это имя попадало под маску;
ошибка появилась в 0.3.18.
</para>
<para lang="en">
if the "server_name", "valid_referers", and "map" directives used
an "*.domain.tld" wildcard and exact name "domain.tld" was not set,
then the exact name was matched by the wildcard;
the bug had appeared in 0.3.18.
</para>
</change>

</changes>


<changes ver="0.7.8" date="2008-08-04">

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

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

<change type="feature">
<para lang="ru">
поддержка directio в Solaris.<br/>
Спасибо Ivan Debnar.
</para>
<para lang="en">
Solaris directio support.<br/>
Thanks to Ivan Debnar.
</para>
</change>

<change type="bugfix">
<para lang="ru">
теперь, если FastCGI-сервер присылает строку "Location" в заголовке ответа
без строки статуса, то nginx использует код статуса 302.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
now if FastCGI server sends a "Location" header line without status line,
then nginx uses 302 status code.<br/>
Thanks to Maxim Dounin.
</para>
</change>

</changes>


<changes ver="0.7.7" date="2008-07-30">

<change type="change">
<para lang="ru">
теперь ошибка EAGAIN при вызове connect() не считается временной.
</para>
<para lang="en">
now the EAGAIN error returned by connect() is not considered as temporary error.
</para>
</change>

<change type="change">
<para lang="ru">
значением переменной $ssl_client_cert теперь является сертификат,
перед каждой строкой которого, кроме первой, вставляется символ табуляции;
неизменённый сертификат доступен через переменную $ssl_client_raw_cert.
</para>
<para lang="en">
now the $ssl_client_cert variable value is a certificate with TAB character
intended before each line except first one;
an unchanged certificate is available in the $ssl_client_raw_cert variable.
</para>
</change>

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

<change type="feature">
<para lang="ru">
улучшения в обработке byte-range.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
byte-range processing improvements.<br/>
Thanks to Maxim Dounin.
</para>
</change>

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

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

<change type="bugfix">
<para lang="ru">
в MacOSX и Cygwin при проверке location'ов теперь делается сравнение
без учёта регистра символов;
однако, сравнение ограничено только однобайтными locale'ями.
</para>
<para lang="en">
now in MacOSX and Cygwin locations are tested in case insensitive mode;
however, the compare is provided by single-byte locales only.
</para>
</change>

<change type="bugfix">
<para lang="ru">
соединения почтового прокси-сервера зависали в режиме SSL,
если использовались методы select, poll или /dev/poll.
</para>
<para lang="en">
mail proxy SSL connections hanged,
if select, poll, or /dev/poll methods were used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки при использовании кодировки UTF-8 в ngx_http_autoindex_module.
</para>
<para lang="en">
UTF-8 encoding usage in the ngx_http_autoindex_module.
</para>
</change>

</changes>


<changes ver="0.7.6" date="2008-07-07">

<change type="bugfix">
<para lang="ru">
теперь при использовании переменных в директиве access_log
всегда проверяется существовании root'а для запроса.
</para>
<para lang="en">
now if variables are used in the "access_log" directive
a request root existence is always tested.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_flv_module не поддерживал несколько значений в
аргументах запроса.
</para>
<para lang="en">
the ngx_http_flv_module did not support several values in a query string.
</para>
</change>

</changes>


<changes ver="0.7.5" date="2008-07-01">

<change>
<para lang="ru">
Исправления в поддержке переменных в директиве access_log;
ошибки появились в 0.7.4.
</para>
<para lang="en">
Bugfixes in variables support in the "access_log" directive;
the bugs had appeared in 0.7.4.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался с параметром --without-http_gzip_module;
ошибка появилась в 0.7.3.<br/>
Спасибо Кириллу Коринскому.
</para>
<para lang="en">
nginx could not be built --without-http_gzip_module;
the bug had appeared in 0.7.3.<br/>
Thanks to Kirill A. Korinskiy.
</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
were transferred incorrectly.
</para>
</change>

</changes>


<changes ver="0.7.4" date="2008-06-30">

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

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

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

<change type="feature">
<para lang="ru">
поддержка строки "Expect" в заголовке запроса.
</para>
<para lang="en">
the "Expect" request header line support.
</para>
</change>

<change type="bugfix">
<para lang="ru">
большие включения в SSI могли передавались не полностью.
</para>
<para lang="en">
large SSI inclusions might be truncated.
</para>
</change>

</changes>


<changes ver="0.7.3" date="2008-06-23">

<change type="change">
<para lang="ru">
MIME-тип для расширения rss изменён на "application/rss+xml".
</para>
<para lang="en">
the "rss" extension MIME type has been changed to "application/rss+xml".
</para>
</change>

<change type="change">
<para lang="ru">
теперь директива "gzip_vary on" выдаёт строку
<nobr>"Vary: Accept-Encoding"</nobr>
в заголовке ответа и для несжатых ответов.
</para>
<para lang="en">
now the "gzip_vary" directive turned on issues
a <nobr>"Vary: Accept-Encoding"</nobr>
header line for uncompressed responses too.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь при использовании протокола "https://" в директиве rewrite
автоматически делается редирект.
</para>
<para lang="en">
now the "rewrite" directive does a redirect automatically
if the "https://" protocol is used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива proxy_pass не работала с протоколом HTTPS;
ошибка появилась в 0.6.9.
</para>
<para lang="en">
the "proxy_pass" directive did not work with the HTTPS protocol;
the bug had appeared in 0.6.9.
</para>
</change>

</changes>


<changes ver="0.7.2" date="2008-06-16">

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

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

<change type="feature">
<para lang="ru">
переменная $ssl_client_cert.<br/>
Спасибо Manlio Perillo.
</para>
<para lang="en">
the $ssl_client_cert variable.<br/>
Thanks to Manlio Perillo.
</para>
</change>

<change type="bugfix">
<para lang="ru">
после изменения URI с помощью директивы rewrite nginx не искал новый location;
ошибка появилась в 0.7.1.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
after changing URI via a "rewrite" directive nginx did not search
a new location;
the bug had appeared in 0.7.1.<br/>
Thanks to Maxim Dounin.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
при редиректе запроса к каталогу с добавлением слэша nginx
не добавлял аргументы из оригинального запроса.
</para>
<para lang="en">
when a request to a directory was redirected with the slash added,
nginx dropped a query string from the original request.
</para>
</change>

</changes>


<changes ver="0.7.1" date="2008-05-26">

<change type="change">
<para lang="ru">
теперь поиск location'а делается с помощью дерева.
</para>
<para lang="en">
now locations are searched in a tree.
</para>
</change>

<change type="change">
<para lang="ru">
директива optimize_server_names упразднена в связи с появлением
директивы server_name_in_redirect.
</para>
<para lang="en">
the "optimize_server_names" directive was canceled
due to the "server_name_in_redirect" directive introduction.
</para>
</change>

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

<change type="change">
<para lang="ru">
параметр "none" в директиве ssl_session_cache;
теперь этот параметр используется по умолчанию.<br/>
Спасибо Rob Mueller.
</para>
<para lang="en">
the "none" parameter in the "ssl_session_cache" directive;
now this is default parameter.<br/>
Thanks to Rob Mueller.
</para>
</change>

<change type="bugfix">
<para lang="ru">
рабочие процессы могли не реагировать на сигналы переконфигурации
и ротации логов.
</para>
<para lang="en">
worker processes might not catch reconfiguration and log rotation signals.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался на последних Fedora 9 Linux.<br/>
Спасибо Roxis.
</para>
<para lang="en">
nginx could not be built on latest Fedora 9 Linux.<br/>
Thanks to Roxis.
</para>
</change>

</changes>


<changes ver="0.7.0" date="2008-05-19">

<change type="change">
<para lang="ru">
теперь символы 0x00-0x1F, '"' и '\' в access_log записываются в виде \xXX.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
now the 0x00-0x1F, '"' and '\' characters are escaped as \xXX in an
access_log.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="change">
<para lang="ru">
теперь nginx разрешает несколько строк "Host" в заголовке запроса.
</para>
<para lang="en">
now nginx allows several "Host" request header line.
</para>
</change>

<change type="feature">
<para lang="ru">
директива expires поддерживает флаг modified.
</para>
<para lang="en">
the "modified" flag in the "expires" directive.
</para>
</change>

<change type="feature">
<para lang="ru">
переменные $uid_got и $uid_set можно использовать на любой стадии обработки
запроса.
</para>
<para lang="en">
the $uid_got and $uid_set variables may be used at any request processing stage.
</para>
</change>

<change type="feature">
<para lang="ru">
переменная $hostname.<br/>
Спасибо Андрею Нигматулину.
</para>
<para lang="en">
the $hostname variable.<br/>
Thanks to Andrei Nigmatulin.
</para>
</change>

<change type="feature">
<para lang="ru">
поддержка DESTDIR.<br/>
Спасибо Todd A. Fisher и Andras Voroskoi.
</para>
<para lang="en">
DESTDIR support.<br/>
Thanks to Todd A. Fisher and Andras Voroskoi.
</para>
</change>

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

</changes>


<changes ver="0.6.31" date="2008-05-12">

<change type="bugfix">
<para lang="ru">
nginx не обрабатывал ответ FastCGI-сервера, если строка заголовка ответа была
в конце записи FastCGI;
ошибка появилась в 0.6.2.<br/>
Спасибо Сергею Серову.
</para>
<para lang="en">
nginx did not process FastCGI response
if header was at the end of FastCGI record;
the bug had appeared in 0.6.2.<br/>
Thanks to Sergey Serov.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при удалении файла и использовании директивы open_file_cache_errors off
в рабочем процессе мог произойти segmentation fault.
</para>
<para lang="en">
a segmentation fault might occur in worker process if a file was deleted
and the "open_file_cache_errors" directive was off.
</para>
</change>

</changes>


<changes ver="0.6.30" date="2008-04-29">

<change type="change">
<para lang="ru">
теперь, если маске, заданной в директиве include, не соответствует
ни один файл, то nginx не выдаёт ошибку.
</para>
<para lang="en">
now if an "include" directive pattern does not match any file,
then nginx does not issue an error.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь время в директивах можно задавать без пробела, например, "1h50m".
</para>
<para lang="en">
now the time in directives may be specified without spaces,
for example, "1h50m".
</para>
</change>

<change type="bugfix">
<para lang="ru">
утечек памяти, если директива ssl_verify_client имела значение on.<br/>
Спасибо Chavelle Vincent.
</para>
<para lang="en">
memory leaks if the "ssl_verify_client" directive was on.<br/>
Thanks to Chavelle Vincent.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива sub_filter могла вставлять заменяемый текст в вывод.
</para>
<para lang="en">
the "sub_filter" directive might set text to change into output.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива error_page не воспринимала параметры в перенаправляемом URI.
</para>
<para lang="en">
the "error_page" directive did not take into account arguments in
redirected URI.
</para>
</change>

<change type="bugfix">
<para lang="ru">
теперь при сборке с Cygwin nginx всегда открывает файлы в бинарном режиме.
</para>
<para lang="en">
now nginx always opens files in binary mode under Cygwin.
</para>
</change>

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

</changes>


<changes ver="0.6.29" date="2008-03-18">

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

<change type="bugfix">
<para lang="ru">
модуль ngx_http_perl_module не собирался на 64-битных платформах;
ошибка появилась в 0.6.27.
</para>
<para lang="en">
the ngx_http_perl_module could not be built on 64-bit platforms;
the bug had appeared in 0.6.27.
</para>
</change>

</changes>


<changes ver="0.6.28" date="2008-03-13">

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

</changes>


<changes ver="0.6.27" date="2008-03-12">

<change type="change">
<para lang="ru">
теперь на Linux 2.6.18+ по умолчанию не собирается метод rtsig.
</para>
<para lang="en">
now by default the rtsig method is not built on <nobr>Linux 2.6.18+.</nobr>
</para>
</change>

<change type="change">
<para lang="ru">
теперь при перенаправлении запроса в именованный location с помощью
директивы error_page метод запроса не изменяется.
</para>
<para lang="en">
now a request method is not changed while redirection to a named location
via an "error_page" directive.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы resolver и resolver_timeout в SMTP прокси-сервере.
</para>
<para lang="en">
the "resolver" and "resolver_timeout" directives in SMTP proxy.
</para>
</change>

<change type="feature">
<para lang="ru">
директива post_action поддерживает именованные location'ы.
</para>
<para lang="en">
the "post_action" directive supports named locations.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при перенаправлении запроса из location'а c обработчиком proxy, FastCGI
или memcached в именованный location со статическим обработчиком
в рабочем процессе происходил segmentation fault.
</para>
<para lang="en">
a segmentation fault occurred in worker process,
if a request was redirected from proxy, FastCGI, or memcached location
to static named locations.
</para>
</change>

<change type="bugfix">
<para lang="ru">
браузеры не повторяли SSL handshake, если при первом handshake
не оказалось правильного клиентского сертификата.
<br/>
Спасибо Александру Инюхину.
</para>
<para lang="en">
browsers did not repeat SSL handshake if there is no valid client certificate
in first handshake.
<br/>
Thanks to Alexander V. Inyukhin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при перенаправлении ошибок 495-497 с помощью директивы error_page
без изменения кода ошибки nginx пытался выделить очень много памяти.
</para>
<para lang="en">
if response code 495-497 was redirected via an "error_page" directive
without code change, then nginx tried to allocate too many memory.
</para>
</change>

<change type="bugfix">
<para lang="ru">
утечки памяти в долгоживущих небуфферизированных соединениях.
</para>
<para lang="en">
memory leak in long-lived non buffered connections.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
при перенаправлении запроса из location'а c обработчиком proxy
в другой location с обработчиком proxy
в рабочем процессе происходил segmentation fault.
</para>
<para lang="en">
a segmentation fault occurred in worker process,
if a request was redirected from proxy, FastCGI, or memcached location
to static named locations.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки в кэшировании переменных $proxy_host и $proxy_port.<br/>
Спасибо Сергею Боченкову.
</para>
<para lang="en">
in the $proxy_host and $proxy_port variables caching.<br/>
Thanks to Sergey Bochenkov.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива proxy_pass с переменными использовала порт, описанной в другой
директиве proxy_pass без переменных, но с таким же именем хоста.<br/>
Спасибо Сергею Боченкову.
</para>
<para lang="en">
a "proxy_pass" directive with variables used incorrectly the same port
as in another "proxy_pass" directive with the same host name
and without variables.<br/>
Thanks to Sergey Bochenkov.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
при повторном использовании в SSI пустого block'а в качестве заглушки
в рабочем процессе происходил segmentation fault.
</para>
<para lang="en">
a segmentation fault occurred in worker process,
if empty stub block was used second time in SSI.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки при копировании части URI, содержащего экранированные символы,
в аргументы.
</para>
<para lang="en">
in copying URI part contained escaped symbols into arguments.
</para>
</change>

</changes>


<changes ver="0.6.26" date="2008-02-11">

<change type="bugfix">
<para lang="ru">
директивы proxy_store и fastcgi_store не проверяли длину ответа.
</para>
<para lang="en">
the "proxy_store" and "fastcgi_store" directives did not check
a response length.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании большого значения в директиве expires
в рабочем процессе происходил segmentation fault.<br/>
Спасибо Joaquin Cuenca Abela.
</para>
<para lang="en">
a segmentation fault occurred in worker process,
if big value was used in a "expires" directive.<br/>
Thanks to Joaquin Cuenca Abela.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx неверно определял длину строки кэша на <nobr>Pentium 4.</nobr><br/>
Спасибо Геннадию Махомеду.
</para>
<para lang="en">
nginx incorrectly detected cache line size on Pentium 4.<br/>
Thanks to Gena Makhomed.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в проксированных подзапросах и подзапросах к FastCGI-серверу
вместо метода GET использовался оригинальный метод клиента.
</para>
<para lang="en">
in proxied or FastCGI subrequests a client original method was used
instead of the GET method.
</para>
</change>

<change type="bugfix">
<para lang="ru">
утечки сокетов в режиме HTTPS при использовании отложенного accept'а.<br/>
Спасибо Ben Maurer.
</para>
<para lang="en">
socket leak in HTTPS mode if deferred accept was used.<br/>
Thanks to Ben Maurer.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx выдавал ошибочное сообщение "SSL_shutdown() failed (SSL: )";
ошибка появилась в 0.6.23.
</para>
<para lang="en">
nginx issued the bogus error message "SSL_shutdown() failed (SSL: )";
the bug had appeared in 0.6.23.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании HTTPS запросы могли завершаться с ошибкой "bad write retry";
ошибка появилась в 0.6.23.
</para>
<para lang="en">
in HTTPS mode requests might fail with the "bad write retry" error;
the bug had appeared in 0.6.23.
</para>
</change>

</changes>


<changes ver="0.6.25" date="2008-01-08">

<change type="change">
<para lang="ru">
вместо специального параметра "*" в директиве server_name теперь
используется директива server_name_in_redirect.
</para>
<para lang="en">
now the "server_name_in_redirect" directive is used instead of
the "server_name" directive's special "*" parameter.
</para>
</change>

<change type="change">
<para lang="ru">
в качестве основного имени в директиве server_name теперь
можно использовать имена с масками и регулярными выражениями.
</para>
<para lang="en">
now wildcard and regex names can be used as main name in
a "server_name" directive.
</para>
</change>

<change type="change">
<para lang="ru">
директива satisfy_any заменена директивой satisfy.
</para>
<para lang="en">
the "satisfy_any" directive was replaced by the "satisfy" directive.
</para>
</change>

<change type="workaround">
<para lang="ru">
после переконфигурации старые рабочие процесс могли сильно нагружать процессор
при запуске под Linux OpenVZ.
</para>
<para lang="en">
old worker processes might hog CPU after reconfiguration if they was run
under Linux OpenVZ.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
методы COPY и MOVE не работали с одиночными файлами.
</para>
<para lang="en">
the COPY and MOVE methods did not work with single files.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_gzip_static_module не позволял работать модулю
ngx_http_dav_module;
ошибка появилась в 0.6.23.
</para>
<para lang="en">
the ngx_http_gzip_static_module did not allow the ngx_http_dav_module to work;
the bug had appeared in 0.6.23.
</para>
</change>

<change type="bugfix">
<para lang="ru">
утечки сокетов в режиме HTTPS при использовании отложенного accept'а.<br/>
Спасибо Ben Maurer.
</para>
<para lang="en">
socket leak in HTTPS mode if deferred accept was used.<br/>
Thanks to Ben Maurer.
</para>
</change>

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

</changes>

<changes ver="0.6.24" date="2007-12-27">

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

</changes>


<changes ver="0.6.23" date="2007-12-27">

<change type="change">
<para lang="ru">
параметр "off" в директиве ssl_session_cache;
теперь этот параметр используется по умолчанию.
</para>
<para lang="en">
the "off" parameter in the "ssl_session_cache" directive;
now this is default parameter.
</para>
</change>

<change type="change">
<para lang="ru">
директива open_file_cache_retest переименована в open_file_cache_valid.
</para>
<para lang="en">
the "open_file_cache_retest" directive was renamed
to the "open_file_cache_valid".
</para>
</change>

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

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

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

<change type="feature">
<para lang="ru">
директиву memcached_pass можно использовать внутри блока if.
</para>
<para lang="en">
the "memcached_pass" directive may be used inside the "if" block.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если внутри одного location'а использовались директивы "memcached_pass" и "if",
то в рабочем процессе происходил segmentation fault.
</para>
<para lang="en">
a segmentation fault occurred in worker process,
if the "memcached_pass" and "if" directives were used in the same location.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если при использовании директивы satisfy_any on" были заданы директивы
не всех модулей доступа, то заданные директивы не проверялись.
</para>
<para lang="en">
if a "satisfy_any on" directive was used and not all access and auth modules
directives were set, then other given access and auth directives
were not tested;
</para>
</change>

<change type="bugfix">
<para lang="ru">
параметры, заданные регулярным выражением в директиве valid_referers,
не наследовалась с предыдущего уровня.
</para>
<para lang="en">
regex parameters in a "valid_referers" directive were not inherited
from previous level.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива post_action не работала, если запрос завершался с кодом 499.
</para>
<para lang="en">
a "post_action" directive did run if a request was completed
with 499 status code.
</para>
</change>

<change type="bugfix">
<para lang="ru">
оптимизация использования 16K буфера для SSL-соединения.<br/>
Спасибо Ben Maurer.
</para>
<para lang="en">
optimization of 16K buffer usage in a SSL connection.<br/>
Thanks to Ben Maurer.
</para>
</change>

<change type="bugfix">
<para lang="ru">
STARTTLS в режиме SMTP не работал.<br/>
Спасибо Олегу Мотиенко.
</para>
<para lang="en">
the STARTTLS in SMTP mode did not work.<br/>
Thanks to Oleg Motienko.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании HTTPS запросы могли завершаться с ошибкой "bad write retry";
ошибка появилась в 0.5.13.
</para>
<para lang="en">
in HTTPS mode requests might fail with the "bad write retry" error;
the bug had appeared in 0.5.13.
</para>
</change>

</changes>


<changes ver="0.6.22" date="2007-12-19">

<change type="change">
<para lang="ru">
теперь все методы модуля ngx_http_perl_module
возвращают значения, скопированные в память, выделенную perl'ом.
</para>
<para lang="en">
now all ngx_http_perl_module methods return values copied to perl's
allocated memory.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если nginx был собран с модулем ngx_http_perl_module,
использовался perl до версии 5.8.6 и perl поддерживал потоки,
то во время переконфигурации основной процесс аварийно выходил;
ошибка появилась в 0.5.9.<br/>
Спасибо Борису Жмурову.
</para>
<para lang="en">
if nginx was built with ngx_http_perl_module,
the perl before 5.8.6 was used, and perl supported threads,
then during reconfiguration the master process aborted;
the bug had appeared in 0.5.9.<br/>
Thanks to Boris Zhmurov.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в методы модуля ngx_http_perl_module
могли передаваться неверные результаты выделения в регулярных выражениях.
</para>
<para lang="en">
the ngx_http_perl_module methods may get invalid values of the regex captures.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если метод $r->has_request_body() вызывался для запроса,
у которого небольшое тело запроса было уже полностью получено,
то в рабочем процессе происходил segmentation fault.
</para>
<para lang="en">
a segmentation fault occurred in worker process,
if the $r->has_request_body() method was called for a request
whose small request body was already received.
</para>
</change>

<change type="bugfix">
<para lang="ru">
large_client_header_buffers не освобождались перед переходом в состояние
keep-alive.<br/>
Спасибо Олександру Штепе.
</para>
<para lang="en">
large_client_header_buffers did not freed before going to keep-alive state.<br/>
Thanks to Olexander Shtepa.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в переменной $upstream_addr не записывался последний адрес;
ошибка появилась в 0.6.18.
</para>
<para lang="en">
the last address was missed in the $upstream_addr variable;
the bug had appeared in 0.6.18.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива fastcgi_catch_stderr не возвращала ошибку;
теперь она возвращает ошибку 502, которую можно направить на следующий сервер
с помощью "fastcgi_next_upstream invalid_header".
</para>
<para lang="en">
the "fastcgi_catch_stderr" directive did return error code;
now it returns 502 code, that can be rerouted to a next server using
the "fastcgi_next_upstream invalid_header" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директивы fastcgi_catch_stderr
в основном процессе происходил segmentation fault;
ошибка появилась в 0.6.10.<br/>
Спасибо Manlio Perillo.
</para>
<para lang="en">
a segmentation fault occurred in master process
if the "fastcgi_catch_stderr" directive was used;
the bug had appeared in 0.6.10.<br/>
Thanks to Manlio Perillo.
</para>
</change>

</changes>


<changes ver="0.6.21" date="2007-12-03">

<change type="change">
<para lang="ru">
если в значениях переменных директивы proxy_pass используются
только IP-адреса, то указывать resolver не нужно.
</para>
<para lang="en">
if variable values used in a "proxy_pass" directive contain IP-addresses only,
then a "resolver" directive is not mandatory.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
если resolver использовался на платформах, не поддерживающих метод kqueue,
то nginx выдавал alert "name is out of response".<br/>
Спасибо Андрею Нигматулину.
</para>
<para lang="en">
if resolver was used on platform that does not support kqueue,
then nginx issued an alert "name is out of response".<br/>
Thanks to Andrei Nigmatulin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
При использовании переменной $server_protocol в FastCGI-параметрах
и запросе, длина которого была близка к значению директивы
client_header_buffer_size,
nginx выдавал alert "fastcgi: the request record is too big".
</para>
<para lang="en">
if the $server_protocol was used in FastCGI parameters
and a request line length was near to the "client_header_buffer_size"
directive value,
then nginx issued an alert "fastcgi: the request record is too big".
</para>
</change>

<change type="bugfix">
<para lang="ru">
при обычном запросе версии HTTP/0.9 к HTTPS серверу nginx возвращал
обычный ответ.
</para>
<para lang="en">
if a plain text HTTP/0.9 version request was made to HTTPS server,
then nginx returned usual response.
</para>
</change>

</changes>


<changes ver="0.6.20" date="2007-11-28">

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

</changes>


<changes ver="0.6.19" date="2007-11-27">

<change type="bugfix">
<para lang="ru">
версия 0.6.18 не собиралась.
</para>
<para lang="en">
the 0.6.18 version could not be built.
</para>
</change>

</changes>

<changes ver="0.6.18" date="2007-11-27">

<change type="change">
<para lang="ru">
теперь модуль ngx_http_userid_module в поле куки с номером процесса
добавляет микросекунды на время старта.
</para>
<para lang="en">
now the ngx_http_userid_module adds start time microseconds
to the cookie field contains a pid value.
</para>
</change>

<change type="change">
<para lang="ru">
в error_log теперь записывается полная строка запроса вместо только URI.
</para>
<para lang="en">
now the full request line instead of URI only is written to error_log.
</para>
</change>

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

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

<change type="feature">
<para lang="ru">
теперь директива "add_header last-modified ''" удаляет в заголовке ответа
строку "Last-Modified".
</para>
<para lang="en">
now the directive "add_header last-modified ''" deletes a "Last-Modified"
response header line.
</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>

</changes>


<changes ver="0.6.17" date="2007-11-15">

<change type="feature">
<para lang="ru">
поддержка строки "If-Range" в заголовке запроса.<br/>
Спасибо Александру Инюхину.
</para>
<para lang="en">
the "If-Range" request header line support.<br/>
Thanks to Alexander V. Inyukhin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директивы msie_refresh повторно экранировались
уже экранированные символы;
ошибка появилась в 0.6.4.
</para>
<para lang="en">
URL double escaping in a redirect of the "msie_refresh" directive;
the bug had appeared in 0.6.4.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива autoindex не работала при использовании "alias /".
</para>
<para lang="en">
the "autoindex" directive did not work with the "alias /" directive.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
при использовании SSL и gzip большие ответы могли передаваться не полностью.
</para>
<para lang="en">
the big responses may be transferred truncated if SSL and gzip were used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если ответ проксированного сервера был версии HTTP/0.9,
то переменная $status была равна 0.
</para>
<para lang="en">
the $status variable was equal to 0 if a proxied server returned response
in HTTP/0.9 version.
</para>
</change>

</changes>


<changes ver="0.6.16" date="2007-10-29">

<change type="change">
<para lang="ru">
теперь на Linux используется uname(2) вместо procfs.<br/>
Спасибо Илье Новикову.
</para>
<para lang="en">
now the uname(2) is used on Linux instead of procfs.<br/>
Thanks to Ilya Novikov.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если в директиве error_page использовался символ "?", то он экранировался
при проксировании запроса;
ошибка появилась в 0.6.11.
</para>
<para lang="en">
if the "?" character was in a "error_page" directive, then it was escaped
in a proxied request;
the bug had appeared in 0.6.11.
</para>
</change>

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

</changes>


<changes ver="0.6.15" date="2007-10-22">

<change type="feature">
<para lang="ru">
совместимость с Cygwin.<br/>
Спасибо Владимиру Кутакову.
</para>
<para lang="en">
Cygwin compatibility.<br/>
Thanks to Vladimir Kutakov.
</para>
</change>

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

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

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

<change type="bugfix">
<para lang="ru">
nginx не раскодировал URI в команде SSI include.
</para>
<para lang="en">
nginx did not unescape URI in the "include" SSI command.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании переменной в директивах charset или source_charset
на старте или во время переконфигурации происходил segmentation fault,
</para>
<para lang="en">
the segmentation fault was occurred on start or while reconfiguration
if variable was used in the "charset" or "source_charset" directives.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx возвращал ошибку 400 на запросы вида
<nobr>"GET http://www.domain.com HTTP/1.0"</nobr>.<br/>
Спасибо James Oakley.
</para>
<para lang="en">
nginx returned the 400 response on requests like
<nobr>"GET http://www.domain.com HTTP/1.0"</nobr>.<br/>
Thanks to James Oakley.
</para>
</change>

<change type="bugfix">
<para lang="ru">
после перенаправления запроса с телом запроса с помощью директивы
error_page nginx пытался снова прочитать тело запроса;
ошибка появилась в 0.6.7.
</para>
<para lang="en">
if request with request body was redirected using the "error_page" directive,
then nginx tried to read the request body again;
the bug had appeared in 0.6.7.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в рабочем процессе происходил segmentation fault, если у сервера,
обрабатывающему запрос, не был явно определён server_name;
ошибка появилась в 0.6.7.
</para>
<para lang="en">
a segmentation fault occurred in worker process
if no server_name was explicitly defined for server processing request;
the bug had appeared in 0.6.7.
</para>
</change>

</changes>


<changes ver="0.6.14" date="2007-10-15">

<change type="change">
<para lang="ru">
теперь по умолчанию команда SSI echo использует кодирование entity.
</para>
<para lang="en">
now by default the "echo" SSI command uses entity encoding.
</para>
</change>

<change type="feature">
<para lang="ru">
параметр encoding в команде SSI echo.
</para>
<para lang="en">
the "encoding" parameter in the "echo" SSI command.
</para>
</change>

<change type="feature">
<para lang="ru">
директиву access_log можно использовать внутри блока limit_except.
</para>
<para lang="en">
the "access_log" directive may be used inside the "limit_except" block.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если все сервера апстрима оказывались недоступными,
то до восстановления работоспособности
у всех серверов вес становился равным одному;
ошибка появилась в 0.6.6.
</para>
<para lang="en">
if all upstream servers were failed, then all servers had got weight
the was equal one until servers became alive;
the bug had appeared in 0.6.6.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании переменных $date_local и $date_gmt вне модуля
ngx_http_ssi_filter_module в рабочем процессе происходил segmentation fault.
</para>
<para lang="en">
a segmentation fault occurred in worker process
if $date_local and $date_gmt were used outside the ngx_http_ssi_filter_module.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании включённом отладочном логе
в рабочем процессе мог произойти segmentation fault.<br/>
Спасибо Андрею Нигматулину.
</para>
<para lang="en">
a segmentation fault might occur in worker process
if debug log was enabled.<br/>
Thanks to Andrei Nigmatulin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ngx_http_memcached_module не устанавливал $upstream_response_time.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
ngx_http_memcached_module did not set $upstream_response_time.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
рабочий процесс мог зациклиться при использовании memcached.
</para>
<para lang="en">
a worker process may got caught in an endless loop, if the memcached was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx распознавал параметры "close" и "keep-alive" в строке "Connection"
в заголовке запроса только, если они были в нижнем регистре;
ошибка появилась в 0.6.11.
</para>
<para lang="en">
nginx supported low case only "close" and "keep-alive" values
in the "Connection" request header line;
the bug had appeared in 0.6.11.
</para>
</change>

<change type="bugfix">
<para lang="ru">
sub_filter не работал с пустой строкой замены.
</para>
<para lang="en">
sub_filter did not work with empty substitution.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в парсинге sub_filter.
</para>
<para lang="en">
in sub_filter parsing.
</para>
</change>

</changes>


<changes ver="0.6.13" date="2007-09-24">

<change type="bugfix">
<para lang="ru">
nginx не закрывал файл каталога для запроса HEAD,
если использовался autoindex<br/>
Спасибо Arkadiusz Patyk.
</para>
<para lang="en">
nginx did not close directory file on HEAD request if autoindex was used.<br/>
Thanks to Arkadiusz Patyk.
</para>
</change>

</changes>


<changes ver="0.6.12" date="2007-09-21">

<change type="change">
<para lang="ru">
почтовый прокси-сервер разделён на три модуля: pop3, imap и smtp.
</para>
<para lang="en">
mail proxy was split on three modules: pop3, imap and smtp.
</para>
</change>

<change type="feature">
<para lang="ru">
параметры конфигурации --without-mail_pop3_module,
--without-mail_imap_module и --without-mail_smtp_module.
</para>
<para lang="en">
the --without-mail_pop3_module, --without-mail_imap_module,
and --without-mail_smtp_module configuration parameters.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы smtp_greeting_delay и smtp_client_buffer модуля ngx_mail_smtp_module.
</para>
<para lang="en">
the "smtp_greeting_delay" and "smtp_client_buffer" directives
of the ngx_mail_smtp_module.
</para>
</change>

<change type="bugfix">
<para lang="ru">
wildcard в конце имени сервера не работали;
ошибка появилась в 0.6.9.
</para>
<para lang="en">
the trailing wildcards did not work;
the bug had appeared in 0.6.9.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании разделяемой библиотеки PCRE,
расположенной в нестандартном месте, nginx не запускался на Solaris.
</para>
<para lang="en">
nginx could not start on Solaris if the shared PCRE library located
in non-standard place was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директивы proxy_hide_header и fastcgi_hide_header не скрывали
строки заголовка ответа с именем больше 32 символов.<br/>
Спасибо Manlio Perillo.
</para>
<para lang="en">
the "proxy_hide_header" and "fastcgi_hide_header" directives did not
hide response header lines whose name was longer than 32 characters.<br/>
Thanks to Manlio Perillo.
</para>
</change>

</changes>


<changes ver="0.6.11" date="2007-09-11">

<change type="bugfix">
<para lang="ru">
счётчик активных соединений всегда рос при использовании почтового
прокси-сервера.
</para>
<para lang="en">
active connection counter always increased if mail proxy was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если бэкенд возвращал только заголовок ответа при небуферизированном
проксировании, то nginx закрывал соединение с бэкендом по таймауту.
</para>
<para lang="en">
if backend returned response header only using non-buffered proxy,
then nginx closed backend connection on timeout.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не поддерживал несколько строк "Connection" в заголовке запроса.
</para>
<para lang="en">
nginx did not support several "Connection" request header lines.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если в сервере апстрима был задан max_fails, то после первой же неудачной
попытки вес сервера навсегда становился равным одному;
ошибка появилась в 0.6.6.
</para>
<para lang="en">
if the "max_fails" was set for upstream server, then after first
failure server weight was always one;
the bug had appeared in 0.6.6.
</para>
</change>

</changes>


<changes ver="0.6.10" date="2007-09-03">

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

<change type="bugfix">
<para lang="ru">
утечки сокетов;
ошибка появилась в 0.6.7.
</para>
<para lang="en">
socket leak;
the bug had appeared in 0.6.7.
</para>
</change>

<change type="bugfix">
<para lang="ru">
В строку заголовка ответа "Content-Type", указанную в методе
$r->send_http_header(), не добавлялась кодировка, указанная в директиве charset.
</para>
<para lang="en">
a charset set by the "charset" directive was not appended
to the "Content-Type" header set by $r->send_http_header().
</para>
</change>

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

</changes>


<changes ver="0.6.9" date="2007-08-28">

<change type="bugfix">
<para lang="ru">
рабочий процесс мог зациклиться при использовании протокола HTTPS;
ошибка появилась в 0.6.7.
</para>
<para lang="en">
a worker process may got caught in an endless loop,
if the HTTPS protocol was used;
the bug had appeared in 0.6.7.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если сервер слушал на двух адресах или портах, то nginx не запускался
при использовании wildcard в конце имени сервера.
</para>
<para lang="en">
if server listened on two addresses or ports and trailing wildcard was used,
then nginx did not run.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива ip_hash могла неверно помечать сервера как нерабочие.
</para>
<para lang="en">
the "ip_hash" directive might incorrectly mark servers as down.
</para>
</change>

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

</changes>


<changes ver="0.6.8" date="2007-08-20">

<change type="change">
<para lang="ru">
теперь nginx пытается установить директивы worker_priority,
worker_rlimit_nofile, worker_rlimit_core, worker_rlimit_sigpending
без привилегий root'а.
</para>
<para lang="en">
now nginx tries to set the "worker_priority", "worker_rlimit_nofile",
"worker_rlimit_core", and "worker_rlimit_sigpending" without super-user
privileges.
</para>
</change>

<change type="change">
<para lang="ru">
теперь nginx экранирует символы пробела и "%" при передаче запроса
серверу аутентификации почтового прокси-сервера.
</para>
<para lang="en">
now nginx escapes space and "%" in request to a mail proxy authentication
server.
</para>
</change>

<change type="change">
<para lang="ru">
теперь nginx экранирует символ "%" в переменной $memcached_key.
</para>
<para lang="en">
now nginx escapes "%" in $memcached_key variable.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при указании относительного пути к конфигурационному файлу в качестве
параметра ключа -c nginx определял путь относительно конфигурационного префикса;
ошибка появилась в 0.6.6.
</para>
<para lang="en">
nginx used path relative to configuration prefix for non-absolute
configuration file path specified in the "-c" key;
the bug had appeared in 0.6.6.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не работал на FreeBSD/sparc64.
</para>
<para lang="en">
nginx did not work on FreeBSD/sparc64.
</para>
</change>

</changes>


<changes ver="0.6.7" date="2007-08-15">

<change type="change">
<para lang="ru">
теперь пути, указанные в директивах include, auth_basic_user_file,
perl_modules, ssl_certificate, ssl_certificate_key и
ssl_client_certificate, определяются относительно каталога конфигурационного
файла nginx.conf, а не относительно префикса.
</para>
<para lang="en">
now the paths specified in the "include", "auth_basic_user_file",
"perl_modules", "ssl_certificate", "ssl_certificate_key", and
"ssl_client_certificate" directives are relative to directory of
nginx configuration file nginx.conf, but not to nginx prefix directory.
</para>
</change>

<change type="change">
<para lang="ru">
параметр --sysconfdir=PATH в configure упразднён.
</para>
<para lang="en">
the --sysconfdir=PATH option in configure was canceled.
</para>
</change>

<change type="change">
<para lang="ru">
для обновления на лету версий 0.1.x создан специальный сценарий
<nobr>make upgrade1.</nobr>
</para>
<para lang="en">
the special make target "upgrade1" was defined for online upgrade of
0.1.x versions.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы server_name и valid_referers поддерживают регулярные выражения.
</para>
<para lang="en">
the "server_name" and "valid_referers" directives support regular expressions.
</para>
</change>

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

<change type="feature">
<para lang="ru">
модуль ngx_http_perl_module поддерживает метод $r->discard_request_body.
</para>
<para lang="en">
the ngx_http_perl_module supports the $r->discard_request_body.
</para>
</change>

<change type="feature">
<para lang="ru">
директива "add_header Last-Modified ..." меняет строку "Last-Modified"
в заголовке ответа.
</para>
<para lang="en">
the "add_header Last-Modified ..." directive changes the "Last-Modified"
response header line.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если на запрос с телом возвращался ответ с кодом HTTP отличным от 200,
и после этого запроса соединение переходило в состояние keep-alive,
то на следующий запрос nginx возвращал 400.
</para>
<para lang="en">
if a response different than 200 was returned to a request with body
and connection went to the keep-alive state after the request, then
nginx returned 400 for the next request.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если в директиве auth_http был задан неправильный адрес, то
в рабочем процессе происходил segmentation fault.
</para>
<para lang="en">
a segmentation fault occurred in worker process
if invalid address was set in the "auth_http" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
теперь по умолчанию nginx использует значение 511 для listen backlog
на всех платформах, кроме FreeBSD.<br/>
Спасибо Jiang Hong.
</para>
<para lang="en">
now nginx uses default listen backlog value 511 on all platforms
except FreeBSD.<br/>
Thanks to Jiang Hong.
</para>
</change>

<change type="bugfix">
<para lang="ru">
рабочий процесс мог зациклиться, если server в блоке upstream был помечен
как down;
ошибка появилась в 0.6.6.
</para>
<para lang="en">
a worker process may got caught in an endless loop, if a "server" inside
"upstream" block was marked as "down";
the bug had appeared in 0.6.6.
</para>
</change>

<change type="bugfix">
<para lang="ru">
sendfilev() в Solaris теперь не используется при передаче тела запроса
FastCGI-серверу через unix domain сокет.
</para>
<para lang="en">
now Solaris sendfilev() is not used to transfer the client request body
to FastCGI-server via the unix domain socket.
</para>
</change>

</changes>


<changes ver="0.6.6" date="2007-07-30">

<change type="feature">
<para lang="ru">
параметр --sysconfdir=PATH в configure.
</para>
<para lang="en">
the --sysconfdir=PATH option in configure.
</para>
</change>

<change type="feature">
<para lang="ru">
именованные location'ы.
</para>
<para lang="en">
named locations.
</para>
</change>

<change type="feature">
<para lang="ru">
переменную $args можно устанавливать с помощью set.
</para>
<para lang="en">
the $args variable can be set with the "set" directive.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
равномерное распределение запросов к апстримам с большими весами.
</para>
<para lang="en">
fair big weight upstream balancer.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если клиент в почтовом прокси-сервере закрывал соединение,
то nginx мог не закрывать соединение с бэкендом.
</para>
<para lang="en">
if a client has closed connection to mail proxy
 then nginx might not close connection to backend.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании одного хоста в качестве бэкендов для протоколов HTTP и HTTPS
без явного указания портов, nginx использовал только один порт&mdash;80 или 443.
</para>
<para lang="en">
if the same host without specified port was used as backend for HTTP and HTTPS,
then nginx used only one port&mdash;80 or 443.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался на Solaris/amd64 Sun Studio 11 и более ранними версиями;
ошибка появилась в 0.6.4.
</para>
<para lang="en">
fix building on Solaris/amd64 by Sun Studio 11 and early versions;
the bug had appeared in 0.6.4.
</para>
</change>

</changes>


<changes ver="0.6.5" date="2007-07-23">

<change type="feature">
<para lang="ru">
переменная $nginx_version.<br/>
Спасибо Николаю Гречуху.
</para>
<para lang="en">
$nginx_version variable.<br/>
Thanks to Nick S. Grechukh.
</para>
</change>

<change type="feature">
<para lang="ru">
почтовый прокси-сервер поддерживает AUTHENTICATE в режиме IMAP.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
the mail proxy supports AUTHENTICATE in IMAP mode.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="feature">
<para lang="ru">
почтовый прокси-сервер поддерживает STARTTLS в режиме SMTP.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
the mail proxy supports STARTTLS in SMTP mode.<br/>
Thanks to Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
теперь nginx экранирует пробел в переменной $memcached_key.
</para>
<para lang="en">
now nginx escapes space in $memcached_key variable.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx неправильно собирался Sun Studio на Solaris/amd64.<br/>
Спасибо Jiang Hong.
</para>
<para lang="en">
nginx was incorrectly built by Sun Studio on Solaris/amd64.<br/>
Thanks to Jiang Hong.
</para>
</change>

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

</changes>


<changes ver="0.6.4" date="2007-07-17">

<change type="security">
<para lang="ru">
при использовании директивы msie_refresh был возможен XSS.<br/>
Спасибо Максиму Богуку.
</para>
<para lang="en">
the "msie_refresh" directive allowed XSS.<br/>
Thanks to Maxim Boguk.
</para>
</change>

<change type="change">
<para lang="ru">
директивы proxy_store и fastcgi_store изменены.
</para>
<para lang="en">
the "proxy_store" and "fastcgi_store" directives were changed.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
nginx не работал на Solaris/sparc64, если был собран Sun Studio.<br/>
Спасибо Андрею Нигматулину.
</para>
<para lang="en">
nginx did not work on Solaris/sparc64 if it was built by Sun Studio.<br/>
Thanks to Andrei Nigmatulin.
</para>
</change>

<change type="workaround">
<para lang="ru">
обход ошибки в Sun Studio 12.<br/>
Спасибо Jiang Hong.
</para>
<para lang="en">
for Sun Studio 12.<br/>
Thanks to Jiang Hong.
</para>
</change>

</changes>


<changes ver="0.6.3" date="2007-07-12">

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

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

<change type="bugfix">
<para lang="ru">
если использовался метод аутентификации CRAM-MD5, но он не был разрешён,
то в рабочем процессе происходил segmentation fault.
</para>
<para lang="en">
a segmentation fault occurred in worker process
if the CRAM-MD5 authentication method was used, but it was not enabled.
</para>
</change>

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

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

<change type="bugfix">
<para lang="ru">
директивы proxy_ignore_client_abort и fastcgi_ignore_client_abort не работали;
ошибка появилась в 0.5.13.
</para>
<para lang="en">
the "proxy_ignore_client_abort" and "fastcgi_ignore_client_abort" directives
did not work;
the bug had appeared in 0.5.13.
</para>
</change>

</changes>


<changes ver="0.6.2" date="2007-07-09">

<change type="bugfix">
<para lang="ru">
если заголовок ответа был разделён в FastCGI-записях, то nginx передавал
клиенту мусор в таких заголовках.
</para>
<para lang="en">
if the FastCGI header was split in records,
then nginx passed garbage in the header to a client.
</para>
</change>

</changes>


<changes ver="0.6.1" date="2007-06-17">

<change type="bugfix">
<para lang="ru">
в парсинге SSI.
</para>
<para lang="en">
in SSI parsing.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании удалённого подзапроса в SSI последующий
подзапрос локального файла мог отдаваться клиенту в неверном порядке.
</para>
<para lang="en">
if remote SSI subrequest was used, then posterior local file subrequest
might transferred to client in wrong order.
</para>
</change>

<change type="bugfix">
<para lang="ru">
большие включения в SSI, сохранённые во временные файлы,
передавались не полностью.
</para>
<para lang="en">
large SSI inclusions buffered in temporary files were truncated.
</para>
</change>

<change type="bugfix">
<para lang="ru">
значение perl'овой переменной $$ модуля ngx_http_perl_module было равно
номеру главного процесса.
</para>
<para lang="en">
the perl $$ variable value in ngx_http_perl_module was equal to the master
process identification number.
</para>
</change>

</changes>


<changes ver="0.6.0" date="2007-06-14">

<change type="feature">
<para lang="ru">
директивы "server_name", "map", and "valid_referers" поддерживают
маски вида "www.example.*".
</para>
<para lang="en">
the "server_name", "map", and "valid_referers" directives support
the "www.example.*" wildcards.
</para>
</change>

</changes>


<changes ver="0.5.25" date="2007-06-11">

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

</changes>


<changes ver="0.5.24" date="2007-06-06">

<change type="security">
<para lang="ru">
директива ssl_verify_client не работала, если запрос выполнялся
по протоколу HTTP/0.9.
</para>
<para lang="en">
the "ssl_verify_client" directive did not work if request was made
using HTTP/0.9.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании сжатия часть ответа могла передаваться несжатой;
ошибка появилась в 0.5.23.
</para>
<para lang="en">
a part of response body might be passed uncompressed if gzip was used;
the bug had appeared in 0.5.23.
</para>
</change>

</changes>


<changes ver="0.5.23" date="2007-06-04">

<change type="feature">
<para lang="ru">
модуль ngx_http_ssl_module поддерживает расширение TLS Server Name Indication.
</para>
<para lang="en">
the ngx_http_ssl_module supports Server Name Indication TLS extension.
</para>
</change>

<change type="feature">
<para lang="ru">
директива fastcgi_catch_stderr.<br/>
Спасибо Николаю Гречуху, проект OWOX.
</para>
<para lang="en">
the "fastcgi_catch_stderr" directive.<br/>
Thanks to Nick S. Grechukh, OWOX project.
</para>
</change>

<change type="bugfix">
<para lang="ru">
на Линуксе в основном процессе происходил segmentation fault,
если два виртуальных сервера должны bind()ится к пересекающимся портам.
</para>
<para lang="en">
a segmentation fault occurred in master process if
two virtual servers should bind() to the overlapping ports.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если nginx был собран с модулем ngx_http_perl_module и perl
поддерживал потоки, то во время второй переконфигурации
выдавались ошибки "panic: MUTEX_LOCK" и "perl_parse() failed".
</para>
<para lang="en">
if nginx was built with ngx_http_perl_module and perl supported threads,
then during second reconfiguration the error messages
"panic: MUTEX_LOCK" and "perl_parse() failed" were issued.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в использовании протокола HTTPS в директиве proxy_pass.
</para>
<para lang="en">
in the HTTPS protocol in the "proxy_pass" directive.
</para>
</change>

</changes>


<changes ver="0.5.22" date="2007-05-29">

<change type="bugfix">
<para lang="ru">
большое тело запроса могло не передаваться бэкенду;
ошибка появилась в 0.5.21.
</para>
<para lang="en">
a big request body might not be passed to backend;
the bug had appeared in 0.5.21.
</para>
</change>

</changes>


<changes ver="0.5.21" date="2007-05-28">

<change type="bugfix">
<para lang="ru">
если внутри сервера описано больше примерно десяти location'ов,
то location'ы, заданные с помощью регулярного выражения,
могли выполняться не в том, порядке, в каком они описаны.
</para>
<para lang="en">
if server has more than about ten locations, then regex locations
might be chosen not in that order as they were specified.
</para>
</change>

<change type="bugfix">
<para lang="ru">
на 64-битной платформе рабочий процесс мог зациклиться, если 33-тий
по счёту или последующий бэкенд упал.<br/>
Спасибо Антону Поварову.
</para>
<para lang="en">
a worker process may got caught in an endless loop on 64-bit platform,
if the 33-rd or next in succession backend has failed.<br/>
Thanks to Anton Povarov.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании библиотеки PCRE на Solaris/sparc64
мог произойти bus error.<br/>
Спасибо Андрею Нигматулину.
</para>
<para lang="en">
a bus error might occur on Solaris/sparc64 if the PCRE library was used.<br/>
Thanks to Andrei Nigmatulin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в использовании протокола HTTPS в директиве proxy_pass.
</para>
<para lang="en">
in the HTTPS protocol in the "proxy_pass" directive.
</para>
</change>

</changes>


<changes ver="0.5.20" date="2007-05-07">

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

<change type="feature">
<para lang="ru">
переменные "$http_...", "$sent_http_..." и "$upstream_http_..."
можно менять директивой set.
</para>
<para lang="en">
the "$http_...", "$sent_http_...", and "$upstream_http_..." variables
may be changed using the "set" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании SSI-команды 'if expr="$var = /"'
в рабочем процессе мог произойти segmentation fault.
</para>
<para lang="en">
a segmentation fault might occur in worker process
if the SSI command 'if expr="$var = /"' was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
завершающая строка multipart range ответа передавалась неверно.<br/>
Спасибо Evan Miller.
</para>
<para lang="en">
trailing boundary of multipart range response was transferred incorrectly.<br/>
Thanks to Evan Miller.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не работал на Solaris/sparc64, если был собран Sun Studio.<br/>
Спасибо Андрею Нигматулину.
</para>
<para lang="en">
nginx did not work on Solaris/sparc64 if it was built by Sun Studio.<br/>
Thanks to Andrei Nigmatulin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_perl_module не собирался make в Solaris.<br/>
Спасибо Андрею Нигматулину.
</para>
<para lang="en">
the ngx_http_perl_module could not be built by Solaris make.<br/>
Thanks to Andrei Nigmatulin.
</para>
</change>

</changes>


<changes ver="0.5.19" date="2007-04-24">

<change type="change">
<para lang="ru">
значение переменной $request_time теперь записывается с точностью
до миллисекунд.
</para>
<para lang="en">
now the $request_time variable has millisecond precision.
</para>
</change>

<change type="change">
<para lang="ru">
метод $r->rflush в модуле ngx_http_perl_module переименован в $r->flush.
</para>
<para lang="en">
the method $r->rflush of ngx_http_perl_module was renamed to the $r->flush.
</para>
</change>

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

<change type="feature">
<para lang="ru">
директивы proxy_headers_hash_max_size и proxy_headers_hash_bucket_size.<br/>
Спасибо Володымыру Костырко.
</para>
<para lang="en">
the "proxy_headers_hash_max_size" and "proxy_headers_hash_bucket_size"
directives.<br/>
Thanks to Volodymyr Kostyrko.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании sendfile и limit_rate на 64-битных платформах
нельзя было передавать файлы больше 2G.
</para>
<para lang="en">
the files more than 2G could not be transferred using sendfile and limit_rate
on 64-bit platforms.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании sendfile на 64-битном Linux нельзя было передавать файлы
больше 2G.
</para>
<para lang="en">
the files more than 2G could not be transferred using sendfile on 64-bit Linux.
</para>
</change>

</changes>


<changes ver="0.5.18" date="2007-04-19">

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

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

<change type="feature">
<para lang="ru">
теперь переменные $upstream_status и $upstream_response_time
содержат данные о всех обращениях к апстримам, сделанным до X-Accel-Redirect.
</para>
<para lang="en">
now the $upstream_status and $upstream_response_time variables
keep data about all upstreams before X-Accel-Redirect.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если nginx был собран с модулем ngx_http_perl_module и perl
не поддерживал multiplicity, то после первой переконфигурации
и после получения любого сигнала
в основном процессе происходил segmentation fault;
ошибка появилась в 0.5.9.
</para>
<para lang="en">
a segmentation fault occurred in master process
after first reconfiguration and receiving any signal
if nginx was built with ngx_http_perl_module and perl
did not support multiplicity;
the bug had appeared in 0.5.9.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если perl не поддерживал multiplicity, то после переконфигурации
перловый код не работал;
ошибка появилась в 0.3.38.
</para>
<para lang="en">
if perl did not support multiplicity, then after reconfiguration
perl code did not work;
the bug had appeared in 0.3.38.
</para>
</change>

</changes>


<changes ver="0.5.17" date="2007-04-02">

<change type="change">
<para lang="ru">
теперь nginx для метода TRACE всегда возвращает код 405.
</para>
<para lang="en">
now nginx always returns the 405 status for the TRACE method.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь nginx поддерживает директиву include внутри блока types.
</para>
<para lang="en">
now nginx supports the "include" directive inside the "types" block.
</para>
</change>

<change type="bugfix">
<para lang="ru">
использование переменной $document_root в директиве root и alias
запрещено: оно вызывало рекурсивное переполнение стека.
</para>
<para lang="en">
the $document_root variable usage in the "root" and "alias" directives
is disabled: this caused recursive stack overflow.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в использовании протокола HTTPS в директиве proxy_pass.
</para>
<para lang="en">
in the HTTPS protocol in the "proxy_pass" directive.
</para>
</change>

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

</changes>


<changes ver="0.5.16" date="2007-03-26">

<change type="bugfix">
<para lang="ru">
в качестве ключа для хэша в директиве ip_hash не использовалась сеть
класса С.<br/>
Спасибо Павлу Ярковому.
</para>
<para lang="en">
the C-class network was not used as hash key in the "ip_hash" directive.<br/>
Thanks to Pavel Yarkovoy.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если в строке "Content-Type" в заголовке ответа бэкенда был указан charset
и строка завершалась символом ";",
то в рабочем процессе мог произойти segmentation fault;
ошибка появилась в 0.3.50.
</para>
<para lang="en">
a segmentation fault might occur in worker process
if a charset was set in the "Content-Type" header line and the line
has trailing ";";
the bug had appeared in 0.3.50.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки "[alert] zero size buf" при работе с FastCGI-сервером, если
тело запроса, записанное во временный файл, было кратно 32K.
</para>
<para lang="en">
the "[alert] zero size buf" error when FastCGI server was used and
a request body written in a temporary file was multiple of 32K.
</para>
</change>

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

</changes>


<changes ver="0.5.15" date="2007-03-19">

<change type="feature">
<para lang="ru">
почтовый прокси-сервер поддерживает аутентифицированное SMTP-проксирование и
директивы smtp_auth, smtp_capabilities и xclient.<br/>
Спасибо Антону Южанинову и Максиму Дунину.
</para>
<para lang="en">
the mail proxy supports authenticated SMTP proxying and
the "smtp_auth", "smtp_capabilities", and "xclient" directives.<br/>
Thanks to Anton Yuzhaninov and Maxim Dounin.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь keep-alive соединения закрываются сразу же по получении сигнала
переконфигурации.
</para>
<para lang="en">
now the keep-alive connections are closed just after receiving
the reconfiguration signal.
</para>
</change>

<change type="change">
<para lang="ru">
директивы imap и auth переименованы соответственно в mail и pop3_auth.
</para>
<para lang="en">
the "imap" and "auth" directives were renamed
to the "mail" and "pop3_auth" directives.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если использовался метод аутентификации CRAM-MD5 и не был разрешён метод APOP,
то в рабочем процессе происходил segmentation fault.
</para>
<para lang="en">
a segmentation fault occurred in worker process
if the CRAM-MD5 authentication method was used
and the APOP method was disabled.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директивы starttls only в протоколе POP3 nginx
разрешал аутентификацию без перехода в режим SSL.
</para>
<para lang="en">
if the "starttls only" directive was used in POP3 protocol,
then nginx allowed authentication without switching to the SSL mode.
</para>
</change>

<change type="bugfix">
<para lang="ru">
рабочие процессы не выходили после переконфигурации и не переоткрывали логи,
если использовался метод eventport.
</para>
<para lang="en">
worker processes did not exit after reconfiguration and
did not rotate logs if the eventport method was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директивы ip_hash рабочий процесс мог зациклиться.
</para>
<para lang="en">
a worker process may got caught in an endless loop,
if the "ip_hash" directive was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
теперь nginx не пишет в лог некоторые alert'ы,
если используются методы eventport или /dev/poll.
</para>
<para lang="en">
now nginx does not log some alerts if eventport or /dev/poll methods are used.
</para>
</change>

</changes>


<changes ver="0.5.14" date="2007-02-23">

<change type="bugfix">
<para lang="ru">
nginx игнорировал лишние закрывающие скобки "}" в конце
конфигурационного файла.
</para>
<para lang="en">
nginx ignored superfluous closing "}" in the end of configuration file.
</para>
</change>

</changes>


<changes ver="0.5.13" date="2007-02-19">

<change type="feature">
<para lang="ru">
методы COPY и MOVE.
</para>
<para lang="en">
the COPY and MOVE methods.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_realip_module устанавливал мусор для запросов,
переданных по keep-alive соединению.
</para>
<para lang="en">
the ngx_http_realip_module set garbage for requests passed via
keep-alive connection.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не работал на 64-битном big-endian Linux.<br/>
Спасибо Андрею Нигматулину.
</para>
<para lang="en">
nginx did not work on big-endian 64-bit Linux.<br/>
Thanks to Andrei Nigmatulin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при получении слишком длинной команды IMAP/POP3-прокси теперь сразу
закрывает соединение, а не по таймауту.
</para>
<para lang="en">
now when IMAP/POP3 proxy receives too long command it closes the connection
right away, but not after timeout.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если при использовании метода epoll клиент закрывал преждевременно
соединение со своей стороны, то nginx закрывал это соединение только
по истечении таймаута на передачу.
</para>
<para lang="en">
if the "epoll" method was used and a client closed a connection prematurely,
then nginx closed the connection after a send timeout only.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался на платформах, отличных от i386, amd64, sparc и ppc;
ошибка появилась в 0.5.8.
</para>
<para lang="en">
nginx could not be built on platforms different from i386, amd64, sparc,
and ppc;
the bug had appeared in 0.5.8.
</para>
</change>

</changes>


<changes ver="0.5.12" date="2007-02-12">

<change type="bugfix">
<para lang="ru">
nginx не собирался на платформах, отличных от i386, amd64, sparc и ppc;
ошибка появилась в 0.5.8.
</para>
<para lang="en">
nginx could not be built on platforms different from i386, amd64, sparc,
and ppc;
the bug had appeared in 0.5.8.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании временных файлов в время работы с FastCGI-сервером
в рабочем процессе мог произойти segmentation fault;
ошибка появилась в 0.5.8.
</para>
<para lang="en">
a segmentation fault might occur in worker process
if the temporary files were used while working with FastCGI server;
the bug had appeared in 0.5.8.
</para>
</change>

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

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

</changes>


<changes ver="0.5.11" date="2007-02-05">

<change type="feature">
<para lang="ru">
теперь configure определяет библиотеку PCRE в MacPorts.<br/>
Спасибо Chris McGrath.
</para>
<para lang="en">
now configure detects system PCRE library in MacPorts.<br/>
Thanks to Chris McGrath.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ответ был неверным, если запрашивалось несколько диапазонов;
ошибка появилась в 0.5.6.
</para>
<para lang="en">
the response was incorrect if several ranges were requested;
the bug had appeared in 0.5.6.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива create_full_put_path не могла создавать промежуточные каталоги,
если не была установлена директива dav_access.<br/>
Спасибо Evan Miller.
</para>
<para lang="en">
the "create_full_put_path" directive could not create the intermediate
directories if no "dav_access" directive was set.<br/>
Thanks to Evan Miller.
</para>
</change>

<change type="bugfix">
<para lang="ru">
вместо кодов ошибок "400" и "408" в access_log мог записываться код "0".
</para>
<para lang="en">
the "0" response code might be logged in the access_log instead of
the "400" and "408" error codes.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при сборке с оптимизацией -O2 в рабочем процессе мог произойти
segmentation fault.
</para>
<para lang="en">
a segmentation fault might occur in worker process
if nginx was built with -O2 optimization.
</para>
</change>

</changes>


<changes ver="0.5.10" date="2007-01-26">

<change type="bugfix">
<para lang="ru">
во время обновления исполняемого файла новый процесс не наследовал
слушающие сокеты;
ошибка появилась в 0.5.9.
</para>
<para lang="en">
while online executable file upgrade the new master process did not
inherit the listening sockets;
the bug had appeared in 0.5.9.
</para>
</change>

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

</changes>


<changes ver="0.5.9" date="2007-01-25">

<change type="change">
<para lang="ru">
модуль ngx_http_memcached_module теперь в качестве ключа использует
значение переменной $memcached_key.
</para>
<para lang="en">
now the ngx_http_memcached_module uses the $memcached_key variable value
as a key.
</para>
</change>

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

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

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

<change type="feature">
<para lang="ru">
директива sendfile работает внутри блока if.
</para>
<para lang="en">
the "sendfile" directive is available inside the "if" block.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь при ошибке записи в access_log nginx записывает сообщение в error_log,
но не чаще одного раза в минуту.
</para>
<para lang="en">
now on failure of the writing to access nginx logs a message to error_log,
but not more often than once a minute.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива "access_log off" не всегда запрещала запись в лог.
</para>
<para lang="en">
the "access_log off" directive did not always turn off the logging.
</para>
</change>

</changes>


<changes ver="0.5.8" date="2007-01-19">

<change type="bugfix">
<para lang="ru">
если использовалась директива <nobr>"client_body_in_file_only on"</nobr>
и тело запроса было небольшое, то мог произойти segmentation fault.
</para>
<para lang="en">
a segmentation fault might occur if
<nobr>"client_body_in_file_only on"</nobr> was used
and a request body was small.
</para>
</change>

<change type="bugfix">
<para lang="ru">
происходил segmentation fault, если использовались директивы
<nobr>"client_body_in_file_only on"</nobr>
и <nobr>"proxy_pass_request_body off"</nobr>
или <nobr>"fastcgi_pass_request_body off"</nobr>,
и делался переход к следующему бэкенду.
</para>
<para lang="en">
a segmentation fault occurred if <nobr>"client_body_in_file_only on"</nobr>
and <nobr>"proxy_pass_request_body off"</nobr>
or <nobr>"fastcgi_pass_request_body off"</nobr>
directives were used, and nginx switched to a next upstream.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если при использовании директивы "proxy_buffering off" соединение с клиентом
было неактивно, то оно закрывалось по таймауту, заданному директивой
send_timeout;
ошибка появилась в 0.4.7.
</para>
<para lang="en">
if the "proxy_buffering off" directive was used and a client connection
was non-active, then the connection was closed after send timeout;
the bug had appeared in 0.4.7.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если при использовании метода epoll клиент закрывал преждевременно
соединение со своей стороны, то nginx закрывал это соединение только
по истечении таймаута на передачу.
</para>
<para lang="en">
if the "epoll" method was used and a client closed a connection prematurely,
then nginx closed the connection after a send timeout only.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки "[alert] zero size buf" при работе с FastCGI-сервером.
</para>
<para lang="en">
the "[alert] zero size buf" error when FastCGI server was used.
</para>
</change>

<change>
<para lang="ru">
Исправление ошибок в директиве limit_zone.
</para>
<para lang="en">
Bugfixes in the "limit_zone" directive.
</para>
</change>

</changes>


<changes ver="0.5.7" date="2007-01-15">

<change type="feature">
<para lang="ru">
оптимизация использования памяти в ssl_session_cache.
</para>
<para lang="en">
the ssl_session_cache storage optimization.
</para>
</change>

<change>
<para lang="ru">
Исправление ошибок в директивах ssl_session_cache и limit_zone.
</para>
<para lang="en">
Bugfixes in the "ssl_session_cache" and "limit_zone" directives.
</para>
</change>

<change type="bugfix">
<para lang="ru">
на старте или во время переконфигурации происходил segmentation fault,
если директивы ssl_session_cache или limit_zone использовались
на 64-битных платформах.
</para>
<para lang="en">
the segmentation fault was occurred on start or while reconfiguration
if the "ssl_session_cache" or "limit_zone" directives were used
on 64-bit platforms.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директив add_before_body или add_after_body происходил
segmentation fault, если в заголовке ответа нет строки "Content-Type".
</para>
<para lang="en">
a segmentation fault occurred if the "add_before_body" or "add_after_body"
directives were used and there was no "Content-Type" header line in response.
</para>
</change>

<change type="bugfix">
<para lang="ru">
библиотека OpenSSL всегда собиралась с поддержкой потоков.<br/>
Спасибо Дену Иванову.
</para>
<para lang="en">
the OpenSSL library was always built with the threads support.<br/>
Thanks to Den Ivanov.
</para>
</change>

<change type="bugfix">
<para lang="ru">
совместимость библиотеки PCRE-6.5+ и компилятора icc.
</para>
<para lang="en">
the PCRE-6.5+ library and the icc compiler compatibility.
</para>
</change>

</changes>


<changes ver="0.5.6" date="2007-01-09">

<change type="change">
<para lang="ru">
теперь модуль ngx_http_index_module игнорирует все методы,
кроме GET, HEAD и POST.
</para>
<para lang="en">
now the ngx_http_index_module ignores all methods except the GET, HEAD, and
POST methods.
</para>
</change>

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

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

<change type="feature">
<para lang="ru">
директивы ssl_session_cache модулей ngx_http_ssl_module и ngx_imap_ssl_module.
</para>
<para lang="en">
the "ssl_session_cache" directives
of the ngx_http_ssl_module and ngx_imap_ssl_module.
</para>
</change>

<change type="feature">
<para lang="ru">
метод DELETE поддерживает рекурсивное удаление.
</para>
<para lang="en">
the DELETE method supports recursive removal.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании $r->sendfile() byte-ranges передавались неверно.
</para>
<para lang="en">
the byte-ranges were transferred incorrectly if the $r->sendfile() was used.
</para>
</change>

</changes>


<changes ver="0.5.5" date="2006-12-24">

<change type="change">
<para lang="ru">
ключ -v больше не выводит информацию о компиляторе.
</para>
<para lang="en">
the -v switch does not show compiler information any more.
</para>
</change>

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

<change type="feature">
<para lang="ru">
директива worker_rlimit_core поддерживает указание размера в K, M и G.
</para>
<para lang="en">
the "worker_rlimit_core" directive supports size in K, M, and G.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль nginx.pm теперь может устанавливаться непривилегированным пользователем.
</para>
<para lang="en">
the nginx.pm module now could be installed by an unprivileged user.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании методов $r->request_body или $r->request_body_file мог
произойти segmentation fault.
</para>
<para lang="en">
a segmentation fault might occur if the $r->request_body or
$r->request_body_file methods were used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибок, специфичных для платформы ppc.
</para>
<para lang="en">
the ppc platform specific bugs.
</para>
</change>

</changes>


<changes ver="0.5.4" date="2006-12-15">

<change type="feature">
<para lang="ru">
директиву perl можно использовать внутри блока limit_except.
</para>
<para lang="en">
the "perl" directive may be used inside the "limit_except" block.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_dav_module требовал строку "Date" в заголовке запроса
для метода DELETE.
</para>
<para lang="en">
the ngx_http_dav_module required the "Date" request header line
for the DELETE method.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании одного параметра в директиве dav_access nginx мог
сообщить об ошибке в конфигурации.
</para>
<para lang="en">
if one only parameter was used in the "dav_access" directive, then
nginx might report about configuration error.
</para>
</change>

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

</changes>


<changes ver="0.5.3" date="2006-12-13">

<change type="feature">
<para lang="ru">
модуль ngx_http_perl_module поддерживает методы $r->status, $r->log_error
и $r->sleep.
</para>
<para lang="en">
the ngx_http_perl_module supports the $r->status, $r->log_error,
and $r->sleep methods.
</para>
</change>

<change type="feature">
<para lang="ru">
метод $r->variable поддерживает переменные, неописанные в конфигурации nginx'а.
</para>
<para lang="en">
the $r->variable method supports variables that do not exist in nginx
configuration.
</para>
</change>

<change type="bugfix">
<para lang="ru">
метод $r->has_request_body не работал.
</para>
<para lang="en">
the $r->has_request_body method did not work.
</para>
</change>

</changes>


<changes ver="0.5.2" date="2006-12-11">

<change type="bugfix">
<para lang="ru">
если в директивах proxy_pass использовалось имя, указанное в upstream,
то nginx пытался найти IP-адрес этого имени;
ошибка появилась в 0.5.1.
</para>
<para lang="en">
if the "proxy_pass" directive used the name of the "upstream" block,
then nginx tried to resolve the name;
the bug had appeared in 0.5.1.
</para>
</change>

</changes>


<changes ver="0.5.1" date="2006-12-11">

<change type="bugfix">
<para lang="ru">
директива post_action могла не работать после неудачного завершения запроса.
</para>
<para lang="en">
the "post_action" directive might not run after a unsuccessful completion
of a request.
</para>
</change>

<change type="workaround">
<para lang="ru">
обход ошибки в Eudora для Mac;
ошибка появилась в 0.4.11.<br/>
Спасибо Bron Gondwana.
</para>
<para lang="en">
for Eudora for Mac;
the bug had appeared in 0.4.11.<br/>
Thanks to Bron Gondwana.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при указании в директиве fastcgi_pass имени описанного upstream'а выдавалось
сообщение "no port in upstream";
ошибка появилась в 0.5.0.
</para>
<para lang="en">
if the "upstream" name was used in the "fastcgi_pass", then the message
"no port in upstream" was issued;
the bug had appeared in 0.5.0.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если в директивах proxy_pass и fastcgi_pass использовались одинаковых имена
серверов, но с разными портами, то эти директивы использовали первый
описанный порт;
ошибка появилась в 0.5.0.
</para>
<para lang="en">
if the "proxy_pass" and "fastcgi_pass" directives used the same servers but
different ports, then these directives uses the first described port;
the bug had appeared in 0.5.0.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если в директивах proxy_pass и fastcgi_pass использовались unix domain сокеты,
то эти директивы использовали первый описанный сокет;
ошибка появилась в 0.5.0.
</para>
<para lang="en">
if the "proxy_pass" and "fastcgi_pass" directives used the unix domain sockets,
then these directives used first described socket;
the bug had appeared in 0.5.0.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ngx_http_auth_basic_module игнорировал пользователя, если он был указан
в последней строке файла паролей и после пароля не было перевода строки,
возврата каретки или символа ":".
</para>
<para lang="en">
ngx_http_auth_basic_module ignored the user if it was in the last line in
the password file and there was no the carriage return, the line feed,
or the ":" symbol after the password.
</para>
</change>

<change type="bugfix">
<para lang="ru">
переменная $upstream_response_time могла быть равна "0.000", хотя время
обработки было больше 1 миллисекунды.
</para>
<para lang="en">
the $upstream_response_time variable might be equal to "0.000", although
response time was more than 1 millisecond.
</para>
</change>

</changes>


<changes ver="0.5.0" date="2006-12-04">

<change type="change">
<para lang="ru">
параметры в виде "%name" в директиве log_format больше не поддерживаются.
</para>
<para lang="en">
the parameters in the "%name" form in the "log_format" directive
are not supported anymore.
</para>
</change>

<change type="change">
<para lang="ru">
директивы proxy_upstream_max_fails, proxy_upstream_fail_timeout,
fastcgi_upstream_max_fails, и fastcgi_upstream_fail_timeout,
memcached_upstream_max_fails и memcached_upstream_fail_timeout
больше не поддерживаются.
</para>
<para lang="en">
the "proxy_upstream_max_fails", "proxy_upstream_fail_timeout",
"fastcgi_upstream_max_fails", "fastcgi_upstream_fail_timeout",
"memcached_upstream_max_fails", and "memcached_upstream_fail_timeout"
directives are not supported anymore.
</para>
</change>

<change type="feature">
<para lang="ru">
директива server в блоке upstream поддерживает параметры
max_fails, fail_timeout и down.
</para>
<para lang="en">
the "server" directive in the "upstream" context supports
the "max_fails", "fail_timeout", and "down" parameters.
</para>
</change>

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

<change type="feature">
<para lang="ru">
статус WAIT в строке "Auth-Status" в заголовке ответа сервера аутентификации
IMAP/POP3 прокси.
</para>
<para lang="en">
the WAIT status in the "Auth-Status" header line of the IMAP/POP3 proxy
authentication server response.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался на 64-битных платформах;
ошибка появилась в 0.4.14.
</para>
<para lang="en">
nginx could not be built on 64-bit platforms;
the bug had appeared in 0.4.14.
</para>
</change>

</changes>


<changes ver="0.4.14" date="2006-11-27">

<change type="feature">
<para lang="ru">
директива proxy_pass_error_message в IMAP/POP3 прокси.
</para>
<para lang="en">
the "proxy_pass_error_message" directive in IMAP/POP3 proxy.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь configure определяет библиотеку PCRE на FreeBSD, Linux и NetBSD.
</para>
<para lang="en">
now configure detects system PCRE library on FreeBSD, Linux, and NetBSD.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ngx_http_perl_module не работал с перлом, собранным с поддержкой потоков;
ошибка появилась в 0.3.38.
</para>
<para lang="en">
ngx_http_perl_module did not work with perl built with the threads support;
the bug had appeared in 0.3.38.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ngx_http_perl_module не работал корректно, если перл вызывался рекурсивно.
</para>
<para lang="en">
ngx_http_perl_module did not work if perl was called recursively.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx игнорировал имя сервера в строке запроса.
</para>
<para lang="en">
nginx ignored a host name in a request line.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если FastCGI сервер передавал много в stderr,
то рабочий процесс мог зациклиться.
</para>
<para lang="en">
a worker process may got caught in an endless loop,
if a FastCGI server sent too many data to the stderr.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при изменении системного времени переменная $upstream_response_time
могла быть отрицательной.
</para>
<para lang="en">
the $upstream_response_time variable may be negative if the system time
was changed backward.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании POP3 серверу аутентификации IMAP/POP3 прокси
не передавался параметр Auth-Login-Attempt.
</para>
<para lang="en">
the "Auth-Login-Attempt" parameter was not sent to
IMAP/POP3 proxy authentication server when POP3 was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при ошибке соединения с сервером аутентификации IMAP/POP3 прокси
мог произойти segmentation fault.
</para>
<para lang="en">
a segmentation fault might occur if connect to IMAP/POP3 proxy
authentication server failed.
</para>
</change>

</changes>


<changes ver="0.4.13" date="2006-11-15">

<change type="feature">
<para lang="ru">
директиву proxy_pass можно использовать внутри блока limit_except.
</para>
<para lang="en">
the "proxy_pass" directive may be used inside the "limit_except" block.
</para>
</change>

<change type="feature">
<para lang="ru">
директива limit_except поддерживает все WebDAV методы.
</para>
<para lang="en">
the "limit_except" directive supports all WebDAV methods.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директивы add_before_body без директивы add_after_body
ответ передавался не полностью.
</para>
<para lang="en">
if the "add_before_body" directive was used without
the "add_after_body" directive, then a response did not transferred complete.
</para>
</change>

<change type="bugfix">
<para lang="ru">
большое тело запроса не принималось, если использовались метод epoll
и deferred accept().
</para>
<para lang="en">
a large request body did not receive if the epoll method
and the deferred accept() were used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
для ответов модуля ngx_http_autoindex_module не выставлялась кодировка;
ошибка появилась в 0.3.50.
</para>
<para lang="en">
a charset could not be set for ngx_http_autoindex_module responses;
the bug had appeared in 0.3.50.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки "[alert] zero size buf" при работе с FastCGI-сервером;
</para>
<para lang="en">
the "[alert] zero size buf" error when FastCGI server was used;
</para>
</change>

<change type="bugfix">
<para lang="ru">
параметр конфигурации --group= игнорировался.<br/>
Спасибо Thomas Moschny.
</para>
<para lang="en">
the --group= configuration parameter was ignored.<br/>
Thanks to Thomas Moschny.
</para>
</change>

<change type="bugfix">
<para lang="ru">
50-й подзапрос в SSI ответе не работал;
ошибка появилась в 0.3.50.
</para>
<para lang="en">
the 50th subrequest in SSI response did not work;
the bug had appeared in 0.3.50.
</para>
</change>

</changes>


<changes ver="0.4.12" date="2006-10-31">

<change type="feature">
<para lang="ru">
модуль ngx_http_perl_module поддерживает метод $r->variable.
</para>
<para lang="en">
the ngx_http_perl_module supports the $r->variable method.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при включении в ответ большого статического файла с помощью SSI
ответ мог передаваться не полностью.
</para>
<para lang="en">
if a big static file was included using SSI in a response,
then the response may be transferred incomplete.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не убирал "#fragment" в URI.
</para>
<para lang="en">
nginx did not omit the "#fragment" part in URI.
</para>
</change>

</changes>


<changes ver="0.4.11" date="2006-10-25">

<change type="feature">
<para lang="ru">
POP3 прокси поддерживает AUTH LOGIN PLAIN и CRAM-MD5.
</para>
<para lang="en">
the POP3 proxy supports the AUTH LOGIN PLAIN and CRAM-MD5.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_http_perl_module поддерживает метод $r->allow_ranges.
</para>
<para lang="en">
the ngx_http_perl_module supports the $r->allow_ranges method.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при включённой поддержке команды APOP в POP3 прокси могли
не работать команды USER/PASS;
ошибка появилась в 0.4.10.
</para>
<para lang="en">
if the APOP was enabled in the POP3 proxy, then the USER/PASS commands
might not work;
the bug had appeared in 0.4.10.
</para>
</change>

</changes>


<changes ver="0.4.10" date="2006-10-23">

<change type="feature">
<para lang="ru">
POP3 прокси поддерживает APOP.
</para>
<para lang="en">
the POP3 proxy supports the APOP command.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании методов select, poll и /dev/poll во время ожидания
ответа от сервера аутентификации IMAP/POP3 прокси нагружал процессор.
</para>
<para lang="en">
if the select, poll or /dev/poll methods were used, then while
waiting authentication server response the IMAP/POP3 proxy hogged CPU.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании переменной $server_addr в директиве map мог
произойти segmentation fault.
</para>
<para lang="en">
a segmentation fault might occur if the $server_addr variable was used
in the "map" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_flv_module не поддерживал byte ranges для полных ответов;
ошибка появилась в 0.4.7.
</para>
<para lang="en">
the ngx_http_flv_module did not support the byte ranges for full responses;
the bug had appeared in 0.4.7.
</para>
</change>

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

</changes>


<changes ver="0.4.9" date="2006-10-13">

<change type="feature">
<para lang="ru">
параметр set в команде SSI include.
</para>
<para lang="en">
the "set" parameter in the "include" SSI command.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_http_perl_module теперь проверяет версию модуля nginx.pm.
</para>
<para lang="en">
the ngx_http_perl_module now tests the nginx.pm module version.
</para>
</change>

</changes>


<changes ver="0.4.8" date="2006-10-11">

<change type="bugfix">
<para lang="ru">
если до команды SSI include с параметром wait выполнялась ещё
одна команда SSI include, то параметр wait мог не работать.
</para>
<para lang="en">
if an "include" SSI command were before another "include" SSI command
with a "wait" parameter, then the "wait" parameter might not work.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_flv_module добавлял FLV-заголовок для полных ответов.<br/>
Спасибо Алексею Ковырину.
</para>
<para lang="en">
the ngx_http_flv_module added the FLV header to the full responses.<br/>
Thanks to Alexey Kovyrin.
</para>
</change>

</changes>


<changes ver="0.4.7" date="2006-10-10">

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

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

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

<change type="bugfix">
<para lang="ru">
если до команды SSI include с параметром wait выполнялась ещё
одна команда SSI include, то параметр wait мог не работать.
</para>
<para lang="en">
if an "include" SSI command were before another "include" SSI command
with a "wait" parameter, then the "wait" parameter might not work.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании директивы "proxy_buffering off" или при работе
с memcached соединения могли не закрываться по таймауту.
</para>
<para lang="en">
if the "proxy_buffering off" directive was used or while working with
memcached the connections might not be closed on timeout.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не запускался на 64-битных платформах, отличных от amd64, sparc64 и ppc64.
</para>
<para lang="en">
nginx did not run on 64-bit platforms except amd64, sparc64, and ppc64.
</para>
</change>

</changes>


<changes ver="0.4.6" date="2006-10-06">

<change type="bugfix">
<para lang="ru">
nginx не запускался на 64-битных платформах, отличных от amd64, sparc64 и ppc64.
</para>
<para lang="en">
nginx did not run on 64-bit platforms except amd64, sparc64, and ppc64.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при запросе версии HTTP/1.1 nginx передавал ответ chunk'ами,
если длина ответа в методе $r->headers_out("Content-Length", ...)
была задана текстовой строкой.
</para>
<para lang="en">
nginx sent the chunked response for HTTP/1.1 request,<br/>
if its length was set by text string in
the $r->headers_out("Content-Length", ...) method.
</para>
</change>

<change type="bugfix">
<para lang="ru">
после перенаправления ошибки с помощью директивы error_page любая директива
модуля ngx_http_rewrite_module возвращала эту ошибку;
ошибка появилась в 0.4.4.
</para>
<para lang="en">
after redirecting error by an "error_page" directive
any ngx_http_rewrite_module directive returned this error code;
the bug had appeared in 0.4.4.
</para>
</change>

</changes>


<changes ver="0.4.5" date="2006-10-02">

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

</changes>


<changes ver="0.4.4" date="2006-10-02">

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

<change type="feature">
<para lang="ru">
директива expires поддерживает параметр max.
</para>
<para lang="en">
the "expires" directive supports the "max" parameter.
</para>
</change>

<change type="feature">
<para lang="ru">
директива include поддерживает маску "*".<br/>
Спасибо Jonathan Dance.
</para>
<para lang="en">
the "include" directive supports the "*" mask.<br/>
Thanks to Jonathan Dance.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива return всегда изменяла код ответа, перенаправленного
директивой error_page.
</para>
<para lang="en">
the "return" directive always overrode the "error_page" response code
redirected by the "error_page" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
происходил segmentation fault, если в методе PUT передавалось
тело нулевой длины.
</para>
<para lang="en">
a segmentation fault occurred if zero-length body was in PUT method.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании переменных в директиве proxy_redirect редирект
изменялся неверно.
</para>
<para lang="en">
the redirect was changed incorrectly if the variables were used
in the "proxy_redirect" directive.
</para>
</change>

</changes>


<changes ver="0.4.3" date="2006-09-26">

<change type="change">
<para lang="ru">
ошибку 499 теперь нельзя перенаправить с помощью директивы error_page.
</para>
<para lang="en">
now the 499 error could not be redirected using an "error_page" directive.
</para>
</change>

<change type="feature">
<para lang="ru">
поддержка Solaris 10 event ports.
</para>
<para lang="en">
the Solaris 10 event ports support.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
при перенаправлении ошибки 400 проксированному серверу
помощью директивы error_page мог произойти segmentation fault.
</para>
<para lang="en">
a segmentation fault may occur while redirecting the 400 error
to the proxied server using a "proxy_pass" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
происходил segmentation fault, если в директиве proxy_pass использовался
unix domain сокет;
ошибка появилась в 0.3.47.
</para>
<para lang="en">
a segmentation fault occurred if an unix domain socket was used in
a "proxy_pass" directive;
the bug had appeared in 0.3.47.
</para>
</change>

<change type="bugfix">
<para lang="ru">
SSI не работал с ответами memcached и небуферизированными проксированными
ответами.
</para>
<para lang="en">
SSI did work with memcached and nonbuffered responses.
</para>
</change>

<change type="workaround">
<para lang="ru">
обход ошибки PAUSE hardware capability в Sun Studio.
</para>
<para lang="en">
of the Sun Studio PAUSE hardware capability bug.
</para>
</change>

</changes>


<changes ver="0.4.2" date="2006-09-14">

<change type="bugfix">
<para lang="ru">
убрана поддержка флага O_NOATIME на Linux;
ошибка появилась в 0.4.1.
</para>
<para lang="en">
the O_NOATIME flag support on Linux was canceled;
the bug had appeared in 0.4.1.
</para>
</change>

</changes>


<changes ver="0.4.1" date="2006-09-14">

<change type="bugfix">
<para lang="ru">
совместимость с DragonFlyBSD.<br/>
Спасибо Павлу Назарову.
</para>
<para lang="en">
the DragonFlyBSD compatibility.<br/>
Thanks to Pavel Nazarov.
</para>
</change>

<change type="workaround">
<para lang="ru">
обход ошибки в sendfile() в 64-битном Linux при передаче файлов больше 2G.
</para>
<para lang="en">
of bug in 64-bit Linux sendfile(), when file is more than 2G.
</para>
</change>

<change type="feature">
<para lang="ru">
теперь на Linux nginx для статических запросов использует флаг O_NOATIME.<br/>
Спасибо Yusuf Goolamabbas.
</para>
<para lang="en">
now on Linux nginx uses O_NOATIME flag for static requests.<br/>
Thanks to Yusuf Goolamabbas.
</para>
</change>

</changes>


<changes ver="0.4.0" date="2006-08-30">

<change>
<para lang="ru">
Изменение во внутреннем API: инициализация модулей HTTP перенесена из фазы
init module в фазу HTTP postconfiguration.
</para>
<para lang="en">
Change in internal API: the HTTP modules initialization was moved
from the init module phase to the HTTP postconfiguration phase.
</para>
</change>

<change type="change">
<para lang="ru">
теперь тело запроса в модуле ngx_http_perl_module не считывается
заранее: нужно явно инициировать чтение с помощью метода $r->has_request_body.
</para>
<para lang="en">
now the request body is not read beforehand for the ngx_http_perl_module:
it's required to start the reading using the $r->has_request_body method.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_http_perl_module поддерживает код возврата DECLINED.
</para>
<para lang="en">
the ngx_http_perl_module supports the DECLINED return code.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_http_dav_module поддерживает входящую строку заголовка "Date"
для метода PUT.
</para>
<para lang="en">
the ngx_http_dav_module supports the incoming "Date" header line
for the PUT method.
</para>
</change>

<change type="feature">
<para lang="ru">
директива ssi работает внутри блока if.
</para>
<para lang="en">
the "ssi" directive is available inside the "if" block.
</para>
</change>

<change type="bugfix">
<para lang="ru">
происходил segmentation fault, если в директиве index использовалась
переменные и при этом первое имя индексного файла было без переменных;
ошибка появилась в 0.1.29.
</para>
<para lang="en">
a segmentation fault occurred if there was an "index" directive with
variables and the first index name was without variables;
the bug had appeared in 0.1.29.
</para>
</change>

</changes>


<changes ver="0.3.61" date="2006-08-28">

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

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

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

<change type="bugfix">
<para lang="ru">
директива rewrite возвращала неправильный редирект, если редирект
включал в себя выделенные закодированные символы из оригинального URI.
</para>
<para lang="en">
the "rewrite" directive returned incorrect redirect, if the redirect
had the captured escaped symbols from original URI.
</para>
</change>

</changes>


<changes ver="0.3.60" date="2006-08-18">

<change type="bugfix">
<para lang="ru">
во время перенаправления ошибки рабочий процесс мог зациклиться;
ошибка появилась в 0.3.59.
</para>
<para lang="en">
a worker process may got caught in an endless loop
while an error redirection;
the bug had appeared in 0.3.59.
</para>
</change>

</changes>


<changes ver="0.3.59" date="2006-08-16">

<change type="feature">
<para lang="ru">
теперь можно делать несколько перенаправлений через директиву error_page.
</para>
<para lang="en">
now is possible to do several redirection using the "error_page" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива dav_access не поддерживала три параметра.
</para>
<para lang="en">
the "dav_access" directive did not support three parameters.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива error_page не изменяла строку "Content-Type"
после перенаправления с помощью "X-Accel-Redirect";
ошибка появилась в 0.3.58.
</para>
<para lang="en">
the "error_page" directive did not changes the "Content-Type" header line
after the "X-Accel-Redirect" was used;
the bug had appeared in 0.3.58.
</para>
</change>

</changes>


<changes ver="0.3.58" date="2006-08-14">

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

<change type="change">
<para lang="ru">
теперь на Linux используется интерфейс procfs вместо sysctl.
</para>
<para lang="en">
now the procfs interface instead of sysctl is used on Linux.
</para>
</change>

<change type="change">
<para lang="ru">
теперь при использовании "X-Accel-Redirect" строка "Content-Type" наследуется
из первоначального ответа.
</para>
<para lang="en">
now the "Content-Type" header line is inherited from first response
when the "X-Accel-Redirect" was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива error_page не перенаправляла ошибку 413.
</para>
<para lang="en">
the "error_page" directive did not redirect the 413 error.
</para>
</change>

<change type="bugfix">
<para lang="ru">
завершающий "?" не удалял старые аргументы, если в переписанном URI
не было новых аргументов.
</para>
<para lang="en">
the trailing "?" did not remove old arguments if no new arguments
were added to a rewritten URI.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не запускался на 64-битной FreeBSD 7.0-CURRENT.
</para>
<para lang="en">
nginx could not run on 64-bit FreeBSD 7.0-CURRENT.
</para>
</change>

</changes>


<changes ver="0.3.57" date="2006-08-09">

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

<change type="bugfix">
<para lang="ru">
в операторе "!-e" в директиве if.<br/>
Спасибо Андриану Буданцову.
</para>
<para lang="en">
in the "!-e" operator of the "if" directive.<br/>
Thanks to Andrian Budanstov.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при проверке клиентского сертификата nginx не передавал клиенту
информацию о требуемых сертификатах.
</para>
<para lang="en">
while a client certificate verification nginx did not send to a client
the required certificates information.
</para>
</change>

<change type="bugfix">
<para lang="ru">
переменная $document_root не поддерживала переменные в директиве root.
</para>
<para lang="en">
the $document_root variable did not support the variables in the "root"
directive.
</para>
</change>

</changes>


<changes ver="0.3.56" date="2006-08-04">

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

<change type="feature">
<para lang="ru">
директива if поддерживает операторы "-d", "!-d", "-e", "!-e", "-x" и "!-x".
</para>
<para lang="en">
the "if" directive supports the "-d", "!-d", "-e", "!-e", "-x", and "!-x"
operators.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при записи в access_log некоторых передаваемых клиенту строк заголовков
происходил segmentation fault, если запрос возвращал редирект.
</para>
<para lang="en">
a segmentation fault occurred if a request returned a redirect and
some sent to client header lines were logged in the access log.
</para>
</change>

</changes>


<changes ver="0.3.55" date="2006-07-28">

<change type="feature">
<para lang="ru">
параметр stub в команде SSI include.
</para>
<para lang="en">
the "stub" parameter in the "include" SSI command.
</para>
</change>

<change type="feature">
<para lang="ru">
команда SSI block.
</para>
<para lang="en">
the "block" SSI command.
</para>
</change>

<change type="feature">
<para lang="ru">
скрипт unicode2nginx добавлен в contrib.
</para>
<para lang="en">
the unicode2nginx script was added to contrib.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если root был задан только переменной, то корень задавался
относительно префикса сервера.
</para>
<para lang="en">
if a "root" was specified by variable only, then the root was relative
to a server prefix.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если в запросе был "//" или "/.", и после этого закодированные
символы в виде "%XX", то проксируемый запрос передавался незакодированным.
</para>
<para lang="en">
if the request contained "//" or "/./" and escaped symbols after them,
then the proxied request was sent unescaped.
</para>
</change>

<change type="bugfix">
<para lang="ru">
метод $r->header_in("Cookie") модуля ngx_http_perl_module теперь возвращает
все строки "Cookie" в заголовке запроса.
</para>
<para lang="en">
the $r->header_in("Cookie") of the ngx_http_perl_module now returns
all "Cookie" header lines.
</para>
</change>

<change type="bugfix">
<para lang="ru">
происходил segmentation fault, если использовался
<nobr>"client_body_in_file_only on"</nobr>
и делался переход к следующему бэкенду.
</para>
<para lang="en">
a segmentation fault occurred if <nobr>"client_body_in_file_only on"</nobr>
was used and nginx switched to a next upstream.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при некоторых условиях во время переконфигурации коды символов
внутри директивы charset_map могли считаться неверными;
ошибка появилась в 0.3.50.
</para>
<para lang="en">
on some condition while reconfiguration character codes
inside the "charset_map" may be treated invalid;
the bug had appeared in 0.3.50.
</para>
</change>

</changes>


<changes ver="0.3.54" date="2006-07-11">

<change type="feature">
<para lang="ru">
nginx теперь записывает в лог информацию о подзапросах.
</para>
<para lang="en">
nginx now logs the subrequest information to the error log.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы proxy_next_upstream, fastcgi_next_upstream и memcached_next_upstream
поддерживают параметр off.
</para>
<para lang="en">
the "proxy_next_upstream", "fastcgi_next_upstream",
and "memcached_next_upstream" directives support the "off" parameter.
</para>
</change>

<change type="feature">
<para lang="ru">
директива debug_connection поддерживает запись адресов в формате CIDR.
</para>
<para lang="en">
the "debug_connection" directive supports the CIDR address form.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при перекодировании ответа проксированного сервера или сервера FastCGI
в UTF-8 или наоборот ответ мог передаваться не полностью.
</para>
<para lang="en">
if a response of proxied server or FastCGI server was converted from UTF-8
or back, then it may be transferred incomplete.
</para>
</change>

<change type="bugfix">
<para lang="ru">
переменная $upstream_response_time содержала время только первого
обращения к бэкенду.
</para>
<para lang="en">
the $upstream_response_time variable had the time of the first
request to a backend only.
</para>
</change>

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

</changes>


<changes ver="0.3.53" date="2006-07-07">

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

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

<change type="feature">
<para lang="ru">
директива server_name поддерживает маску "*".
</para>
<para lang="en">
the "server_name" directive supports the "*" wildcard.
</para>
</change>

<change type="feature">
<para lang="ru">
nginx поддерживает тело запроса больше 2G.
</para>
<para lang="en">
nginx supports the request body size more than 2G.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если при использовании "satisfy_any on" клиент успешно проходил аутентификацию,
в лог всё равно записалоcь сообщение "access forbidden by rule".
</para>
<para lang="en">
if a client was successfully authorized using "satisfy_any on", then anyway
the message "access forbidden by rule" was written in the log.
</para>
</change>

<change type="bugfix">
<para lang="ru">
метод PUT мог ошибочно не создать файл и вернуть код 409.
</para>
<para lang="en">
the "PUT" method may erroneously not create a file and return the 409 code.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если во время аутентификации IMAP/POP3 бэкенд возвращал ошибку, nginx
продолжал проксирование.
</para>
<para lang="en">
if the IMAP/POP3 backend returned an error, then nginx continued proxying
anyway.
</para>
</change>

</changes>


<changes ver="0.3.52" date="2006-07-03">

<change type="change">
<para lang="ru">
восстановлено поведение модуля ngx_http_index_module для запросов "POST /":
как в версии до 0.3.40, модуль теперь не выдаёт ошибку 405.
</para>
<para lang="en">
the ngx_http_index_module behavior for the "POST /" requests is reverted
to the 0.3.40 version state: the module now does not return the 405 error.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании ограничения скорости рабочий процесс мог зациклиться;
ошибка появилась в 0.3.37.
</para>
<para lang="en">
the worker process may got caught in an endless loop if the limit rate was used;
the bug had appeared in 0.3.37.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_charset_module записывал в лог ошибку "unknown charset",
даже если перекодировка не требовалась;
ошибка появилась в 0.3.50.
</para>
<para lang="en">
ngx_http_charset_module logged "unknown charset" alert, even if the recoding
was not needed;
the bug had appeared in 0.3.50.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если в результате запроса PUT возвращался код 409, то временный файл
не удалялся.
</para>
<para lang="en">
if a code response of the PUT request was 409, then a temporary file
was not removed.
</para>
</change>

</changes>


<changes ver="0.3.51" date="2006-06-30">

<change type="bugfix">
<para lang="ru">
при некоторых условиях в SSI мог пропадать символы "&lt;";
ошибка появилась в 0.3.50.
</para>
<para lang="en">
the "&lt;" symbols might disappeared some conditions in the SSI;
the bug had appeared in 0.3.50.
</para>
</change>

</changes>


<changes ver="0.3.50" date="2006-06-28">

<change type="change">
<para lang="ru">
директивы proxy_redirect_errors и fastcgi_redirect_errors
переименованы соответственно в proxy_intercept_errors и
fastcgi_intercept_errors.
</para>
<para lang="en">
the "proxy_redirect_errors" and "fastcgi_redirect_errors" directives
was renamed to the "proxy_intercept_errors" and
"fastcgi_intercept_errors" directives.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_http_charset_module поддерживает перекодирование из
однобайтных кодировок в UTF-8 и обратно.
</para>
<para lang="en">
the ngx_http_charset_module supports the recoding from the single byte
encodings to the UTF-8 encoding and back.
</para>
</change>

<change type="feature">
<para lang="ru">
в режиме прокси и FastCGI поддерживается строка заголовка "X-Accel-Charset"
в ответе бэкенда.
</para>
<para lang="en">
the "X-Accel-Charset" response header line is supported in proxy
and FastCGI mode.
</para>
</change>

<change type="bugfix">
<para lang="ru">
символ "\" в парах "\"" и "\'" в SSI командах убирался, только если
также использовался символ "$".
</para>
<para lang="en">
the "\" escape symbol in the "\"" and "\'" pairs in the SSI command
was removed only if the command also has the "$" symbol.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при некоторых условиях в SSI после вставки могла быть добавлена
строка "&lt;!--".
</para>
<para lang="en">
the "&lt;!--" string might be added on some conditions
in the SSI after inclusion.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если в заголовке ответа была строка <nobr>"Content-Length: 0",</nobr>
то при использовании небуферизированного проксировании не закрывалось соединение
с клиентом.
</para>
<para lang="en">
if the "Content-Length: 0" header line was in response, then
in nonbuffered proxying mode the client connection was not closed.
</para>
</change>

</changes>


<changes ver="0.3.49" date="2006-05-31">

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

<change type="bugfix">
<para lang="ru">
при включении в ssi двух и более подзапросов, обрабатываемых через FastCGI,
вместо вывода второго и остальных подзапросов в ответ включался вывод
первого подзапроса.
</para>
<para lang="en">
if two or more FastCGI subrequests was in SSI, then first subrequest output
was included instead of second and following subrequests.
</para>
</change>

</changes>


<changes ver="0.3.48" date="2006-05-29">

<change type="change">
<para lang="ru">
теперь модуль ngx_http_charset_module работает для подзапросов,
в ответах которых нет строки заголовка "Content-Type".
</para>
<para lang="en">
now the ngx_http_charset_module works for subrequests,
if the response has no "Content-Type" header line.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если в директиве proxy_pass не было URI,
то директива "proxy_redirect  default" добавляла в переписанный
редирект в начало лишний слэш.
</para>
<para lang="en">
if the "proxy_pass" directive has no URI part,
then the "proxy_redirect  default" directive add the unnecessary slash
in start of the rewritten redirect.
</para>
</change>

<change type="bugfix">
<para lang="ru">
внутренний редирект всегда превращал любой HTTP-метод в GET,
теперь это делается только для редиректов, выполняемых с помощью
X-Accel-Redirect, и у которых метод не равен HEAD;
ошибка появилась в 0.3.42.
</para>
<para lang="en">
the internal redirect always transform client's HTTP method to GET,
now the transformation is made for the "X-Accel-Redirect" redirects only
and if the method is not HEAD;
the bug had appeared in 0.3.42.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_perl_module не собирался, если перл был с поддержкой потоков;
ошибка появилась в 0.3.46.
</para>
<para lang="en">
the ngx_http_perl_module could not be built, if the perl was built
with the threads support;
the bug had appeared in 0.3.46.
</para>
</change>

</changes>


<changes ver="0.3.47" date="2006-05-23">

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

<change type="change">
<para lang="ru">
символ "\" в парах "\"" и "\'" в SSI командах теперь всегда убирается.
</para>
<para lang="en">
now the "\" escape symbol in the "\"" and "\'" pairs in the SSI command
is always removed.
</para>
</change>

</changes>


<changes ver="0.3.46" date="2006-05-11">

<change type="feature">
<para lang="ru">
директивы proxy_hide_header, proxy_pass_header, fastcgi_hide_header
и fastcgi_pass_header.
</para>
<para lang="en">
the "proxy_hide_header", "proxy_pass_header", "fastcgi_hide_header",
and "fastcgi_pass_header" directives.
</para>
</change>

<change type="change">
<para lang="ru">
директивы proxy_pass_x_powered_by, fastcgi_x_powered_by и proxy_pass_server
упразднены.
</para>
<para lang="en">
the "proxy_pass_x_powered_by", "fastcgi_x_powered_by", and "proxy_pass_server"
directives were canceled.
</para>
</change>

<change type="feature">
<para lang="ru">
в режиме прокси поддерживается строка заголовка "X-Accel-Buffering"
в ответе бэкенда.
</para>
<para lang="en">
the "X-Accel-Buffering" response header line is supported in proxy mode.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибок и утечек памяти при переконфигурации в модуле ngx_http_perl_module.
</para>
<para lang="en">
the reconfiguration bug and memory leaks in the ngx_http_perl_module.
</para>
</change>

</changes>


<changes ver="0.3.45" date="2006-05-06">

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

<change type="change">
<para lang="ru">
теперь переменная $request_method возвращает метод только основного запроса.
</para>
<para lang="en">
the $request_method variable now returns the main request method.
</para>
</change>

<change type="change">
<para lang="ru">
в таблице перекодировки koi-win изменены коды символа &amp;deg;.
</para>
<para lang="en">
the &amp;deg; symbol codes were changed in koi-win conversion table.
</para>
</change>

<change type="feature">
<para lang="ru">
в таблицу перекодировки koi-win добавлены символы евро и номера.
</para>
<para lang="en">
the euro and N symbols were added to koi-win conversion table.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если nginx распределял запросы на несколько машин, то при падении
одной из них запросы, предназначенные для этой машины, перенаправлялись только
на одну машину вместо того, чтобы равномерно распределяться между остальными.
</para>
<para lang="en">
if nginx distributed the requests among several backends and some backend
failed, then requests intended for this backend was directed to one live
backend only instead of being distributed among the rest.
</para>
</change>

</changes>


<changes ver="0.3.44" date="2006-05-04">

<change type="feature">
<para lang="ru">
параметр wait в команде SSI include.
</para>
<para lang="en">
the "wait" parameter in the "include" SSI command.
</para>
</change>

<change type="feature">
<para lang="ru">
в таблицу перекодировки koi-win добавлены украинские и белорусские символы.
</para>
<para lang="en">
the Ukrainian and Byelorussian characters were added to koi-win conversion
table.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в SSI.
</para>
<para lang="en">
in the SSI.
</para>
</change>

</changes>


<changes ver="0.3.43" date="2006-04-26">

<change type="bugfix">
<para lang="ru">
в SSI.
</para>
<para lang="en">
in the SSI.
</para>
</change>

</changes>


<changes ver="0.3.42" date="2006-04-26">

<change type="feature">
<para lang="ru">
параметр bind в директиве listen в IMAP/POP3 прокси.
</para>
<para lang="en">
the "bind" option of the "listen" directive in IMAP/POP3 proxy.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки при использовании в директиве rewrite одного и того же
выделения более одного раза.
</para>
<para lang="en">
if the same capture in the "rewrite" directive was used more then once.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в лог не записывались переменные
$sent_http_content_type, $sent_http_content_length, $sent_http_last_modified,
$sent_http_connection, $sent_http_keep_alive и $sent_http_transfer_encoding.
</para>
<para lang="en">
the $sent_http_content_type, $sent_http_content_length,
$sent_http_last_modified, $sent_http_connection, $sent_http_keep_alive,
and $sent_http_transfer_encoding variables were not written to access log.
</para>
</change>

<change type="bugfix">
<para lang="ru">
переменная $sent_http_cache_control возвращала содержимое только одной
строки "Cache-Control" в заголовке ответа.
</para>
<para lang="en">
the $sent_http_cache_control returned value of the single "Cache-Control"
response header line.
</para>
</change>

</changes>


<changes ver="0.3.41" date="2006-04-21">

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

<change type="bugfix">
<para lang="ru">
при включении в SSI удалённых подзапросов
мог произойти segmentation fault.
</para>
<para lang="en">
the segmentation fault may occurred if the SSI page has remote subrequests.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в обработке FastCGI.
</para>
<para lang="en">
in FastCGI handling.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если путь к перловым модулям не был указан с помощью
--with-perl_modules_path=PATH или директивы perl_modules,
то на старте происходил segmentation fault.
</para>
<para lang="en">
if the perl modules path was not set using
--with-perl_modules_path=PATH or the "perl_modules", then
the segmentation fault was occurred.
</para>
</change>

</changes>


<changes ver="0.3.40" date="2006-04-19">

<change type="feature">
<para lang="ru">
модуль ngx_http_dav_module поддерживает метод MKCOL.
</para>
<para lang="en">
the ngx_http_dav_module supports the MKCOL method.
</para>
</change>

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

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

</changes>


<changes ver="0.3.39" date="2006-04-17">

<change type="feature">
<para lang="ru">
директива uninitialized_variable_warn; уровень логгирования сообщения
о неинициализированной переменной понижен с уровня alert на warn.
</para>
<para lang="en">
the "uninitialized_variable_warn" directive; the logging level of the
"uninitialized variable" message was lowered from "alert" to "warn".
</para>
</change>

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

<change type="change">
<para lang="ru">
при использовании неизвестной переменной в SSI-командах echo и if expr='$name'
теперь не записывается в лог сообщение о неизвестной переменной.
</para>
<para lang="en">
now if the unknown variable is used in the "echo" and "if expr='$name'"
SSI-commands, then the "unknown variable" message is not logged.
</para>
</change>

<change type="bugfix">
<para lang="ru">
счётчик активных соединений рос при превышении лимита соединений,
заданного директивой worker_connections;
ошибка появилась в 0.2.0.
</para>
<para lang="en">
the active connection counter increased on the exceeding of the connection
limit specified by the "worker_connections" directive;
the bug had appeared in 0.2.0.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при некоторых условия ограничение скорости соединения могло не работать;
ошибка появилась в 0.3.38.
</para>
<para lang="en">
the limit rate might not work on some condition;
the bug had appeared in 0.3.38.
</para>
</change>

</changes>


<changes ver="0.3.38" date="2006-04-14">

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

<change type="change">
<para lang="ru">
оптимизация модуля ngx_http_perl_module.<br/>
Спасибо Сергею Скворцову.
</para>
<para lang="en">
the ngx_http_perl_module optimizations.<br/>
Thanks to Sergey Skvortsov.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_http_perl_module поддерживает метод $r->request_body_file.
</para>
<para lang="en">
the ngx_http_perl_module supports the $r->request_body_file method.
</para>
</change>

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

<change type="workaround">
<para lang="ru">
теперь при переполнении диска nginx пытается писать access_log'и только
раз в секунду.<br/>
Спасибо Антону Южанинову и Максиму Дунину.
</para>
<para lang="en">
now on disk overflow nginx tries to write access logs once a second only.<br/>
Thanks to Anton Yuzhaninov and Maxim Dounin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
теперь директива limit_rate точнее ограничивает скорость при значениях
больше <nobr>100 Kbyte/s.</nobr><br/>
Спасибо ForJest.
</para>
<para lang="en">
now the "limit_rate" directive more precisely limits rate if rate is more
than <nobr>100 Kbyte/s.</nobr><br/>
Thanks to ForJest.
</para>
</change>

<change type="bugfix">
<para lang="ru">
IMAP/POP3 прокси теперь передаёт серверу авторизации символы "\r" и "\n"
в логине и пароле в закодированном виде.<br/>
Спасибо Максиму Дунину.
</para>
<para lang="en">
now the IMAP/POP3 proxy escapes the "\r" and "\n" symbols in login and
password to pass authorization server.<br/>
Thanks to Maxim Dounin.
</para>
</change>

</changes>


<changes ver="0.3.37" date="2006-04-07">

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

<change type="feature">
<para lang="ru">
директива if поддерживает операторы "!~", "!~*", "-f" и "!-f".
</para>
<para lang="en">
the "if" directive supports the "!~", "!~*", "-f", and "!-f" operators.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_http_perl_module поддерживает метод $r->request_body.
</para>
<para lang="en">
the ngx_http_perl_module supports the $r->request_body method.
</para>
</change>

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

</changes>


<changes ver="0.3.36" date="2006-04-05">

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

<change type="feature">
<para lang="ru">
директивы proxy_pass и fastcgi_pass можно использовать внутри блока if.
</para>
<para lang="en">
the "proxy_pass" and "fastcgi_pass" directives may be used inside
the "if" block.
</para>
</change>

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

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

<change type="feature">
<para lang="ru">
модуль ngx_http_perl_module поддерживает методы $r->request_method и
$r->remote_addr.
</para>
<para lang="en">
the ngx_http_perl_module supports the $r->request_method and $r->remote_addr.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_http_ssi_module поддерживает команду elif.
</para>
<para lang="en">
the ngx_http_ssi_module supports the "elif" command.
</para>
</change>

<change type="bugfix">
<para lang="ru">
строка "\/" в начале выражения команды if модуля ngx_http_ssi_module
воспринималась неверно.
</para>
<para lang="en">
the "\/" string in the expression of the "if" command of the
ngx_http_ssi_module was treated incorrectly.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в использовании регулярных выражениях в команде if модуля ngx_http_ssi_module.
</para>
<para lang="en">
in the regular expressions in the "if" command of the ngx_http_ssi_module.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при задании относительного пути в директивах
client_body_temp_path, proxy_temp_path, fastcgi_temp_path и perl_modules
использовался каталог относительно текущего каталога, а не относительно
префикса сервера.
</para>
<para lang="en">
if the relative path was specified in the "client_body_temp_path",
"proxy_temp_path", "fastcgi_temp_path", and "perl_modules" directives,
then the directory was used relatively to a current path but not
to a server prefix.
</para>
</change>

</changes>


<changes ver="0.3.35" date="2006-03-22">

<change type="bugfix">
<para lang="ru">
accept-фильтр и TCP_DEFER_ACCEPT устанавливались только для первой
директивы listen;
ошибка появилась в 0.3.31.
</para>
<para lang="en">
the accept-filter and the TCP_DEFER_ACCEPT option were set for first "listen"
directive only;
the bug had appeared in 0.3.31.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве proxy_pass без URI при использовании в подзапросе.
</para>
<para lang="en">
in the "proxy_pass" directive without the URI part in a subrequest.
</para>
</change>

</changes>


<changes ver="0.3.34" date="2006-03-21">

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

</changes>


<changes ver="0.3.33" date="2006-03-15">

<change type="feature">
<para lang="ru">
параметр http_503 в директивах proxy_next_upstream или fastcgi_next_upstream.
</para>
<para lang="en">
the "http_503" parameter of the "proxy_next_upstream" or
"fastcgi_next_upstream" directives.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ngx_http_perl_module не работал со встроенным в конфигурационный файл кодом,
если он не начинался сразу же с "sub".
</para>
<para lang="en">
ngx_http_perl_module did not work with inlined in the configuration code,
if it was not started with the "sub" word.
</para>
</change>

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

</changes>


<changes ver="0.3.32" date="2006-03-11">

<change type="bugfix">
<para lang="ru">
удаление отладочного логгирования на старте и при переконфигурации;
ошибка появилась в 0.3.31.
</para>
<para lang="en">
the debug logging on startup and reconfiguration time was removed;
the bug had appeared in 0.3.31.
</para>
</change>

</changes>


<changes ver="0.3.31" date="2006-03-10">

<change type="change">
<para lang="ru">
теперь nginx передаёт неверные ответы проксированного бэкенда.
</para>
<para lang="en">
now nginx passes the malformed proxied backend responses.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы listen поддерживают адрес в виде "*:порт".
</para>
<para lang="en">
the "listen" directives support the address in the "*:port" form.
</para>
</change>

<change type="feature">
<para lang="ru">
поддержка EVFILER_TIMER в MacOSX 10.4.
</para>
<para lang="en">
the EVFILER_TIMER support in MacOSX 10.4.
</para>
</change>

<change type="workaround">
<para lang="ru">
обход ошибки обработки миллисекундных таймаутов kqueue в 64-битном ядре
MacOSX.<br/>
Спасибо Андрею Нигматулину.
</para>
<para lang="en">
for MacOSX 64-bit kernel kqueue millisecond timeout bug.<br/>
Thanks to Andrei Nigmatulin.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если внутри одного сервера описаны несколько директив listen, слушающих на
разных адресах, то имена серверов вида "*.domain.tld" работали только
для первого адреса;
ошибка появилась в 0.3.18.
</para>
<para lang="en">
if there were several "listen" directives listening one various addresses
inside one server, then server names like "*.domain.tld" worked for first
address only;
the bug had appeared in 0.3.18.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании протокола HTTPS в директиве proxy_pass не передавались
запросы с телом, записанным во временный файл.
</para>
<para lang="en">
if the HTTPS protocol was used in the "proxy_pass" directive and
the request body was in temporary file then the request was not transferred.
</para>
</change>

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

</changes>


<changes ver="0.3.30" date="2006-02-22">

<change type="change">
<para lang="ru">
уровень записи в лог ошибки ECONNABORTED изменён на error с уровня crit.
</para>
<para lang="en">
the ECONNABORTED error log level was changed to "error" from "crit".
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_perl_module не собирался без модуля ngx_http_ssi_filter_module.
</para>
<para lang="en">
the ngx_http_perl_module could not be built without
the ngx_http_ssi_filter_module.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался на i386 платформе, если использовался PIC;
ошибка появилась в 0.3.27.
</para>
<para lang="en">
nginx could not be built on i386 platform, if the PIC was used;
the bug had appeared in 0.3.27.
</para>
</change>

</changes>


<changes ver="0.3.29" date="2006-02-20">

<change type="feature">
<para lang="ru">
теперь nginx использует меньше памяти, если PHP в режиме FastCGI передаёт
большое количество предупреждений перед ответом.
</para>
<para lang="en">
now nginx uses less memory, if PHP in FastCGI mode sends many warnings
before the response.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в ответах 204 для запросов версии HTTP/1.1 выдавалась строка заголовка
"Transfer-Encoding: chunked".
</para>
<para lang="en">
the "Transfer-Encoding: chunked" header line was issued in the 204 responses
for the HTTP/1.1 requests.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx возвращал 502 код ответа, если FastCGI сервер передавал полные строки
заголовка ответа в отдельных FastCGI записях.
</para>
<para lang="en">
nginx returned the 502 response, if the complete response header lines
were transferred in a separate FastCGI records.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если в директиве post_action был указан проксируемый URI, то он выполнялся
только после успешного завершения запроса.
</para>
<para lang="en">
if the proxied URI was specified in the "post_action" directive, then it ran
only after a successful completion of a request.
</para>
</change>

</changes>


<changes ver="0.3.28" date="2006-02-16">

<change type="feature">
<para lang="ru">
директива restrict_host_names упразднена.
</para>
<para lang="en">
the "restrict_host_names" directive was canceled.
</para>
</change>

<change type="feature">
<para lang="ru">
параметр конфигурации --with-cpu-opt=ppc64.
</para>
<para lang="en">
the --with-cpu-opt=ppc64 configuration parameter.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при некоторых условиях проксированное соединение с клиентом завершалось
преждевременно.<br/>
Спасибо Владимиру Шутову.
</para>
<para lang="en">
on some condition the proxied connection with a client was terminated
prematurely.<br/>
Thanks to Vladimir Shutoff.
</para>
</change>

<change type="bugfix">
<para lang="ru">
строка заголовка "X-Accel-Limit-Rate" не учитывалась для запросов,
перенаправленных с помощью строки "X-Accel-Redirect".
</para>
<para lang="en">
the "X-Accel-Limit-Rate" header line was not taken into account
if the request was redirected using the "X-Accel-Redirect" header line.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива post_action работала только после успешного завершения запроса.
</para>
<para lang="en">
the "post_action" directive ran only after a successful completion of a request.
</para>
</change>

<change type="bugfix">
<para lang="ru">
тело проксированного ответа, создаваемого директивой post_action,
передавалось клиенту.
</para>
<para lang="en">
the proxied response body generated by the "post_action" directive
was transferred to a client.
</para>
</change>

</changes>


<changes ver="0.3.27" date="2006-02-08">

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

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

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

<change type="feature">
<para lang="ru">
определение размера строки кэша распространённых процессоров при старте.
</para>
<para lang="en">
the cache line size detection for widespread CPUs at start time.
</para>
</change>

<change type="feature">
<para lang="ru">
директива accept_mutex теперь поддерживается посредством fcntl(2)
на платформах, отличных от i386, amd64, sparc64 и ppc.
</para>
<para lang="en">
now the "accept_mutex" directive is supported using fcntl(2)
on platforms different from i386, amd64, sparc64, and ppc.
</para>
</change>

<change type="feature">
<para lang="ru">
директива lock_file и параметр автоконфигурации --with-lock-path=PATH.
</para>
<para lang="en">
the "lock_file" directive and the --with-lock-path=PATH autoconfiguration
directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании протокола HTTPS в директиве proxy_pass не передавались
запросы с телом.
</para>
<para lang="en">
if the HTTPS protocol was used in the "proxy_pass" directive then
the requests with the body was not transferred.
</para>
</change>

</changes>


<changes ver="0.3.26" date="2006-02-03">

<change type="change">
<para lang="ru">
директива optimize_host_names переименована в optimize_server_names.
</para>
<para lang="en">
the "optimize_host_names" directive was renamed to the "optimize_server_names".
</para>
</change>

<change type="bugfix">
<para lang="ru">
при проксировании подзапроса в SSI бэкенду передавался URI основного запроса,
если в директиве proxy_pass отсутствовал URI.
</para>
<para lang="en">
if in the "proxy_pass" directive was no the URI part, then the main request
URI was transferred to a backend while proxying the SSI subrequest.
</para>
</change>

</changes>


<changes ver="0.3.25" date="2006-02-01">

<change type="bugfix">
<para lang="ru">
при неверной конфигурации на старте или во время переконфигурации происходил
segmentation fault;
ошибка появилась в 0.3.24.
</para>
<para lang="en">
the segmentation fault was occurred on start or while reconfiguration
if there was invalid configuration;
the bug had appeared in 0.3.24.
</para>
</change>

</changes>


<changes ver="0.3.24" date="2006-02-01">

<change type="workaround">
<para lang="ru">
обход ошибки в kqueue во FreeBSD.
</para>
<para lang="en">
for bug in FreeBSD kqueue.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ответ, создаваемый директивой post_action, теперь не передаётся клиенту.
</para>
<para lang="en">
now a response generated by the "post_action" directive is not transferred
to a client.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании большого количества лог-файлов происходила утечка памяти.
</para>
<para lang="en">
the memory leaks were occurring if many log files were used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
внутри одного location работала только первая директива proxy_redirect.
</para>
<para lang="en">
the first "proxy_redirect" directive was working inside one location.
</para>
</change>

<change type="bugfix">
<para lang="ru">
на 64-битных платформах при старте мог произойти segmentation fault,
если использовалось большое количество имён в директивах server_name;
ошибка появилась в 0.3.18.
</para>
<para lang="en">
on 64-bit platforms segmentation fault may occurred on start
if the many names were used in the "server_name" directives;
the bug had appeared in 0.3.18.
</para>
</change>

</changes>


<changes ver="0.3.23" date="2006-01-24">

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

<change type="bugfix">
<para lang="ru">
ошибки при использовании переменных в директивах path и alias.
</para>
<para lang="en">
in using of the variables in the "path" and "alias" directives.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_perl_module неправильно собирался на Linux и Solaris.
</para>
<para lang="en">
the ngx_http_perl_module was incorrectly built on Linux and Solaris.
</para>
</change>

</changes>


<changes ver="0.3.22" date="2006-01-17">

<change type="feature">
<para lang="ru">
модуль ngx_http_perl_module поддерживает методы $r->args и $r->unescape.
</para>
<para lang="en">
the ngx_http_perl_module supports the $r->args and $r->unescape methods.
</para>
</change>

<change type="feature">
<para lang="ru">
метод $r->query_string в модуле ngx_http_perl_module упразднён.
</para>
<para lang="en">
the method $r->query_string of ngx_http_perl_module was canceled.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если в директиве valid_referers указаны только none или blocked, то
происходил segmentation fault;
ошибка появилась в 0.3.18.
</para>
<para lang="en">
segmentation fault was occurred if the "none" or "blocked" values was
specified in the "valid_referers" directive;
the bug had appeared in 0.3.18.
</para>
</change>

</changes>


<changes ver="0.3.21" date="2006-01-16">

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

<change type="change">
<para lang="ru">
директива valid_referers разрешает использовать рефереры совсем без URI.
</para>
<para lang="en">
the "valid_referers" directive allows the referrers without URI part.
</para>
</change>

</changes>


<changes ver="0.3.20" date="2006-01-11">

<change type="bugfix">
<para lang="ru">
ошибки в обработке SSI.
</para>
<para lang="en">
in SSI handling.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_memcached_module не поддерживал ключи в виде /uri?args.
</para>
<para lang="en">
the ngx_http_memcached_module did not support the keys in the "/usr?args" form.
</para>
</change>

</changes>

<changes ver="0.3.19" date="2005-12-28">

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

<change type="change">
<para lang="ru">
теперь директива valid_referers опять учитывает URI.
</para>
<para lang="en">
now the "valid_referers" directive again checks the URI part.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки в обработке SSI.
</para>
<para lang="en">
in SSI handling.
</para>
</change>

</changes>


<changes ver="0.3.18" date="2005-12-26">

<change type="feature">
<para lang="ru">
директива server_names поддерживает имена вида ".domain.tld".
</para>
<para lang="en">
the "server_names" directive supports the ".domain.tld" names.
</para>
</change>

<change type="feature">
<para lang="ru">
директива server_names использует хэш для имён вида "*.domain.tld"
и более эффективный хэш для обычных имён.
</para>
<para lang="en">
the "server_names" directive uses the hash for the "*.domain.tld" names
and more effective hash for usual names.
</para>
</change>

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

<change type="change">
<para lang="ru">
директивы server_names_hash и server_names_hash_threshold упразднены.
</para>
<para lang="en">
the "server_names_hash" and "server_names_hash_threshold" directives
were canceled.
</para>
</change>

<change type="feature">
<para lang="ru">
директива valid_referers использует хэш для имён сайтов.
</para>
<para lang="en">
the "valid_referers" directive uses the hash site names.
</para>
</change>

<change type="change">
<para lang="ru">
теперь директива valid_referers проверяет только имена сайтов без учёта URI.
</para>
<para lang="en">
now the "valid_referers" directive checks the site names only without
the URI part.
</para>
</change>

<change type="bugfix">
<para lang="ru">
некоторые имена вида ".domain.tld" неверно обрабатывались модулем
ngx_http_map_module.
</para>
<para lang="en">
some ".domain.tld" names incorrectly processed by the ngx_http_map_module.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если конфигурационного файла не было, то происходил segmentation fault;
ошибка появилась в 0.3.12.
</para>
<para lang="en">
segmentation fault was occurred if configuration file did not exist;
the bug had appeared in 0.3.12.
</para>
</change>

<change type="bugfix">
<para lang="ru">
на 64-битных платформах при старте мог произойти segmentation fault;
ошибка появилась в 0.3.16.
</para>
<para lang="en">
on 64-bit platforms segmentation fault may occurred on start;
the bug had appeared in 0.3.16.
</para>
</change>

</changes>


<changes ver="0.3.17" date="2005-12-18">

<change type="change">
<para lang="ru">
на Linux configure теперь проверяет наличие epoll и sendfile64() в ядре.
</para>
<para lang="en">
now on Linux configure checks the presence of epoll and sendfile64() in kernel.
</para>
</change>

<change type="feature">
<para lang="ru">
директива map поддерживает доменные имена в формате ".domain.tld".
</para>
<para lang="en">
the "map" directive supports domain names in the ".domain.tld" form.
</para>
</change>

<change type="bugfix">
<para lang="ru">
во время SSL handshake не иcпользовались таймауты;
ошибка появилась в 0.2.4.
</para>
<para lang="en">
the timeouts were not used in SSL handshake;
the bug had appeared in 0.2.4.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в использовании протокола HTTPS в директиве proxy_pass.
</para>
<para lang="en">
in the HTTPS protocol in the "proxy_pass" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании протокола HTTPS в директиве proxy_pass по умолчанию
использовался порт 80.
</para>
<para lang="en">
when the HTTPS protocol was used in the "proxy_pass" directive the port 80
was used by default.
</para>
</change>

</changes>


<changes ver="0.3.16" date="2005-12-16">

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

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

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

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

<change type="workaround">
<para lang="ru">
при сборке компиляторами icc 8.1 и 9.0 с оптимизацией для
<nobr>Pentium 4</nobr> номер соединения в логах всегда был равен 1.
</para>
<para lang="en">
the connection number in logs was always 1 if nginx was built by the
icc 8.1 or 9.0 compilers with optimization for <nobr>Pentium 4.</nobr>
</para>
</change>

<change type="bugfix">
<para lang="ru">
команда config timefmt в SSI задавала неверный формат времени.
</para>
<para lang="en">
the "config timefmt" SSI command set incorrect time format.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не закрывал соединения с IMAP/POP3 бэкендом при использовании SSL
соединений;
ошибка появилась в 0.3.13.<br/>
Спасибо Rob Mueller.
</para>
<para lang="en">
nginx did not close connection to IMAP/POP3 backend for the SSL
connections;
the bug had appeared in 0.3.13.<br/>
Thanks to Rob Mueller.
</para>
</change>

<change type="bugfix">
<para lang="ru">
segmentation fault мог произойти во время SSL shutdown;
ошибка появилась в 0.3.13.
</para>
<para lang="en">
segmentation fault may occurred in at SSL shutdown;
the bug had appeared in 0.3.13.
</para>
</change>

</changes>


<changes ver="0.3.15" date="2005-12-07">

<change type="feature">
<para lang="ru">
новой код 444 в директиве return для закрытия соединения.
</para>
<para lang="en">
the new 444 code of the "return" directive to close connection.
</para>
</change>

<change type="feature">
<para lang="ru">
директива so_keepalive в IMAP/POP3 прокси.
</para>
<para lang="en">
the "so_keepalive" directive in IMAP/POP3 proxy.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx теперь вызывает abort() при обнаружении незакрытых соединений
только при плавном выходе и включённой директиве debug_points.
</para>
<para lang="en">
if there are unclosed connection nginx now calls abort() only on graceful
quit and active "debug_points" directive.
</para>
</change>

</changes>


<changes ver="0.3.14" date="2005-12-05">

<change type="bugfix">
<para lang="ru">
в ответе 304 передавалось тело ответа;
ошибка появилась в 0.3.13.
</para>
<para lang="en">
in the 304 response the body was transferred;
the bug had appeared in 0.3.13.
</para>
</change>

</changes>


<changes ver="0.3.13" date="2005-12-05">

<change type="feature">
<para lang="ru">
IMAP/POP3 прокси поддерживает STARTTLS и STLS.
</para>
<para lang="en">
the IMAP/POP3 proxy supports STARTTLS and STLS.
</para>
</change>

<change type="bugfix">
<para lang="ru">
IMAP/POP3 прокси не работала с методами select, poll и /dev/poll.
</para>
<para lang="en">
the IMAP/POP3 proxy did not work with the select, poll, and /dev/poll methods.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки в обработке SSI.
</para>
<para lang="en">
in SSI handling.
</para>
</change>

<change type="bugfix">
<para lang="ru">
sendfilev() в Solaris теперь не используется при передаче тела запроса
FastCGI-серверу через unix domain сокет.
</para>
<para lang="en">
now Solaris sendfilev() is not used to transfer the client request body
to FastCGI-server via the unix domain socket.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива auth_basic не запрещала аутентификацию;
ошибка появилась в 0.3.11.
</para>
<para lang="en">
the "auth_basic" directive did not disable the authorization;
the bug had appeared in 0.3.11.
</para>
</change>

</changes>


<changes ver="0.3.12" date="2005-11-26">

<change type="security">
<para lang="ru">
если nginx был собран с модулем ngx_http_realip_module, то при использовании
директивы "satisfy_any on" директивы доступа и аутентификации не работали.
Модуль ngx_http_realip_module не собирался и не собирается по умолчанию.
</para>
<para lang="en">
if nginx was built with the ngx_http_realip_module and the "satisfy_any on"
directive was used, then access and authorization directives did not work.
The ngx_http_realip_module was not built and is not built by default.
</para>
</change>

<change type="change">
<para lang="ru">
имя переменной "$time_gmt" изменено на "$time_local".
</para>
<para lang="en">
the "$time_gmt" variable name was changed to "$time_local".
</para>
</change>

<change type="change">
<para lang="ru">
директивы proxy_header_buffer_size и fastcgi_header_buffer_size
переименованы соответственно в proxy_buffer_size и fastcgi_buffer_size.
</para>
<para lang="en">
the "proxy_header_buffer_size" and "fastcgi_header_buffer_size" directives
was renamed to the "proxy_buffer_size" and "fastcgi_buffer_size" directives.
</para>
</change>

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

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

<change type="bugfix">
<para lang="ru">
изменение в работе с accept mutex при использовании метода rtsig;
ошибка появилась в 0.3.0.
</para>
<para lang="en">
the changes in accept mutex  handling when the "rtsig" method was used;
the bug had appeared in 0.3.0.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если клиент передал строку "Transfer-Encoding: chunked" в заголовке
запроса, то nginx теперь выдаёт ошибку 411.
</para>
<para lang="en">
if the client sent the "Transfer-Encoding: chunked" header line, then
nginx returns the 411 error.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при наследовании директивы auth_basic с уровня http в строке
"WWW-Authenticate" заголовка ответа выводился realm без текста "Basic realm".
</para>
<para lang="en">
if the "auth_basic" directive was inherited from the http level,
then the realm in the "WWW-Authenticate" header line was without
the "Basic realm" text.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если в директиве access_log был явно указан формат combined, то в лог
записывались пустые строки;
ошибка появилась в 0.3.8.
</para>
<para lang="en">
if the "combined" format was explicitly specified in the "access_log" directive,
then the empty lines was written to the log;
the bug had appeared in 0.3.8.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не работал на платформе sparc под любыми OS, кроме Solaris.
</para>
<para lang="en">
nginx did not run on the sparc platform under any OS except Solaris.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве if теперь не нужно разделять пробелом строку в кавычках и
закрывающую скобку.
</para>
<para lang="en">
now it is not necessary to place space between the quoted string and closing
bracket in the "if" directive.
</para>
</change>

</changes>


<changes ver="0.3.11" date="2005-11-15">

<change type="bugfix">
<para lang="ru">
nginx не передавал при проксировании тело запроса и строки заголовка клиента;
ошибка появилась в 0.3.10.
</para>
<para lang="en">
nginx did not pass the client request headers and body while proxying;
the bug had appeared in 0.3.10.
</para>
</change>

</changes>


<changes ver="0.3.10" date="2005-11-15">

<change type="change">
<para lang="ru">
директива valid_referers и переменная $invalid_referer перенесены
из модуля ngx_http_rewrite_module в новый модуль ngx_http_referer_module.
</para>
<para lang="en">
the "valid_referers" directive and the "$invalid_referer" variable
were moved to the new ngx_http_referer_module from the ngx_http_rewrite_module.
</para>
</change>

<change type="change">
<para lang="ru">
имя переменной "$apache_bytes_sent" изменено на "$body_bytes_sent".
</para>
<para lang="en">
the "$apache_bytes_sent" variable name was changed to "$body_bytes_sent".
</para>
</change>

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

<change type="feature">
<para lang="ru">
директива if поддерживает операции "=" и "!=".
</para>
<para lang="en">
the "if" directive supports the "=" and "!=" operations.
</para>
</change>

<change type="feature">
<para lang="ru">
директива proxy_pass поддерживает протокол HTTPS.
</para>
<para lang="en">
the "proxy_pass" directive supports the HTTPS protocol.
</para>
</change>

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

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

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

<change type="feature">
<para lang="ru">
директива worker_cpu_affinity для Linux.
</para>
<para lang="en">
the "worker_cpu_affinity" directive for Linux.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива rewrite не раскодировала символы в редиректах в URI,
теперь символы раскодируются, кроме символов %00-%25 и %7F-%FF.
</para>
<para lang="en">
the "rewrite" directive did not unescape URI part in redirect,
now it is unescaped except the %00-%25 and %7F-%FF characters.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
если для статического файла нулевого размера был разрешён SSI,
то ответ передавался неверно при кодировании chunk'ами.
</para>
<para lang="en">
if the SSI was enabled for zero size static file, then the chunked
response was encoded incorrectly.
</para>
</change>

</changes>


<changes ver="0.3.9" date="2005-11-10">

<change type="bugfix">
<para lang="ru">
nginx считал небезопасными URI, в которых между двумя слэшами
находилось два любых символа;
ошибка появилась в 0.3.8.
</para>
<para lang="en">
nginx considered URI as unsafe if two any symbols was between two slashes;
the bug had appeared in 0.3.8.
</para>
</change>

</changes>


<changes ver="0.3.8" date="2005-11-09">

<change type="security">
<para lang="ru">
nginx теперь проверят URI, полученные от бэкенда в строке "X-Accel-Redirect"
в заголовке ответа, или в SSI файле на наличие путей "/../" и нулей.
</para>
<para lang="en">
nginx now checks URI got from a backend in "X-Accel-Redirect" header line
or in SSI file for the "/../" paths and zeroes.
</para>
</change>

<change type="change">
<para lang="ru">
nginx теперь не воспринимает пустое имя как правильное
в строке "Authorization" в заголовке запроса.
</para>
<para lang="en">
nginx now does not treat the empty user name in the "Authorization" header
line as valid one.
</para>
</change>

<change type="feature">
<para lang="ru">
директива ssl_session_timeout модулей
ngx_http_ssl_module и ngx_imap_ssl_module.
</para>
<para lang="en">
the "ssl_session_timeout" directives
of the ngx_http_ssl_module and ngx_imap_ssl_module.
</para>
</change>

<change type="feature">
<para lang="ru">
директива auth_http_header модуля ngx_imap_auth_http_module.
</para>
<para lang="en">
the "auth_http_header" directive of the ngx_imap_auth_http_module.
</para>
</change>

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

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

<change type="feature">
<para lang="ru">
новые переменные для использования в директиве log_format:
$bytes_sent, $apache_bytes_sent, $status, $time_gmt,
$uri, $request_time, $request_length,
$upstream_status, $upstream_response_time,
$gzip_ratio,
$uid_got, $uid_set,
$connection, $pipe и $msec.
Параметры в виде "%name" скоро будут упразднены.
</para>
<para lang="en">
the new variables to use in the "log_format" directive:
$bytes_sent, $apache_bytes_sent, $status, $time_gmt,
$uri, $request_time, $request_length,
$upstream_status, $upstream_response_time,
$gzip_ratio,
$uid_got, $uid_set,
$connection, $pipe, and $msec.
The parameters in the "%name" form will be canceled soon.
</para>
</change>

<change type="change">
<para lang="ru">
в директиве "if" ложными значениями переменных теперь являются
пустая строка "" и строки, начинающиеся на "0".
</para>
<para lang="en">
now the false variable values in the "if" directive are the empty string ""
and string starting with "0".
</para>
</change>

<change type="bugfix">
<para lang="ru">
при работает с проксированными или FastCGI-серверами nginx мог оставлять
открытыми соединения и временные файлы с запросами клиентов.
</para>
<para lang="en">
while using proxied or FastCGI-server nginx may leave connections
and temporary files with client requests in open state.
</para>
</change>

<change type="bugfix">
<para lang="ru">
рабочие процессы не сбрасывали буферизированные логи при плавном выходе.
</para>
<para lang="en">
the worker processes did not flush the buffered logs on graceful exit.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если URI запроса изменялось с помощью rewrite, а затем запрос проксировался
в location, заданном регулярным выражением, то бэкенду передавался
неверный запрос;
ошибка появилась в 0.2.6.
</para>
<para lang="en">
if the request URI was changes by the "rewrite" directive and the request
was proxied in location given by regular expression, then the incorrect
request was transferred to backend;
the bug had appeared in 0.2.6.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива expires не удаляла уже установленную строку заголовка "Expires".
</para>
<para lang="en">
the "expires" directive did not remove the previous "Expires" header.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании метода rtsig и нескольких рабочих процессах nginx
мог перестать принимать запросы.
</para>
<para lang="en">
nginx may stop to accept requests if the "rtsig" method and several worker
processes were used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в SSI командах неверно обрабатывались строки "\"" и "\'".
</para>
<para lang="en">
the "\"" and "\'" escape symbols were incorrectly handled in SSI commands.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если ответ заканчивался сразу же после SSI команды, то при использовании
сжатия ответ передавался не до конца или не передавался вообще.
</para>
<para lang="en">
if the response was ended just after the SSI command and gzipping was used,
then the response did not transferred complete or did not transferred at all.
</para>
</change>

</changes>


<changes ver="0.3.7" date="2005-10-27">

<change type="feature">
<para lang="ru">
директива access_log поддерживает параметр buffer=.
</para>
<para lang="en">
the "access_log" supports the "buffer=" parameter.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался на платформах, отличных от i386, amd64, sparc и ppc;
ошибка появилась в 0.3.2.
</para>
<para lang="en">
nginx could not be built on platforms different from i386, amd64, sparc,
and ppc;
the bug had appeared in 0.3.2.
</para>
</change>

</changes>


<changes ver="0.3.6" date="2005-10-24">

<change type="change">
<para lang="ru">
IMAP/POP3 прокси теперь не передаёт серверу авторизации пустой логин.
</para>
<para lang="en">
now the IMAP/POP3 proxy do not send the empty login to authorization server.
</para>
</change>

<change type="feature">
<para lang="ru">
директива log_format поддерживает переменные в виде $name.
</para>
<para lang="en">
the "log_format" supports the variables in the $name form.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если хотя бы в одном сервере не было описано ни одной директивы listen, то
nginx не слушал на 80 порту;
ошибка появилась в 0.3.3.
</para>
<para lang="en">
if at least in one server was no the "listen" directive, then nginx did not
listen on the 80 port;
the bug had appeared in 0.3.3.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если в директиве proxy_pass отсутствовал URI, то всегда использовался порт 80.
</para>
<para lang="en">
if the URI part is omitted in "proxy_pass" directive, the 80 port was
always used.
</para>
</change>

</changes>


<changes ver="0.3.5" date="2005-10-21">

<change type="bugfix">
<para lang="ru">
если логин IMAP/POP3 менялся сервером авторизации, то мог произойти
segmentation fault;
ошибка появилась в 0.2.2.
</para>
<para lang="en">
the segmentation fault may occurred if the IMAP/POP3 login was changed
by authorization server;
the bug had appeared in 0.2.2.
</para>
</change>

<change type="bugfix">
<para lang="ru">
accept mutex не работал, все соединения обрабатывались одним рабочим процессом;
ошибка появилась в 0.3.3.
</para>
<para lang="en">
the accept mutex did not work and all connections were handled by one process;
the bug had appeared in 0.3.3.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании метода rtsig и директивы timer_resolution
не работали таймауты.
</para>
<para lang="en">
the timeout did not work if the "rtsig" method and the "timer_resolution"
directive were used.
</para>
</change>

</changes>


<changes ver="0.3.4" date="2005-10-19">

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

</changes>


<changes ver="0.3.3" date="2005-10-19">

<change type="change">
<para lang="ru">
параметры "bl" и "af" директивы listen переименованы в "backlog"
и "accept_filter".
</para>
<para lang="en">
the "bl" and "af" parameters of the "listen" directive was renamed to
the "backlog" and "accept_filter".
</para>
</change>

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

<change type="change">
<para lang="ru">
параметр лога $msec теперь не требует дополнительного системного
вызова gettimeofday().
</para>
<para lang="en">
the "$msec" log parameter does not require now the additional
the gettimeofday() system call.
</para>
</change>

<change type="feature">
<para lang="ru">
ключ -t теперь проверяет директивы listen.
</para>
<para lang="en">
the -t switch now tests the "listen" directives.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если в директиве listen был указан неверный адрес, то nginx после
сигнала -HUP оставлял открытый сокет в состоянии CLOSED.
</para>
<para lang="en">
if the invalid address was specified in the "listen" directive, then
after the -HUP signal nginx left an open socket in the CLOSED state.
</para>
</change>

<change type="bugfix">
<para lang="ru">
для индексных файлов, содержащих в имени переменную, мог неверно выставляться
тип mime по умолчанию;
ошибка появилась в 0.3.0.
</para>
<para lang="en">
the mime type may be incorrectly set to default value for index file with
variable in the name;
the bug had appeared in 0.3.0.
</para>
</change>

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

<change type="feature">
<para lang="ru">
параметр лога $upstream_response_time в миллисекундах.
</para>
<para lang="en">
the millisecond "$upstream_response_time" log parameter.
</para>
</change>

<change type="bugfix">
<para lang="ru">
временный файл с телом запроса клиента теперь удаляется сразу после того,
как клиенту передан заголовок ответа.
</para>
<para lang="en">
a temporary file with client request body now is removed just after
the response header was transferred to a client.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
пути к файлам с SSL сертификатом и ключом не могли быть относительными.
</para>
<para lang="en">
the SSL certificate and key file paths could not be relative.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива ssl_prefer_server_ciphers не работала для модуля ngx_imap_ssl_module.
</para>
<para lang="en">
the "ssl_prefer_server_ciphers" directive did not work in
the ngx_imap_ssl_module.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива ssl_protocols позволяла задать только один протокол.
</para>
<para lang="en">
the "ssl_protocols" directive allowed to specify the single protocol only.
</para>
</change>

</changes>


<changes ver="0.3.2" date="2005-10-12">

<change type="feature">
<para lang="ru">
поддержка Sun Studio 10 C compiler.
</para>
<para lang="en">
the Sun Studio 10 C compiler support.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы proxy_upstream_max_fails, proxy_upstream_fail_timeout,
fastcgi_upstream_max_fails и fastcgi_upstream_fail_timeout.
</para>
<para lang="en">
the "proxy_upstream_max_fails", "proxy_upstream_fail_timeout",
"fastcgi_upstream_max_fails", and "fastcgi_upstream_fail_timeout"
directives.
</para>
</change>

</changes>


<changes ver="0.3.1" date="2005-10-10">

<change type="bugfix">
<para lang="ru">
во время переполнения очереди сигналов при использовании метода rtsig
происходил segmentation fault;
ошибка появилась в 0.2.0.
</para>
<para lang="en">
the segmentation fault occurred when the signal queue overflowed
if the "rtsig" method was used;
the bug had appeared in 0.2.0.
</para>
</change>

<change type="change">
<para lang="ru">
корректная обработка пар "\\", "\"", "\'" и "\$" в SSI.
</para>
<para lang="en">
correct handling of the "\\", "\"", "\'", and "\$" pairs in SSI.
</para>
</change>

</changes>


<changes ver="0.3.0" date="2005-10-07">

<change type="change">
<para lang="ru">
убрано десятидневное ограничение времени работы рабочего процесса.
Ограничение было введено из-за переполнения миллисекундных таймеров.
</para>
<para lang="en">
the 10-days live time limit of worker process was eliminated.
The limit was introduced because of millisecond timers overflow.
</para>
</change>

</changes>


<changes ver="0.2.6" date="2005-10-05">

<change type="change">
<para lang="ru">
с 60 до 10 секунд уменьшено время повторного обращения к бэкенду
при использовании распределения нагрузки.
</para>
<para lang="en">
while using load-balancing the time before the failed backend retry
was decreased from 60 to 10 seconds.
</para>
</change>

<change type="change">
<para lang="ru">
директива proxy_pass_unparsed_uri упразднена, оригинальный запрос теперь
передаётся, если в директиве proxy_pass отсутствует URI.
</para>
<para lang="en">
the "proxy_pass_unparsed_uri" was canceled, the original URI now passed,
if the URI part is omitted in "proxy_pass" directive.
</para>
</change>

<change type="feature">
<para lang="ru">
директива error_page поддерживает редиректы и позволяет более гибко
менять код ошибки.
</para>
<para lang="en">
the "error_page" directive supports redirects and allows more flexible
to change an error code.
</para>
</change>

<change type="change">
<para lang="ru">
в проксированных подзапросах теперь игнорируется переданный charset.
</para>
<para lang="en">
the charset in the "Content-Type" header line now is ignored
in proxied subrequests.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если после изменения URI в блоке if для запроса не находилась
новая конфигурация, то правила модуля ngx_http_rewrite_module выполнялись
снова.
</para>
<para lang="en">
if the URI was changed in the "if" block and request did not found
new configuration, then the ngx_http_rewrite_module rules ran again.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если директива set устанавливала переменную модуля ngx_http_geo_module
в какой-либо части конфигурации, то эта переменная не была доступна в
других частях конфигурации и выдавалась ошибка "using uninitialized variable";
ошибка появилась в 0.2.2.
</para>
<para lang="en">
if the "set" directive set the ngx_http_geo_module variable in some
configuration part, the this variable was not available in other
configuration parts and the "using uninitialized variable" error was occurred;
the bug had appeared in 0.2.2.
</para>
</change>

</changes>


<changes ver="0.2.5" date="2005-10-04">

<change type="change">
<para lang="ru">
дублирующее значение переменной модуля ngx_http_geo_module теперь
выдаёт предупреждение и изменяет старое значение.
</para>
<para lang="en">
the duplicate value of the ngx_http_geo_module variable now causes
the warning and changes old value.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_http_ssi_module поддерживает команду set.
</para>
<para lang="en">
the ngx_http_ssi_module supports the "set" command.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_http_ssi_module поддерживает параметр file в команде include.
</para>
<para lang="en">
the ngx_http_ssi_module supports the "file" parameter in the "include" command.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_http_ssi_module поддерживает подстановку значений переменных
в выражениях команды if.
</para>
<para lang="en">
the ngx_http_ssi_module supports the variable value substitutions in
expressions of the "if" command.
</para>
</change>

</changes>


<changes ver="0.2.4" date="2005-10-03">

<change type="feature">
<para lang="ru">
модуль ngx_http_ssi_module поддерживает выражения
"$var=text", "$var!=text", "$var=/text/" и "$var!=/text/"
в команде if.
</para>
<para lang="en">
the ngx_http_ssi_module supports
"$var=text", "$var!=text", "$var=/text/", and "$var!=/text/" expressions
in the "if" command.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки при проксировании location без слэша в конце;
ошибка появилась в 0.1.44.
</para>
<para lang="en">
in proxying location without trailing slash;
the bug had appeared in 0.1.44.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании метода rtsig мог произойти segmentation fault;
ошибка появилась в 0.2.0.
</para>
<para lang="en">
the segmentation fault may occurred if the "rtsig" method was used;
the bug had appeared in 0.2.0.
</para>
</change>

</changes>


<changes ver="0.2.3" date="2005-09-30">

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

</changes>


<changes ver="0.2.2" date="2005-09-30">

<change type="feature">
<para lang="ru">
команда config errmsg в модуле ngx_http_ssi_module.
</para>
<para lang="en">
the "config errmsg" command of the ngx_http_ssi_module.
</para>
</change>

<change type="change">
<para lang="ru">
переменные модуля ngx_http_geo_module можно переопределять директивой set.
</para>
<para lang="en">
the ngx_http_geo_module variables can be overridden by the "set" directive.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы ssl_protocols и ssl_prefer_server_ciphers модулей
ngx_http_ssl_module и ngx_imap_ssl_module.
</para>
<para lang="en">
the "ssl_protocols" and "ssl_prefer_server_ciphers" directives
of the ngx_http_ssl_module and ngx_imap_ssl_module.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибка в модуле ngx_http_autoindex_module при показе длинных имён файлов;
</para>
<para lang="en">
the ngx_http_autoindex_module did not show correctly the long file names;
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_autoindex_module теперь не показывает файлы,
начинающиеся на точку.
</para>
<para lang="en">
the ngx_http_autoindex_module now do not show the files starting by dot.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если SSL handshake завершался с ошибкой, то это могло привести также
к закрытию другого соединения.<br/>
Спасибо Rob Mueller.
</para>
<para lang="en">
if the SSL handshake failed then another connection may be closed too.<br/>
Thanks to Rob Mueller.
</para>
</change>

<change type="bugfix">
<para lang="ru">
экспортные версии MSIE 5.x не могли соединиться по HTTPS.
</para>
<para lang="en">
the export versions of MSIE 5.x could not connect via HTTPS.
</para>
</change>

</changes>


<changes ver="0.2.1" date="2005-09-23">

<change type="bugfix">
<para lang="ru">
если все бэкенды, используемые для балансировки нагрузки, оказывались
в нерабочем состоянии после одной ошибки, то nginx мог зациклится;
ошибка появилась в 0.2.0.
</para>
<para lang="en">
if all backend using in load-balancing failed after one error, then
nginx may got caught in an endless loop;
the bug had appeared in 0.2.0.
</para>
</change>

</changes>


<changes ver="0.2.0" date="2005-09-23">

<change>
<para lang="ru">
Изменились имена pid-файлов, используемые во время обновления исполняемого
файла. Ручное переименование теперь не нужно.
Старый основной процесс добавляет к своему pid-файл суффикс ".oldbin"
и запускает новый исполняемый файл.
Новый основной процесс создаёт обычный pid-файл без суффикса ".newbin".
Если новый основной процесс выходит, то старый процесс переименовывает свой
pid-файл c суффиксом ".oldbin" в pid-файл без суффикса.
При обновлении с версии 0.1.х до 0.2.0 нужно учитывать, что оба
процесса&mdash;старый 0.1.x и новый 0.2.0&mdash;используют pid-файл
без суффиксов.
</para>
<para lang="en">
The pid-file names used during online upgrade was changed and now is not
required a manual rename operation.
The old master process adds the ".oldbin" suffix to its pid-file and
executes a new binary file.
The new master process creates usual pid-file without the ".newbin" suffix.
If the master process exits, then old master process renames back
its pid-file with the ".oldbin" suffix to the pid-file without suffix.
</para>
</change>

<change type="change">
<para lang="ru">
директива worker_connections, новое название директивы connections;
директива теперь задаёт максимальное число соединений,
а не максимально возможный номер дескриптора для сокета.
</para>
<para lang="en">
the "worker_connections" directive, new name of the "connections" directive;
now the directive specifies maximum number of connections,
but not maximum socket descriptor number.
</para>
</change>

<change type="feature">
<para lang="ru">
SSL поддерживает кэширование сессий в пределах одного рабочего процесса.
</para>
<para lang="en">
SSL supports the session cache inside one worker process.
</para>
</change>

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

<change type="change">
<para lang="ru">
модули ngx_http_access_module и ngx_http_auth_basic_module не работают
для подзапросов.
</para>
<para lang="en">
the ngx_http_access_module and ngx_http_auth_basic_module do not run
for subrequests.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
если все бэкенды, используемые для балансировки нагрузки, оказывались
в нерабочем состоянии после одной ошибки, то nginx не обращался к ним
в течение 60 секунд.
</para>
<para lang="en">
if all backend using in load-balancing failed after one error, then
nginx did not try do connect to them during 60 seconds.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в парсинге аргументов IMAP/POP3 команд.<br/>
Спасибо Rob Mueller.
</para>
<para lang="en">
in IMAP/POP3 command argument parsing.<br/>
Thanks to Rob Mueller.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки при использовании SSL в IMAP/POP3 прокси.
</para>
<para lang="en">
errors while using SSL in IMAP/POP3 proxy.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки при использовании SSI и сжатия.
</para>
<para lang="en">
errors while using SSI and gzipping.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в ответах 304 не добавлялись строки заголовка ответа "Expires" и
"Cache-Control".<br/>
Спасибо Александру Кукушкину.
</para>
<para lang="en">
the "Expires" and "Cache-Control" header lines were omitted
from the 304 responses.<br/>
Thanks to Alexandr Kukushkin.
</para>
</change>

</changes>


<changes ver="0.1.45" date="2005-09-08">

<change type="change">
<para lang="ru">
директива ssl_engine упразднена в модуле ngx_http_ssl_module и
перенесена на глобальный уровень.
</para>
<para lang="en">
the "ssl_engine" directive was canceled in the ngx_http_ssl_module
and now is introduced at global level.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ответы с подзапросами, включённые с помощью SSI, не передавались
через SSL соединение.
</para>
<para lang="en">
the responses with SSI subrequests did not transferred via SSL connection.
</para>
</change>

<change>
<para lang="ru">
Разные исправления в IMAP/POP3 прокси.
</para>
<para lang="en">
Various bug fixes in the IMAP/POP3 proxy.
</para>
</change>

</changes>


<changes ver="0.1.44" date="2005-09-06">

<change type="feature">
<para lang="ru">
IMAP/POP3 прокси поддерживает SSL.
</para>
<para lang="en">
the IMAP/POP3 proxy supports SSL.
</para>
</change>

<change type="feature">
<para lang="ru">
директива proxy_timeout модуля ngx_imap_proxy_module.
</para>
<para lang="en">
the "proxy_timeout" directive of the ngx_imap_proxy_module.
</para>
</change>

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

<change type="feature">
<para lang="ru">
значение переменной $remote_user определяется независимо от того,
используется ли авторизация или нет.
</para>
<para lang="en">
the $remote_user variable value is determined independently of
authorization use.
</para>
</change>

</changes>


<changes ver="0.1.43" date="2005-08-30">

<change type="feature">
<para lang="ru">
listen(2) backlog в директиве listen можно менять по сигналу -HUP.
</para>
<para lang="en">
the listen(2) backlog in the "listen" directive
can be changed using the -HUP signal.
</para>
</change>

<change type="feature">
<para lang="ru">
скрипт geo2nginx.pl добавлен в contrib.
</para>
<para lang="en">
the geo2nginx.pl script was added to contrib.
</para>
</change>

<change type="change">
<para lang="ru">
параметры FastCGI с пустым значениями теперь передаются серверу.
</para>
<para lang="en">
the FastCGI parameters with the empty values now are passed to a server.
</para>
</change>

<!--

<change type="bugfix">
<para lang="ru">
при ошибках в работе с проксированным сервером или FastCGI сервером
мог произойти segmentation fault;
в режиме прокси ошибка появилась в 0.1.29.
</para>
<para lang="en">
the segmentation fault may occurred if there were errors while
working with proxied or FastCGI server;
in the proxied mode the bug had appeared in 0.1.29.
</para>
</change>

-->

<change type="bugfix">
<para lang="ru">
если в ответе проксированного сервера или FastCGI сервера была строка
"Cache-Control", то при использовании директивы expires происходил
segmentation fault или рабочий процесс мог зациклится;
в режиме прокси ошибка появилась в 0.1.29.
</para>
<para lang="en">
the segmentation fault occurred or the worker process may got caught
in an endless loop if the proxied or FastCGI server sent the "Cache-Control"
header line and the "expires" directive was used;
in the proxied mode the bug had appeared in 0.1.29.
</para>
</change>

</changes>


<changes ver="0.1.42" date="2005-08-23">

<change type="bugfix">
<para lang="ru">
если URI запроса получался нулевой длины после обработки модулем
ngx_http_rewrite_module, то в модуле ngx_http_proxy_module происходил
segmentation fault или bus error.
</para>
<para lang="en">
if the request URI had a zero length after the processing in
the ngx_http_proxy_module, then the segmentation fault or bus error occurred
in the ngx_http_proxy_module.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива limit_rate не работала внутри блока if;
ошибка появилась в 0.1.38.
</para>
<para lang="en">
the "limit_rate" directive did not work inside the "if" block;
the bug had appeared in 0.1.38.
</para>
</change>

</changes>


<changes ver="0.1.41" date="2005-07-25">

<change type="bugfix">
<para lang="ru">
если переменная использовалась в файле конфигурации,
то она не могла использоваться в SSI.
</para>
<para lang="en">
if the variable was used in the configuration file,
then it can not be used in SSI.
</para>
</change>

</changes>


<changes ver="0.1.40" date="2005-07-22">

<change type="bugfix">
<para lang="ru">
если клиент слал очень длинную строку заголовка, то в логе не помещалась
информация, связанная с этим запросом.
</para>
<para lang="en">
if a client sent too long header line, then the request information
did not logged in the error log.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании "X-Accel-Redirect" не передавалась строка "Set-Cookie";
ошибка появилась в 0.1.39.
</para>
<para lang="en">
the "Set-Cookie" header line was not transferred when the "X-Accel-Redirect"
was used;
the bug had appeared in 0.1.39.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании "X-Accel-Redirect" не передавалась строка
"Content-Disposition".
</para>
<para lang="en">
the "Content-Disposition" header line was not transferred when
the "X-Accel-Redirect" was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
по сигналу SIGQUIT основной процесс не закрывал сокеты, на которых он слушал.
</para>
<para lang="en">
the master process did not close the listen socket on the SIGQUIT signal.
</para>
</change>

<change type="bugfix">
<para lang="ru">
после обновления исполняемого файла на лету на Linux и Solaris
название процесса в команде ps становилось короче.
</para>
<para lang="en">
after on-line upgrade on Linux and Solaris the process name
became shorter in the "ps" command.
</para>
</change>

</changes>


<changes ver="0.1.39" date="2005-07-14">

<change>
<para lang="ru">
Изменения в модуле ngx_http_charset_module:
директива default_charset упразднена;
директива charset задаёт кодировку ответа;
директива source_charset задаёт только исходную кодировку.
</para>
<para lang="en">
The changes in the ngx_http_charset_module:
the "default_charset" directive was canceled;
the "charset" directive sets the response charset;
the "source_charset" directive sets the source charset only.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при перенаправлении ошибки 401, полученной от бэкенда, не передавалась
строка заголовка "WWW-Authenticate".
</para>
<para lang="en">
the backend "WWW-Authenticate" header line did not transferred while
the 401 response code redirecting.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модули ngx_http_proxy_module и ngx_http_fastcgi_module могли закрыть
соединение до того, как что-нибудь было передано клиенту;
ошибка появилась в 0.1.38.
</para>
<para lang="en">
the ngx_http_proxy_module and ngx_http_fastcgi_module may close
a connection before anything was transferred to a client;
the bug had appeared in 0.1.38.
</para>
</change>

<change type="workaround">
<para lang="ru">
обработка ошибки инициализации в crypt_r() в Linux glibc.
</para>
<para lang="en">
the Linux glibc crypt_r() initialization bug.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_ssi_module не поддерживал относительные URI в
команде include virtual.
</para>
<para lang="en">
the ngx_http_ssi_module did not support the relative URI in
the "include virtual" command.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если в строке заголовка ответа бэкенда была строка "Location",
которую nginx не должен был изменять, то в ответе передавалось тело 500 ошибки;
ошибка появилась в 0.1.29.
</para>
<para lang="en">
if the backend response had the "Location" header line and nginx
should not rewrite this line, then the 500 code response body was transferred;
the bug had appeared in 0.1.29.
</para>
</change>

<change type="bugfix">
<para lang="ru">
некоторые директивы модулей ngx_http_proxy_module и ngx_http_fastcgi_module
не наследовались с уровня server на уровень location;
ошибка появилась в 0.1.29.
</para>
<para lang="en">
some directives of the ngx_http_proxy_module and ngx_http_fastcgi_module
were not inherited from the server to the location level;
the bug had appeared in 0.1.29.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_ssl_module не поддерживал цепочки сертификатов.
</para>
<para lang="en">
the ngx_http_ssl_module did not support the certificate chain.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибка в модуле ngx_http_autoindex_module при показе длинных имён файлов;
ошибка появилась в 0.1.38.
</para>
<para lang="en">
the ngx_http_autoindex_module did not show correctly the long file names;
the bug had appeared in 0.1.38.
</para>
</change>

<change>
<para lang="ru">
Исправления в IMAP/POP3 прокси при взаимодействии с бэкендом на стадии login.
</para>
<para lang="en">
Bugfixes in IMAP/POP3 proxy in interaction with a backend at the login state.
</para>
</change>

</changes>


<changes ver="0.1.38" date="2005-07-08">

<change type="feature">
<para lang="ru">
директива limit_rate поддерживается в режиме прокси и FastCGI.
</para>
<para lang="en">
the "limit_rate" directive is supported in proxy and FastCGI mode.
</para>
</change>

<change type="feature">
<para lang="ru">
в режиме прокси и FastCGI поддерживается строка заголовка "X-Accel-Limit-Rate"
в ответе бэкенда.
</para>
<para lang="en">
the "X-Accel-Limit-Rate" response header line is supported in proxy
and FastCGI mode.
</para>
</change>

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

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

<change type="bugfix">
<para lang="ru">
при перенаправлении запроса с помощью строки заголовка "X-Accel-Redirect"
не изменялся код ответа.
</para>
<para lang="en">
the response status code was not changed when request was redirected
by the ""X-Accel-Redirect" header line.
</para>
</change>

<change type="bugfix">
<para lang="ru">
переменные, установленные директивой set не могли использоваться в SSI.
</para>
<para lang="en">
the variables set by the "set" directive could not be used in SSI.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при включении в SSI более одного удалённого подзапроса
мог произойти segmentation fault.
</para>
<para lang="en">
the segmentation fault may occurred if the SSI page has more than one
remote subrequest.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если статусная строка в ответе бэкенда передавалась в двух пакетах, то
nginx считал ответ неверным;
ошибка появилась в 0.1.29.
</para>
<para lang="en">
nginx treated the backend response as invalid if the status line in the
header was transferred in two packets;
the bug had appeared in 0.1.29.
</para>
</change>

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

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

<change type="bugfix">
<para lang="ru">
модуль ngx_http_autoindex_module не поддерживал длинные имена файлов в UTF-8.
</para>
<para lang="en">
the ngx_http_autoindex_module did not support the long file names in UTF-8.
</para>
</change>

<change type="feature">
<para lang="ru">
IMAP/POP3 прокси.
</para>
<para lang="en">
the IMAP/POP3 proxy.
</para>
</change>

</changes>


<changes ver="0.1.37" date="2005-06-23">

<change type="change">
<para lang="ru">
в конце файла nginx.pid теперь добавляется "\n".
</para>
<para lang="en">
now the "\n" is added to the end of the "nginx.pid" file.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при включении большого количества вставок или нескольких больших вставок
с помощью SSI ответ мог передаваться не полностью.
</para>
<para lang="en">
the responses may be transferred not completely,
if many parts or the big parts were included by SSI.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если все бэкенды возвращали ответ 404, то при использовании параметра http_404
в директивах proxy_next_upstream или fastcgi_next_upstream, nginx
начинал запрашивать все бэкенды снова.
</para>
<para lang="en">
if all backends had returned the 404 response and the "http_404" parameter of
the "proxy_next_upstream" or "fastcgi_next_upstream" directives was used,
then nginx started to request all backends again.
</para>
</change>

</changes>


<changes ver="0.1.36" date="2005-06-15">

<change type="change">
<para lang="ru">
если в заголовке запроса есть дублирующиеся строки "Host", "Connection",
"Content-Length" и "Authorization", то nginx теперь выдаёт ошибку 400.
</para>
<para lang="en">
if the request header has duplicate the "Host", "Connection", "Content-Length",
or "Authorization" lines, then nginx now returns the 400 error.
</para>
</change>

<change type="change">
<para lang="ru">
директива post_accept_timeout упразднена.
</para>
<para lang="en">
the "post_accept_timeout" directive was canceled.
</para>
</change>

<change type="feature">
<para lang="ru">
параметры default, af=, bl=, deferred и bind в директиве listen.
</para>
<para lang="en">
the "default", "af=", "bl=", "deferred", and "bind" parameters
of the "listen" directive.
</para>
</change>

<change type="feature">
<para lang="ru">
поддержка accept фильтров во FreeBSD.
</para>
<para lang="en">
the FreeBSD accept filters support.
</para>
</change>

<change type="feature">
<para lang="ru">
поддержка TCP_DEFER_ACCEPT в Linux.
</para>
<para lang="en">
the Linux TCP_DEFER_ACCEPT support.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_autoindex_module не поддерживал имена файлов в UTF-8.
</para>
<para lang="en">
the ngx_http_autoindex_module did not support the file names in UTF-8.
</para>
</change>

<change type="bugfix">
<para lang="ru">
после добавления новый лог-файл ротация этого лога по сигналу -USR1
выполнялась, только если переконфигурировать nginx два раза по сигналу -HUP.
</para>
<para lang="en">
the new log file can be rotated by the -USR1 signal only if
the reconfiguration by the -HUP signal was made twice.
</para>
</change>

</changes>


<changes ver="0.1.35" date="2005-06-07">

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

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

<change type="bugfix">
<para lang="ru">
если заголовок ответа бэкенда не помещался в один пакет, то
происходил segmentation fault;
ошибка появилась в 0.1.29.
</para>
<para lang="en">
the segmentation fault was occurred if the backend response header was in
several packets;
the bug had appeared in 0.1.29.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если было сконфигурировано более 10 серверов или в сервере не описана
директива "listen",
то при запуске мог произойти segmentation fault.
</para>
<para lang="en">
if more than 10 servers were configured or some server did not use the
"listen" directive, then the segmentation fault was occurred on the start.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если ответ не помещался во временный файл,
то мог произойти segmentation fault.
</para>
<para lang="en">
the segmentation fault might occur if the response was bigger than
the temporary file.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx возвращал ошибку 400 на запросы вида
<nobr>"GET http://www.domain.com/uri HTTP/1.0"</nobr>;
ошибка появилась в 0.1.28.
</para>
<para lang="en">
nginx returned the 400 response on requests like
<nobr>"GET http://www.domain.com/uri HTTP/1.0"</nobr>;
the bug had appeared in 0.1.28.
</para>
</change>

</changes>


<changes ver="0.1.34" date="2005-05-26">

<change type="bugfix">
<para lang="ru">
при включении больших ответов с помощью SSI рабочий процесс мог зациклиться.
</para>
<para lang="en">
the worker process may got caught in an endless loop if the big response
part were include by SSI.
</para>
</change>

<change type="bugfix">
<para lang="ru">
переменные, устанавливаемые директивой "set", не были доступны в SSI.
</para>
<para lang="en">
the variables set by the "set" directive were not available in SSI.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
пустое значение в директиве proxy_set_header запрещает передачу заголовка.
</para>
<para lang="en">
the empty value of the "proxy_set_header" directive forbids the client
request header line passing.
</para>
</change>

</changes>


<changes ver="0.1.33" date="2005-05-23">

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

<change type="bugfix">
<para lang="ru">
3, 5, 7 и 8 директив proxy_set_header на одном уровне вызывали
bus fault при запуске.
</para>
<para lang="en">
3, 4, 7, and 8 the "proxy_set_header" directives in one level cause
the bus fault on start up.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в редиректах внутри HTTPS сервера был указан протокол HTTP.
</para>
<para lang="en">
the HTTP protocol was specified in the HTTPS redirects.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если директива rewrite использовала выделения внутри директивы if, то
возвращалась ошибка 500.
</para>
<para lang="en">
if the "rewrite" directive used the captures inside the "if" directive, then
the 500 error code was returned.
</para>
</change>

</changes>


<changes ver="0.1.32" date="2005-05-19">

<change type="bugfix">
<para lang="ru">
в редиректах, выдаваемых с помощью директивы rewrite, не передавались аргументы;
ошибка появилась в 0.1.29.
</para>
<para lang="en">
the arguments were omitted in the redirects, issued by the "rewrite" directive;
the bug had appeared in 0.1.29.
</para>
</change>

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

<change type="feature">
<para lang="ru">
директива set поддерживает переменные и выделения из регулярных выражений.
</para>
<para lang="en">
the "set" directive supports the variables and the captures of regular
expressions.
</para>
</change>

<change type="feature">
<para lang="ru">
в режиме прокси и FastCGI поддерживается строка заголовка "X-Accel-Redirect"
в ответе бэкенда.
</para>
<para lang="en">
the "X-Accel-Redirect" response header line is supported in proxy and FastCGI
mode.
</para>
</change>

</changes>


<changes ver="0.1.31" date="2005-05-16">

<change type="bugfix">
<para lang="ru">
при использовании SSL ответ мог передаваться не до конца.
</para>
<para lang="en">
the response encrypted by SSL may not transferred complete.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки при обработке SSI в ответе, полученного от FastCGI-сервера.
</para>
<para lang="en">
errors while processing FastCGI response by SSI.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки при использовании SSI и сжатия.
</para>
<para lang="en">
errors while using SSI and gzipping.
</para>
</change>

<change type="bugfix">
<para lang="ru">
редирект с кодом 301 передавался без тела ответа;
ошибка появилась в 0.1.30.
</para>
<para lang="en">
the redirect with the 301 code was transferred without response body;
the bug had appeared in 0.1.30.
</para>
</change>

</changes>


<changes ver="0.1.30" date="2005-05-14">

<change type="bugfix">
<para lang="ru">
при использовании SSI рабочий процесс мог зациклиться.
</para>
<para lang="en">
the worker process may got caught in an endless loop if the SSI was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании SSL ответ мог передаваться не до конца.
</para>
<para lang="en">
the response encrypted by SSL may not transferred complete.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если длина части ответа, полученного за один раз от проксируемого или
FastCGI сервера была равна 500 байт, то nginx возвращал код ответа 500;
в режиме прокси ошибка появилась только в 0.1.29.
</para>
<para lang="en">
if the length of the response part received at once from proxied
or FastCGI server was equal to 500, then nginx returns the 500 response code;
in proxy mode the bug had appeared in 0.1.29 only.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не считал неверными директивы с 8-ю или 9-ю параметрами.
</para>
<para lang="en">
nginx did not consider the directives with 8 or 9 parameters as invalid.
</para>
</change>

<change type="feature">
<para lang="ru">
директива return может возвращать код ответа 204.
</para>
<para lang="en">
the "return" directive can return the 204 response code.
</para>
</change>

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

</changes>


<changes ver="0.1.29" date="2005-05-12">

<change type="feature">
<para lang="ru">
модуль ngx_http_ssi_module поддерживает команду include virtual.
</para>
<para lang="en">
the ngx_http_ssi_module supports "include virtual" command.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_http_ssi_module поддерживает условную команду вида
'if expr="$NAME"' и команды else и endif.
Допускается только один уровень вложенности.
</para>
<para lang="en">
the ngx_http_ssi_module supports the condition command like
'if expr="$NAME"' and "else" and "endif" commands.
Only one nested level is supported.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_http_ssi_module поддерживает две переменные DATE_LOCAL и DATE_GMT
и команду config timefmt.
</para>
<para lang="en">
the ngx_http_ssi_module supports the DATE_LOCAL and DATE_GMT variables
and "config timefmt" command.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
если переменная QUERY_STRING не была определена, то в команде echo
не ставилось значение по умолчанию.
</para>
<para lang="en">
the "echo" command did not show the default value for the empty QUERY_STRING
variable.
</para>
</change>

<change type="change">
<para lang="ru">
модуль ngx_http_proxy_module полностью переписан.
</para>
<para lang="en">
the ngx_http_proxy_module was rewritten.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы proxy_redirect, proxy_pass_request_headers,
proxy_pass_request_body и proxy_method.
</para>
<para lang="en">
the "proxy_redirect", "proxy_pass_request_headers",
"proxy_pass_request_body", and "proxy_method" directives.
</para>
</change>

<change type="feature">
<para lang="ru">
директива proxy_set_header.
Директива proxy_x_var упразднена и должна быть заменена директивой
proxy_set_header.
</para>
<para lang="en">
the "proxy_set_header" directive.
The "proxy_x_var" was canceled and must be replaced with the proxy_set_header
directive.
</para>
</change>

<change type="change">
<para lang="ru">
директива proxy_preserve_host упразднена и должна быть заменена директивами
"proxy_set_header Host $host" и "proxy_redirect off"
или директивой <nobr>"proxy_set_header Host $host:$proxy_port"</nobr>
и соответствующими ей директивами proxy_redirect.
</para>
<para lang="en">
the "proxy_preserve_host" is canceled and must be replaced with
the "proxy_set_header Host $host" and the "proxy_redirect off" directives,
the <nobr>"proxy_set_header Host $host:$proxy_port" directive</nobr>
and the appropriate proxy_redirect directives.
</para>
</change>

<change type="change">
<para lang="ru">
директива proxy_set_x_real_ip упразднена и должна быть заменена директивой
"proxy_set_header X-Real-IP $remote_addr".
</para>
<para lang="en">
the "proxy_set_x_real_ip" is canceled and must be replaced with
the "proxy_set_header X-Real-IP $remote_addr" directive.
</para>
</change>

<change type="change">
<para lang="ru">
директива proxy_add_x_forwarded_for упразднена и должна быть заменена
директивой
<nobr>"proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for".</nobr>
</para>
<para lang="en">
the "proxy_add_x_forwarded_for" is canceled and must be replaced with
<nobr>the "proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for"</nobr>
directive.
</para>
</change>

<change type="change">
<para lang="ru">
директива proxy_set_x_url упразднена и должна быть заменена директивой
<nobr>"proxy_set_header X-URL http://$host:$server_port$request_uri".</nobr>
</para>
<para lang="en">
the "proxy_set_x_url" is canceled and must be replaced with
the "proxy_set_header X-URL http://$host:$server_port$request_uri"
directive.
</para>
</change>

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

<change type="change">
<para lang="ru">
директивы fastcgi_root, fastcgi_set_var и fastcgi_params упразднены
и должны быть замены директивами fastcgi_param.
</para>
<para lang="en">
the "fastcgi_root", "fastcgi_set_var" and "fastcgi_params" directive
are canceled and must be replaced with the fastcgi_param directives.
</para>
</change>

<change type="feature">
<para lang="ru">
директива index может использовать переменные.
</para>
<para lang="en">
the "index" directive can use the variables.
</para>
</change>

<change type="feature">
<para lang="ru">
директива index может быть указана на уровне http и server.
</para>
<para lang="en">
the "index" directive can be used at http and server levels.
</para>
</change>

<change type="change">
<para lang="ru">
только последний параметр в директиве index может быть абсолютным.
</para>
<para lang="en">
the last index only in the "index" directive can be absolute.
</para>
</change>

<change type="feature">
<para lang="ru">
в директиве rewrite могут использоваться переменные.
</para>
<para lang="en">
the "rewrite" directive can use the variables.
</para>
</change>

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

<change type="feature">
<para lang="ru">
переменные CONTENT_LENGTH, CONTENT_TYPE, REMOTE_PORT, SERVER_ADDR,
SERVER_PORT, SERVER_PROTOCOL, DOCUMENT_ROOT, SERVER_NAME,
REQUEST_METHOD, REQUEST_URI и REMOTE_USER.
</para>
<para lang="en">
the CONTENT_LENGTH, CONTENT_TYPE, REMOTE_PORT, SERVER_ADDR,
SERVER_PORT, SERVER_PROTOCOL, DOCUMENT_ROOT, SERVER_NAME,
REQUEST_METHOD, REQUEST_URI, and REMOTE_USER variables.
</para>
</change>

<change type="change">
<para lang="ru">
nginx теперь передаёт неверные строки в заголовках запроса клиента и
ответа бэкенда.
</para>
<para lang="en">
nginx now passes the invalid lines in a client request headers
or a backend response header.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если бэкенд долго не передавал ответ и send_timeout был меньше, чем
proxy_read_timeout, то клиенту возвращался ответ 408.
</para>
<para lang="en">
if the backend did not transfer response for a long time and
the "send_timeout" was less than "proxy_read_timeout", then nginx
returned the 408 response.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если бэкенд передавал неверную строку в заголовке ответа, то происходил
segmentation fault;
ошибка появилась в 0.1.26.
</para>
<para lang="en">
the segmentation fault was occurred if the backend sent an invalid line
in response header;
the bug had appeared in 0.1.26.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании отказоустойчивой конфигурации в FastCGI мог
происходить segmentation fault.
</para>
<para lang="en">
the segmentation fault may occurred in FastCGI fault tolerance configuration.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива expires не удаляла уже установленные строки заголовка
"Expires" и "Cache-Control".
</para>
<para lang="en">
the "expires" directive did not remove the previous "Expires" and
"Cache-Control" headers.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не учитывал завершающую точку в строке заголовка запроса "Host".
</para>
<para lang="en">
nginx did not take into account trailing dot in "Host" header line.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_auth_module не работал на Linux.
</para>
<para lang="en">
the ngx_http_auth_module did not work under Linux.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива rewrite неверно работала, если в запросе присутствовали аргументы.
</para>
<para lang="en">
the rewrite directive worked incorrectly, if the arguments were in a request.
</para>
</change>

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

</changes>


<changes ver="0.1.28" date="2005-04-08">

<change type="bugfix">
<para lang="ru">
при проксировании больших файлов nginx сильно нагружал процессор.
</para>
<para lang="en">
nginx hogs CPU while proxying the huge files.
</para>
</change>

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

</changes>


<changes ver="0.1.27" date="2005-03-28">

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

<change type="change">
<para lang="ru">
ошибки обработки заголовка запроса теперь записываются на уровне
info, в лог также записывается имя сервера и строки заголовка
запроса "Host" и "Referer".
</para>
<para lang="en">
the errors while handling the request header now logged at "info" level.
The server name and the "Host" and "Referer" header lines also logged.
</para>
</change>

<change type="change">
<para lang="ru">
при записи ошибок в лог записывается также строка заголовка запроса "Host".
</para>
<para lang="en">
the "Host" header line is also logged in error log.
</para>
</change>

<change type="feature">
<para lang="ru">
директива proxy_pass_unparsed_uri.
Специальная обработка символов "://" в URI, введённая в версии 0.1.11,
теперь упразднена.
</para>
<para lang="en">
the proxy_pass_unparsed_uri directive.
The special handling of the "://" symbols in URI, appeared in 0.1.11 version,
now is canceled.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался на FreeBSD и Linux, если был указан параметр конфигурации
--without-ngx_http_auth_basic_module.
</para>
<para lang="en">
nginx could not be built on FreeBSD and Linux, if the
--without-ngx_http_auth_basic_module configuration parameter was used.
</para>
</change>

</changes>


<changes ver="0.1.26" date="2005-03-22">

<change type="change">
<para lang="ru">
неверные строки заголовка, переданные клиентом, теперь игнорируется и
записываются в error_log на уровне info.
</para>
<para lang="en">
the invalid client header lines are now ignored and logged at the info level.
</para>
</change>

<change type="change">
<para lang="ru">
при записи ошибок в лог записывается также имя сервера, при обращении
к которому произошла ошибка.
</para>
<para lang="en">
the server name is also logged in error log.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_http_auth_basic_module и директивы auth_basic и
auth_basic_user_file.
</para>
<para lang="en">
the ngx_http_auth_basic_module module and the auth_basic and
auth_basic_user_file directives.
</para>
</change>

</changes>


<changes ver="0.1.25" date="2005-03-19">

<change type="bugfix">
<para lang="ru">
nginx не работал на Linux parisc.
</para>
<para lang="en">
nginx did run on Linux parisc.
</para>
</change>

<change type="feature">
<para lang="ru">
nginx теперь не запускается под FreeBSD, если значение
sysctl kern.ipc.somaxconn слишком большое.
</para>
<para lang="en">
nginx now does not start under FreeBSD if the sysctl kern.ipc.somaxconn
value is too big.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если модуль ngx_http_index_module делал внутреннее перенаправление запроса
в модули ngx_http_proxy_module или ngx_http_fastcgi_module, то файл индекса
не закрывался после обслуживания запроса.
</para>
<para lang="en">
if a request was internally redirected by the ngx_http_index_module
module to the ngx_http_proxy_module or ngx_http_fastcgi_module modules,
then the index file was not closed after request completion.
</para>
</change>

<change type="feature">
<para lang="ru">
директива proxy_pass может использоваться в location, заданных регулярным
выражением.
</para>
<para lang="en">
the "proxy_pass" can be used in location with regular expression.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_http_rewrite_filter_module поддерживает условия вида
"if ($HTTP_USER_AGENT ~ MSIE)".
</para>
<para lang="en">
the ngx_http_rewrite_filter_module module supports the condition like
"if ($HTTP_USER_AGENT ~ MSIE)".
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx очень медленно запускался при большом количестве адресов и
использовании текстовых значений в директиве geo.
</para>
<para lang="en">
nginx started too slow if the large number of addresses and text values
were used in the "geo" directive.
</para>
</change>

<change type="change">
<para lang="ru">
имя переменной в директиве geo нужно указывать, как $name.
Прежний вариант без "$" пока работает, но вскоре будет убран.
</para>
<para lang="en">
a variable name must be declared as "$name" in the "geo" directive.
The previous variant without "$" is still supported, but will be removed soon.
</para>
</change>

<change type="feature">
<para lang="ru">
параметр лога "%{VARIABLE}v".
</para>
<para lang="en">
the "%{VARIABLE}v" logging parameter.
</para>
</change>

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

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

<change type="feature">
<para lang="ru">
параметр автоконфигурации --with-openssl-opt=OPTIONS.
</para>
<para lang="en">
the --with-openssl-opt=OPTIONS autoconfiguration directive.
</para>
</change>

</changes>


<changes ver="0.1.24" date="2005-03-04">

<change type="feature">
<para lang="ru">
модуль ngx_http_ssi_filter_module поддерживает переменные
QUERY_STRING и DOCUMENT_URI.
</para>
<para lang="en">
the ngx_http_ssi_filter_module supports the QUERY_STRING and DOCUMENT_URI
variables.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_autoindex_module мог выдавать ответ 404
на существующий каталог, если этот каталог был указан как alias.
</para>
<para lang="en">
the ngx_http_autoindex_module may some times return the 404 response
for existent directory, if this directory was used in "alias" directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_ssi_filter_module неправильно работал при больших
ответах.
</para>
<para lang="en">
the ngx_http_ssi_filter_module ran incorrectly for large responses.
</para>
</change>

<change type="bugfix">
<para lang="ru">
отсутствие строки заголовка "Referer" всегда считалось правильным referrer'ом.
</para>
<para lang="en">
the lack of the "Referer" header line was always accounted as valid referrer.
</para>
</change>

</changes>


<changes ver="0.1.23" date="2005-03-01">

<change type="feature">
<para lang="ru">
модуль ngx_http_ssi_filter_module и
директивы ssi, ssi_silent_errors и ssi_min_file_chunk.
Поддерживаются команды 'echo var="HTTP_..." default=""' и
'echo var="REMOTE_ADDR"'.
</para>
<para lang="en">
the ngx_http_ssi_filter_module and
the ssi, ssi_silent_errors, and ssi_min_file_chunk directives.
The 'echo var="HTTP_..." default=""' and 'echo var="REMOTE_ADDR"' commands
are supported.
</para>
</change>

<change type="feature">
<para lang="ru">
параметр лога %request_time.
</para>
<para lang="en">
the %request_time log parameter.
</para>
</change>

<change type="feature">
<para lang="ru">
если запрос пришёл без строки заголовка "Host", то директива
proxy_preserve_host устанавливает в качестве этого заголовка первое имя
сервера из директивы server_name.
</para>
<para lang="en">
if the request has no the "Host" header line, then the "proxy_preserve_host"
directive set this header line to the first server name of the "server_name"
directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался на платформах, отличных от i386, amd64, sparc и ppc;
ошибка появилась в 0.1.22.
</para>
<para lang="en">
nginx could not be built on platforms different from i386, amd64, sparc,
and ppc;
the bug had appeared in 0.1.22.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль ngx_http_autoindex_module теперь показывает информацию не о
символическом линке, а о файле или каталоге, на который он указывает.
</para>
<para lang="en">
the ngx_http_autoindex_module now shows the information not about the symlink,
but about file or directory it points to.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если клиенту ничего не передавалось, то параметр %apache_length
записывал в лог отрицательную длину заголовка ответа.
</para>
<para lang="en">
the %apache_length parameter logged the negative length
of the response header if the no response was transferred to a client.
</para>
</change>

</changes>


<changes ver="0.1.22" date="2005-02-22">

<change type="bugfix">
<para lang="ru">
модуль ngx_http_stub_status_module показывал неверную статистику
для обработанных соединений, если использовалось проксирование
или FastCGI-сервер.
</para>
<para lang="en">
the ngx_http_stub_status_module showed incorrect handled connections
statistics if the proxying or FastCGI server were used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
на Linux и Solaris установочные пути были неверно заключены в кавычки;
ошибка появилась в 0.1.21.
</para>
<para lang="en">
the installation paths were incorrectly quoted on Linux and Solaris;
the bug had appeared in 0.1.21.
</para>
</change>

</changes>


<changes ver="0.1.21" date="2005-02-22">

<change type="bugfix">
<para lang="ru">
модуль ngx_http_stub_status_module показывал неверную статистику
при использовании метода rtsig или при использовании нескольких
рабочих процессов на SMP машине.
</para>
<para lang="en">
the ngx_http_stub_status_module showed incorrect statistics
if "rtsig" method was used or if several worker process ran on SMP.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не собирался компилятором icc под Линуксом или
если библиотека zlib-1.2.x собиралась из исходных текстов.
</para>
<para lang="en">
nginx could not be built by the icc compiler on Linux or
if the zlib-1.2.x library was building from sources.
</para>
</change>

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

</changes>


<changes ver="0.1.20" date="2005-02-17">

<change type="feature">
<para lang="ru">
новые параметры script_filename и remote_port в директиве fastcgi_params.
</para>
<para lang="en">
the new "script_filename" and "remote_port" parameters
of the fastcgi_params directive.
</para>
</change>

<change type="bugfix">
<para lang="ru">
неправильно обрабатывался поток stderr от FastCGI-сервера.
</para>
<para lang="en">
the FastCGI stderr stream was handled incorrectly.
</para>
</change>

</changes>


<changes ver="0.1.19" date="2005-02-16">

<change type="bugfix">
<para lang="ru">
если в запросе есть нуль, то для локальных запросов теперь возвращается
ошибка 404.
</para>
<para lang="en">
now, if request contains the zero, then the 404 error is returned
for the local requests.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
во время чтения тела запроса клиента в SSL соединении мог произойти таймаут.
</para>
<para lang="en">
the timeout may occur while reading of the client request body
via SSL connections.
</para>
</change>

</changes>


<changes ver="0.1.18" date="2005-02-09">

<change type="workaround">
<para lang="ru">
для совместимости с Solaris 10 в директивах devpoll_events и devpoll_changes
значения по умолчанию уменьшены с 512 до 32.
</para>
<para lang="en">
the default values of the devpoll_events and the devpoll_changes directives
changed from 512 to 32 to be compatible with Solaris 10.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директивы proxy_set_x_var и fastcgi_set_var не наследовались.
</para>
<para lang="en">
the proxy_set_x_var and fastcgi_set_var directives were not inherited.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в директиве rewrite, возвращающей редирект, аргументы присоединялись
к URI через символ "&amp;" вместо "?".
</para>
<para lang="en">
in a redirect rewrite directive arguments were concatenated with URI
by an "&amp;" rather than a "?".
</para>
</change>

<change type="bugfix">
<para lang="ru">
строки для модуля ngx_http_geo_module без символа ";" во включённом файле
игнорировались.
</para>
<para lang="en">
the lines without trailing ";" in the file being included
by the ngx_http_geo_module were silently ignored.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
неизвестный формат лог-файла в директиве access_log вызывал segmentation fault.
</para>
<para lang="en">
the unknown log format in the access_log directive caused
the segmentation fault.
</para>
</change>

<change type="feature">
<para lang="ru">
новый параметр document_root в директиве fastcgi_params.
</para>
<para lang="en">
the new "document_root" parameter of the fastcgi_params directive.
</para>
</change>

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

<change type="feature">
<para lang="ru">
новый модификатор break в директиве rewrite позволяет прекратить
цикл rewrite/location и устанавливает текущую конфигурацию для запроса.
</para>
<para lang="en">
the new "break" modifier of the "rewrite" directive allows to stop
the rewrite/location cycle and sets the current configuration to the request.
</para>
</change>

</changes>


<changes ver="0.1.17" date="2005-02-03">

<change type="change">
<para lang="ru">
модуль ngx_http_rewrite_module полностью переписан.
Теперь можно делать редиректы, возвращать коды ошибок
и проверять переменные и рефереры.
Эти директивы можно использовать внутри location.
Директива redirect упразднена.
</para>
<para lang="en">
the ngx_http_rewrite_module was rewritten from the scratch.
Now it is possible to redirect, to return the error codes,
to check the variables and referrers. The directives can be used
inside locations.
The redirect directive was canceled.
</para>
</change>

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

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

<change type="bugfix">
<para lang="ru">
конфигурация location с модификатором "=" могла использоваться
в другом location.
</para>
<para lang="en">
the location configuration with "=" modifier may be used in another
location.
</para>
</change>

<change type="bugfix">
<para lang="ru">
правильный тип ответа выставлялся только для запросов, у которых в расширении
были только маленькие буквы.
</para>
<para lang="en">
the correct content type was set only for requests that use small caps letters
in extension.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если для location установлен proxy_pass или fastcgi_pass, и доступ
к нему запрещался, а ошибка перенаправлялась на статическую страницу,
то происходил segmentation fault.
</para>
<para lang="en">
if the proxy_pass or fastcgi_pass directives were set in the location,
and access was denied, and the error was redirected to a static page,
then the segmentation fault occurred.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если в проксированном ответе в заголовке "Location" передавался
относительный URL, то к нему добавлялось имя хоста и слэш;
ошибка появилась в 0.1.14.
</para>
<para lang="en">
if in a proxied "Location" header was a relative URL,
then a host name and a slash were added to them;
the bug had appeared in 0.1.14.
</para>
</change>

<change type="bugfix">
<para lang="ru">
на Linux в лог не записывался текст системной ошибки.
</para>
<para lang="en">
the system error message was not logged on Linux.
</para>
</change>

</changes>


<changes ver="0.1.16" date="2005-01-25">

<change type="bugfix">
<para lang="ru">
если ответ передавался chunk'ами, то при запросе HEAD выдавался
завершающий chunk.
</para>
<para lang="en">
if the response were transferred by chunks, then on the HEAD request
the final chunk was issued.
</para>
</change>

<change type="bugfix">
<para lang="ru">
заголовок "Connection: keep-alive" выдавался, даже если директива
keepalive_timeout запрещала использование keep-alive.
</para>
<para lang="en">
the "Connection: keep-alive" header were issued, even if the
keepalive_timeout directive forbade the keep-alive use.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки в модуле ngx_http_fastcgi_module вызывали segmentation fault.
</para>
<para lang="en">
the errors in the ngx_http_fastcgi_module caused the segmentation faults.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании SSL сжатый ответ мог передаваться не до конца.
</para>
<para lang="en">
the compressed response encrypted by SSL may not transferred complete.
</para>
</change>

<change type="bugfix">
<para lang="ru">
опции TCP_NODELAY, TCP_NOPUSH и TCP_CORK, специфичные для TCP сокетов,
не используются для unix domain сокетов.
</para>
<para lang="en">
the TCP-specific TCP_NODELAY, TCP_NOPUSH, and TCP_CORK options,
are not used for the unix domain sockets.
</para>
</change>

<change type="feature">
<para lang="ru">
директива rewrite поддерживает перезаписывание аргументов.
</para>
<para lang="en">
the rewrite directive supports the arguments rewriting.
</para>
</change>

<change type="bugfix">
<para lang="ru">
на запрос POST с заголовком "Content-Length: 0" возвращался ответ 400;
ошибка появилась в 0.1.14.
</para>
<para lang="en">
the response code 400 was returned for the POST request with the
"Content-Length: 0" header;
the bug had appeared in 0.1.14.
</para>
</change>

</changes>


<changes ver="0.1.15" date="2005-01-19">

<change type="bugfix">
<para lang="ru">
ошибка соединения с FastCGI-сервером вызывала segmentation fault.
</para>
<para lang="en">
the error while the connecting to the FastCGI server caused
segmentation fault.
</para>
</change>

<change type="bugfix">
<para lang="ru">
корректная обработка регулярного выражения, в котором число
выделенных частей не совпадает с числом подстановок.
</para>
<para lang="en">
the correct handling of the regular expression, that
has different number of the captures and substitutions.
</para>
</change>

<change type="feature">
<para lang="ru">
location, который передаётся FastCGI-серверу, может быть задан
с помощью регулярного выражения.
</para>
<para lang="en">
the location, that is passed to the FastCGI server, can be
regular expression.
</para>
</change>

<change type="bugfix">
<para lang="ru">
параметр FastCGI REQUEST_URI теперь передаётся вместе с аргументами
и в том виде, в котором был получен от клиента.
</para>
<para lang="en">
the FastCGI's parameter REQUEST_URI is now passed with the arguments
and in the original state.
</para>
</change>

<change type="bugfix">
<para lang="ru">
для использования регулярных выражений в location нужно было
собирать nginx вместе с ngx_http_rewrite_module.
</para>
<para lang="en">
the ngx_http_rewrite_module module was required to be built to use
the regular expressions in locations.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если бэкенд слушал на 80-ом порту, то при использовании директивы
<nobr>"proxy_preserve_host  on"</nobr> в заголовке "Host" указывался
также порт 80;
ошибка появилась в 0.1.14.
</para>
<para lang="en">
the directive <nobr>"proxy_preserve_host  on"</nobr> adds port 80
to the "Host" headers, if upstream listen on port 80;
the bug had appeared in 0.1.14.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если задать одинаковые пути в параметрах автоконфигурации
--http-client-body-temp-path=PATH и --http-proxy-temp-path=PATH
или --http-client-body-temp-path=PATH и --http-fastcgi-temp-path=PATH,
то происходил segmentation fault.
</para>
<para lang="en">
the same paths in autoconfiguration parameters
--http-client-body-temp-path=PATH and --http-proxy-temp-path=PATH,
or --http-client-body-temp-path=PATH and --http-fastcgi-temp-path=PATH
caused segmentation fault.
</para>
</change>

</changes>


<changes ver="0.1.14" date="2005-01-18">

<change type="feature">
<para lang="ru">
параметры автоконфигурации
--http-client-body-temp-path=PATH,
--http-proxy-temp-path=PATH
и --http-fastcgi-temp-path=PATH
</para>
<para lang="en">
the autoconfiguration directives:
--http-client-body-temp-path=PATH,
--http-proxy-temp-path=PATH,
and --http-fastcgi-temp-path=PATH
</para>
</change>

<change type="change">
<para lang="ru">
имя каталога с временными файлами, содержащие тело запроса клиента,
задаётся директивой client_body_temp_path,
по умолчанию &lt;prefix&gt;/client_body_temp.
</para>
<para lang="en">
the directory name for the temporary files with the client request body
is specified by directive client_body_temp_path,
by default it is &lt;prefix&gt;/client_body_temp.
</para>
</change>

<change type="feature">
<para lang="ru">
модуль ngx_http_fastcgi_module и директивы
fastcgi_pass,
fastcgi_root,
fastcgi_index,
fastcgi_params,
fastcgi_connect_timeout,
fastcgi_send_timeout,
fastcgi_read_timeout,
fastcgi_send_lowat,
fastcgi_header_buffer_size,
fastcgi_buffers,
fastcgi_busy_buffers_size,
fastcgi_temp_path,
fastcgi_max_temp_file_size,
fastcgi_temp_file_write_size,
fastcgi_next_upstream
и fastcgi_x_powered_by.

</para>
<para lang="en">
the ngx_http_fastcgi_module and the directives:
fastcgi_pass,
fastcgi_root,
fastcgi_index,
fastcgi_params,
fastcgi_connect_timeout,
fastcgi_send_timeout,
fastcgi_read_timeout,
fastcgi_send_lowat,
fastcgi_header_buffer_size,
fastcgi_buffers,
fastcgi_busy_buffers_size,
fastcgi_temp_path,
fastcgi_max_temp_file_size,
fastcgi_temp_file_write_size,
fastcgi_next_upstream,
and fastcgi_x_powered_by.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибка "[alert] zero size buf";
ошибка появилась в 0.1.3.
</para>
<para lang="en">
the "[alert] zero size buf" error;
the bug had appeared in 0.1.3.
</para>
</change>

<change type="change">
<para lang="ru">
в директиве proxy_pass нужно обязательно указывать URI после имени хоста.
</para>
<para lang="en">
the URI must be specified after the host name in the proxy_pass directive.
</para>
</change>

<change type="change">
<para lang="ru">
если в URI встречался символ %3F, то он считался началом строки аргументов.
</para>
<para lang="en">
the %3F symbol in the URI was considered as the argument string start.
</para>
</change>

<change type="feature">
<para lang="ru">
поддержка unix domain сокетов в модуле ngx_http_proxy_module.
</para>
<para lang="en">
the unix domain sockets support in the ngx_http_proxy_module.
</para>
</change>

<change type="feature">
<para lang="ru">
директивы ssl_engine и ssl_ciphers.<br/>
Спасибо Сергею Скворцову за SSL-акселератор.
</para>
<para lang="en">
the ssl_engine and ssl_ciphers directives.<br/>
Thanks to Sergey Skvortsov for SSL-accelerator.
</para>
</change>

</changes>


<changes ver="0.1.13" date="2004-12-21">

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

<change type="bugfix">
<para lang="ru">
имена *.domain.tld в директиве server_name не работали.
</para>
<para lang="en">
the *.domain.tld names in the "server_name" directive did not work.
</para>
</change>

<change type="bugfix">
<para lang="ru">
параметр лога %request_length записывал неверную длину.
</para>
<para lang="en">
the %request_length log parameter logged the incorrect length.
</para>
</change>

</changes>


<changes ver="0.1.12" date="2004-12-06">

<change type="feature">
<para lang="ru">
параметр лога %request_length.
</para>
<para lang="en">
the %request_length log parameter.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании /dev/poll, select и poll на платформах, где возможны
ложные срабатывания указанных методов, могли быть длительные задержки
при обработке запроса по keep-alive соединению.
Наблюдалось по крайней мере на Solaris с использованием /dev/poll.
</para>
<para lang="en">
when using the /dev/poll, select and poll on the platforms, where
these methods may do the false reports, there may be the long delay when
the request was passed via the keep-alive connection.
It may be at least on Solaris when using the /dev/poll.
</para>
</change>

<change type="bugfix">
<para lang="ru">
директива send_lowat игнорируется на Linux, так как Linux не поддерживает
опцию SO_SNDLOWAT.
</para>
<para lang="en">
the send_lowat directive is ignored on Linux because Linux does not support
the SO_SNDLOWAT option.
</para>
</change>

</changes>


<changes ver="0.1.11" date="2004-12-02">

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

<change type="change">
<para lang="ru">
под FreeBSD директивы tcp_nopush и tcp_nodelay вместе влияют на передачу
ответа.
</para>
<para lang="en">
both tcp_nopush and tcp_nodelay directives affect the transferred response.
</para>
</change>

<change type="bugfix">
<para lang="ru">
nginx не вызывал initgroups().<br/>
Спасибо Андрею Ситникову и Андрею Нигматулину.
</para>
<para lang="en">
nginx did not call initgroups().<br/>
Thanks to Andrew Sitnikov and Andrei Nigmatulin.
</para>
</change>

<change type="change">
<para lang="ru">
ngx_http_auto_index_module теперь выдаёт размер файлов в байтах.
</para>
<para lang="en">
now the ngx_http_autoindex_module shows the file size in the bytes.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ngx_http_auto_index_module возвращал ошибку 500, если в каталоге есть
битый symlink.
</para>
<para lang="en">
the ngx_http_autoindex_module returned the 500 error if the broken symlink
was in a directory.
</para>
</change>

<change type="bugfix">
<para lang="ru">
файлы больше 4G не передавались с использованием sendfile.
</para>
<para lang="en">
the files bigger than 4G could not be transferred using sendfile.
</para>
</change>

<change type="bugfix">
<para lang="ru">
если бэкенд резолвился в несколько адресов и при ожидании от него ответа
происходила ошибка, то процесс зацикливался.
</para>
<para lang="en">
if the backend was resolved to several backends and there was an error while
the response waiting then process may got caught in an endless loop.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании метода /dev/poll рабочий процесс мог завершиться
с сообщением "unknown cycle".
</para>
<para lang="en">
the worker process may exit with the "unknown cycle" message when the /dev/poll
method was used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки "close() channel failed".
</para>
<para lang="en">
"close() channel failed" errors.
</para>
</change>

<change type="bugfix">
<para lang="ru">
автоматическое определение групп nobody и nogroup.
</para>
<para lang="en">
the autodetection of the "nobody" and "nogroup" groups.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
если в конфигурации не было раздела events, то происходил segmentation fault.
</para>
<para lang="en">
the segmentation fault occurred if there was no events section
in configuration.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
двойные слэшы в "://" в URI превращались в ":/".
</para>
<para lang="en">
the double slashes in "://" in the URI were converted to ":/".
</para>
</change>

</changes>


<changes ver="0.1.10" date="2004-11-26">

<change type="bugfix">
<para lang="ru">
если в запросе без аргументов есть "//", "/./", "/../" или "%XX",
то терялся последний символ в строке запроса;
ошибка появилась в 0.1.9.
</para>
<para lang="en">
if the request without arguments contains "//", "/./", "/../" or "%XX"
then the last character in the request line was lost;
the bug had appeared in 0.1.9.
</para>
</change>

<change type="bugfix">
<para lang="ru">
исправление в версии 0.1.9 для файлов больше 2G на Linux не работало.
</para>
<para lang="en">
the fix in 0.1.9 for the files bigger than 2G on Linux did not work.
</para>
</change>

</changes>


<changes ver="0.1.9" date="2004-11-25">

<change type="bugfix">
<para lang="ru">
если в запросе есть "//", "/./", "/../" или "%XX", то проксируемый
запрос передавался без аргументов.
</para>
<para lang="en">
the proxied request was sent without arguments if the request contains
"//", "/./", "/../" or "%XX".
</para>
</change>

<change type="bugfix">
<para lang="ru">
при сжатии больших ответов иногда они передавались не полностью.
</para>
<para lang="en">
the large compressed responses may be transferred not completely.
</para>
</change>

<change type="bugfix">
<para lang="ru">
не передавались файлы больше 2G на Linux, неподдерживающем sendfile64().
</para>
<para lang="en">
the files bigger than 2G was not transferred on Linux that does not support
sendfile64().
</para>
</change>

<change type="bugfix">
<para lang="ru">
на Linux при конфигурации сборки нужно было обязательно использовать
параметр --with-poll_module;
ошибка появилась в 0.1.8.
</para>
<para lang="en">
while the build configuration on Linux the --with-poll_module parameter
was required;
the bug had appeared in 0.1.8.
</para>
</change>

</changes>


<changes ver="0.1.8" date="2004-11-20">

<change type="bugfix">
<para lang="ru">
ошибка в модуле ngx_http_autoindex_module при показе длинных имён файлов.
</para>
<para lang="en">
in the ngx_http_autoindex_module if the long file names were in the listing.
</para>
</change>

<change type="feature">
<para lang="ru">
модификатор "^~" в директиве location.
</para>
<para lang="en">
the "^~" modifier in the location directive.
</para>
</change>

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

</changes>


<changes ver="0.1.7" date="2004-11-12">

<change type="bugfix">
<para lang="ru">
при использовании sendfile, если передаваемый файл менялся, то мог
произойти segmentation fault на FreeBSD;
ошибка появилась в 0.1.5.
</para>
<para lang="en">
on FreeBSD the segmentation fault may occur if the size of the transferred
file was changed;
the bug had appeared in 0.1.5.
</para>
</change>

</changes>


<changes ver="0.1.6" date="2004-11-11">

<change type="bugfix">
<para lang="ru">
при некоторых комбинациях директив location c регулярными выражениями
использовалась конфигурация не из того location.
</para>
<para lang="en">
some location directive combinations with the regular expressions caused
the wrong configuration choose.
</para>
</change>

</changes>


<changes ver="0.1.5" date="2004-11-11">

<change type="bugfix">
<para lang="ru">
на Solaris и Linux могло быть очень много сообщений "recvmsg() returned
not enough data".
</para>
<para lang="en">
on Solaris and Linux there may be too many "recvmsg() returned not enough data"
alerts.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в режиме прокси без использования sendfile на Solaris возникала
ошибка "writev() failed <nobr>(22: Invalid argument)".</nobr>
На других платформах, не поддерживающих sendfile, процесс зацикливался.
</para>
<para lang="en">
there were the "writev() failed <nobr>(22: Invalid argument)"</nobr> errors on
Solaris in proxy mode without sendfile. On other platforms that do not
support sendfile at all the process got caught in an endless loop.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании sendfile в режиме прокси на Solaris возникал
segmentation fault.
</para>
<para lang="en">
segmentation fault on Solaris in proxy mode and using sendfile.
</para>
</change>

<change type="bugfix">
<para lang="ru">
segmentation fault на Solaris.
</para>
<para lang="en">
segmentation fault on Solaris.
</para>
</change>

<change type="bugfix">
<para lang="ru">
обновление исполняемого файла на лету не работало на Linux.
</para>
<para lang="en">
on-line upgrade did not work on Linux.
</para>
</change>

<change type="bugfix">
<para lang="ru">
в списке файлов, выдаваемом модулем ngx_http_autoindex_module,
не перекодировались пробелы, кавычки и знаки процента.
</para>
<para lang="en">
the ngx_http_autoindex_module module did not escape the spaces,
the quotes, and the percent signs in the directory listing.
</para>
</change>

<change type="change">
<para lang="ru">
уменьшение операций копирования.
</para>
<para lang="en">
the decrease of the copy operations.
</para>
</change>

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

</changes>


<changes ver="0.1.4" date="2004-10-26">

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

</changes>


<changes ver="0.1.3" date="2004-10-25">

<change type="feature">
<para lang="ru">
модуль ngx_http_autoindex_module и директива autoindex.
</para>
<para lang="en">
the ngx_http_autoindex_module and the autoindex directive.
</para>
</change>

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

<change type="bugfix">
<para lang="ru">
модуль проксировании мог привести к зацикливанию, если не использовался
sendfile.
</para>
<para lang="en">
proxy module may get caught in an endless loop when sendfile is not used.
</para>
</change>

</changes>


<changes ver="0.1.2" date="2004-10-21">

<change type="feature">
<para lang="ru">
параметры --user=USER, --group=GROUP и --with-ld-opt=OPTIONS в configure.
</para>
<para lang="en">
the --user=USER, --group=GROUP, and --with-ld-opt=OPTIONS options in configure.
</para>
</change>

<change type="feature">
<para lang="ru">
директива server_name поддерживает *.domain.tld.
</para>
<para lang="en">
the server_name directive supports *.domain.tld.
</para>
</change>

<change type="bugfix">
<para lang="ru">
улучшена переносимость на неизвестные платформы.
</para>
<para lang="en">
the portability improvements.
</para>
</change>

<change type="bugfix">
<para lang="ru">
нельзя переконфигурировать nginx, если конфигурационный файл указан
в командной строке;
ошибка появилась в 0.1.1.
</para>
<para lang="en">
if configuration file was set in command line, the reconfiguration
was impossible;
the bug had appeared in 0.1.1.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль проксировании мог привести к зацикливанию, если не использовался
sendfile.
</para>
<para lang="en">
proxy module may get caught in an endless loop when sendfile is not used.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при использовании sendfile текст ответа не перекодировался
согласно директивам модуля charset;
ошибка появилась в 0.1.1.
</para>
<para lang="en">
with sendfile the response was not recoded according to the charset
module directives;
the bug had appeared in 0.1.1.
</para>
</change>

<change type="bugfix">
<para lang="ru">
очень редкая ошибка при обработке kqueue.
</para>
<para lang="en">
very seldom bug in the kqueue processing.
</para>
</change>

<change type="bugfix">
<para lang="ru">
модуль сжатия сжимал уже сжатые ответы, полученные при проксировании.
</para>
<para lang="en">
the gzip module compressed the proxied responses that was already compressed.
</para>
</change>

</changes>


<changes ver="0.1.1" date="2004-10-11">

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

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

<change type="feature">
<para lang="ru">
директива send_lowat работает не только на платформах, поддерживающих
kqueue NOTE_LOWAT, но и на всех, поддерживающих SO_SNDLOWAT.
</para>
<para lang="en">
the send_lowat directive is working not only on OSes that support
kqueue NOTE_LOWAT, but also on OSes that support SO_SNDLOWAT.
</para>
</change>

<change type="feature">
<para lang="ru">
эмуляция setproctitle() для Linux и Solaris.
</para>
<para lang="en">
the setproctitle() emulation for Linux and Solaris.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибка при переписывании заголовка "Location" при проксировании.
</para>
<para lang="en">
the "Location" header rewrite bug fixed while the proxying.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибка в модуле ngx_http_chunked_module, приводившая к зацикливанию.
</para>
<para lang="en">
the ngx_http_chunked_module module may get caught in an endless loop.
</para>
</change>

<change type="bugfix">
<para lang="ru">
ошибки в модуле /dev/poll.
</para>
<para lang="en">
the /dev/poll module bugs fixed.
</para>
</change>

<change type="bugfix">
<para lang="ru">
при проксировании и использовании временных файлов ответы портились.
</para>
<para lang="en">
the responses were corrupted when the temporary files were used
while the proxying.
</para>
</change>

<change type="bugfix">
<para lang="ru">
бэкенду передавались запросы с неперекодированными символами.
</para>
<para lang="en">
the unescaped requests were passed to the backend.
</para>
</change>

<change type="bugfix">
<para lang="ru">
на Linux 2.4 при конфигурации сборки нужно было обязательно использовать
параметр --with-poll_module.
</para>
<para lang="en">
while the build configuration on Linux 2.4 the --with-poll_module parameter
was required.
</para>
</change>

</changes>


<changes ver="0.1.0" date="2004-10-04">

<change>
<para lang="ru">
Первая публично доступная версия.
</para>
<para lang="en">
The first public version.
</para>
</change>

</changes>


</change_log>
