параметр http_429 в директивах proxy_next_upstream, fastcgi_next_upstream, scgi_next_upstream и uwsgi_next_upstream.
Спасибо Piotr Sikora.
the "http_429" parameter of the "proxy_next_upstream", "fastcgi_next_upstream", "scgi_next_upstream", and "uwsgi_next_upstream" directives.
Thanks to Piotr Sikora.
в обработке ошибок выделения памяти. in memory allocation error handling. при использовании директив sendfile и timer_resolution на Linux запросы могли зависать. requests might hang when using the "sendfile" and "timer_resolution" directives on Linux. при использовании с подзапросами директив sendfile и aio_write запросы могли зависать. requests might hang when using the "sendfile" and "aio_write" directives with subrequests. в модуле ngx_http_v2_module.
Спасибо Piotr Sikora.
in the ngx_http_v2_module.
Thanks to Piotr Sikora.
при использовании HTTP/2 в рабочем процессе мог произойти segmentation fault. a segmentation fault might occur in a worker process when using HTTP/2. запросы могли зависать при использовании с подзапросами директив limit_rate, sendfile_max_chunk, limit_req или метода $r->sleep() встроенного перла. requests might hang when using the "limit_rate", "sendfile_max_chunk", "limit_req" directives, or the $r->sleep() embedded perl method with subrequests. в модуле ngx_http_slice_module. in the ngx_http_slice_module.
nginx мог нагружать процессор; ошибка появилась в 1.11.11. nginx might hog CPU; the bug had appeared in 1.11.11. директива worker_shutdown_timeout. the "worker_shutdown_timeout" directive. улучшения в скриптах подсветки синтаксиса для vim.
Спасибо Wei-Ko Kao.
vim syntax highlighting scripts improvements.
Thanks to Wei-Ko Kao.
при попытке установить переменную $limit_rate в пустую строку в рабочем процессе мог произойти segmentation fault. a segmentation fault might occur in a worker process if the $limit_rate variable was set to an empty string. директивы proxy_cache_background_update, fastcgi_cache_background_update, scgi_cache_background_update и uwsgi_cache_background_update могли работать некорректно, если использовалась директива if. 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. в рабочем процессе мог произойти segmentation fault, если количество large_client_header_buffers в виртуальном сервере отличалось от такового в сервере по умолчанию. 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. в почтовом прокси-сервере. in the mail proxy server.
формат заголовка кэша был изменен, ранее закэшированные ответы будут загружены заново. cache header format has been changed, previously cached responses will be invalidated. поддержка расширений stale-while-revalidate и stale-if-error в строке "Cache-Control" в заголовке ответа бэкенда. support of "stale-while-revalidate" and "stale-if-error" extensions in the "Cache-Control" backend response header line. директивы proxy_cache_background_update, fastcgi_cache_background_update, scgi_cache_background_update и uwsgi_cache_background_update. the "proxy_cache_background_update", "fastcgi_cache_background_update", "scgi_cache_background_update", and "uwsgi_cache_background_update" directives. теперь nginx может кэшировать ответы со строкой Vary заголовка длиной до 128 символов (вместо 42 символов в предыдущих версиях). nginx is now able to cache responses with the "Vary" header line up to 128 characters long (instead of 42 characters in previous versions). параметр build директивы server_tokens.
Спасибо Tom Thorogood.
the "build" parameter of the "server_tokens" directive.
Thanks to Tom Thorogood.
при обработке запросов со строкой "Expect: 100-continue" в заголовке запроса в логах могли появляться сообщения "[crit] SSL_write() failed". "[crit] SSL_write() failed" messages might appear in logs when handling requests with the "Expect: 100-continue" request header line. модуль ngx_http_slice_module не работал в именованных location'ах. the ngx_http_slice_module did not work in named locations. при использовании AIO после перенаправления запроса с помощью X-Accel-Redirect в рабочем процессе мог произойти segmentation fault. a segmentation fault might occur in a worker process when using AIO after an "X-Accel-Redirect" redirection. уменьшено потребление памяти для долгоживущих запросов, использующих сжатие. reduced memory consumption for long-lived requests using gzipping.
при использовании модуля stream nginx мог нагружать процессор; ошибка появилась в 1.11.5. nginx might hog CPU when using the stream module; the bug had appeared in 1.11.5. метод аутентификации EXTERNAL в почтовом прокси-сервере можно было использовать, даже если он не был разрешён в конфигурации. EXTERNAL authentication mechanism in mail proxy was accepted even if it was not enabled in the configuration. при использовании директивы ssl_verify_client модуля stream в рабочем процессе мог произойти segmentation fault. a segmentation fault might occur in a worker process if the "ssl_verify_client" directive of the stream module was used. директива ssl_verify_client модуля stream могла не работать. the "ssl_verify_client" directive of the stream module might not work. при исчерпании рабочим процессом свободных соединений keepalive-соединения могли закрываться излишне агрессивно.
Спасибо Joel Cunningham.
closing keepalive connections due to no free worker connections might be too aggressive.
Thanks to Joel Cunningham.
при использовании директивы sendfile на FreeBSD и macOS мог возвращаться некорректный ответ; ошибка появилась в 1.7.8. an incorrect response might be returned when using the "sendfile" directive on FreeBSD and macOS; the bug had appeared in 1.7.8. при использовании директивы aio_write ответ мог сохраняться в кэш не полностью. a truncated response might be stored in cache when using the "aio_write" directive. при использовании директивы aio_write могла происходить утечка сокетов. a socket leak might occur when using the "aio_write" directive.
директива absolute_redirect. the "absolute_redirect" directive. параметр escape директивы log_format. the "escape" parameter of the "log_format" directive. проверка клиентских SSL-сертификатов в модуле stream. client SSL certificates verification in the stream module. директива ssl_session_ticket_key поддерживает шифрование TLS session tickets с помощью AES256 при использовании с 80-байтными ключами. the "ssl_session_ticket_key" directive supports AES256 encryption of TLS session tickets when used with 80-byte keys. поддержка vim-commentary в скриптах для vim.
Спасибо Armin Grodon.
vim-commentary support in vim scripts.
Thanks to Armin Grodon.
рекурсия при получении значений переменных не ограничивалась. recursion when evaluating variables was not limited. в модуле ngx_stream_ssl_preread_module. in the ngx_stream_ssl_preread_module. если сервер, описанный в блоке upstream в модуле stream, был признан неработающим, то после истечения fail_timeout он признавался работающим только после завершения тестового соединения; теперь достаточно, чтобы соединение было успешно установлено. 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. nginx/Windows не собирался с 64-битным Visual Studio. nginx/Windows could not be built with 64-bit Visual Studio. nginx/Windows не собирался с OpenSSL 1.1.0. nginx/Windows could not be built with OpenSSL 1.1.0.
переменная $ssl_client_verify теперь в случае ошибки проверки клиентского сертификата содержит строку с описанием ошибки, например, "FAILED:certificate has expired". 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". переменные $ssl_ciphers, $ssl_curves, $ssl_client_v_start, $ssl_client_v_end и $ssl_client_v_remain. the $ssl_ciphers, $ssl_curves, $ssl_client_v_start, $ssl_client_v_end, and $ssl_client_v_remain variables. параметр volatile директивы map. the "volatile" parameter of the "map" directive. при сборке динамических модулей не учитывались заданные для модуля зависимости. dependencies specified for a module were ignored while building dynamic modules. при использовании HTTP/2 и директив limit_req или auth_request тело запроса могло быть повреждено; ошибка появилась в 1.11.0. 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. при использовании HTTP/2 в рабочем процессе мог произойти segmentation fault; ошибка появилась в 1.11.3. a segmentation fault might occur in a worker process when using HTTP/2; the bug had appeared in 1.11.3. в модуле ngx_http_mp4_module.
Спасибо Congcong Hu.
in the ngx_http_mp4_module.
Thanks to Congcong Hu.
в модуле ngx_http_perl_module. in the ngx_http_perl_module.
формат переменных $ssl_client_s_dn и $ssl_client_i_dn изменён на соответствующий RFC 2253 (RFC 4514); значения в старом формате доступны через переменные $ssl_client_s_dn_legacy и $ssl_client_i_dn_legacy. 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. при сохранении временных файлов в каталоге кэша они теперь располагаются не в отдельном подкаталоге для временных файлов, а в том же подкаталоге, что и соответствующие файлы в кэше. 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. поддержка метода аутентификации EXTERNAL в почтовом прокси-сервере.
Спасибо Robert Norris.
EXTERNAL authentication mechanism support in mail proxy.
Thanks to Robert Norris.
поддержка WebP в модуле ngx_http_image_filter_module. WebP support in the ngx_http_image_filter_module. директива proxy_method поддерживает переменные.
Спасибо Дмитрию Лазуркину.
variables support in the "proxy_method" directive.
Thanks to Dmitry Lazurkin.
директива http2_max_requests в модуле ngx_http_v2_module. the "http2_max_requests" directive in the ngx_http_v2_module. директивы proxy_cache_max_range_offset, fastcgi_cache_max_range_offset, scgi_cache_max_range_offset и uwsgi_cache_max_range_offset. the "proxy_cache_max_range_offset", "fastcgi_cache_max_range_offset", "scgi_cache_max_range_offset", and "uwsgi_cache_max_range_offset" directives. плавное завершение старых рабочих процессов могло занимать бесконечное время при использовании HTTP/2. graceful shutdown of old worker processes might require infinite time when using HTTP/2. в модуле ngx_http_mp4_module. in the ngx_http_mp4_module. при проксировании WebSocket-соединений и включённом кэшировании в логах могли появляться сообщения "ignore long locked inactive cache entry". "ignore long locked inactive cache entry" alerts might appear in logs when proxying WebSocket connections with caching enabled. если во время SSL handshake с бэкендом происходил таймаут, nginx ничего не писал в лог и возвращал ответ с кодом 502 вместо 504. 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.
параметр configure --with-ipv6 упразднён, поддержка IPv6 теперь собирается автоматически. the --with-ipv6 configure option was removed, now IPv6 support is configured automatically. теперь, если в блоке upstream не оказалось доступных серверов, nginx не сбрасывает статистику ошибок всех серверов, как делал ранее, а ожидает истечения fail_timeout. 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. модуль ngx_stream_ssl_preread_module. the ngx_stream_ssl_preread_module. директива server в блоке upstream поддерживает параметр max_conns. the "server" directive in the "upstream" context supports the "max_conns" parameter. параметр configure --with-compat. the --with-compat configure option. параметры manager_files, manager_threshold и manager_sleep директив proxy_cache_path, fastcgi_cache_path, scgi_cache_path и uwsgi_cache_path. "manager_files", "manager_threshold", and "manager_sleep" parameters of the "proxy_cache_path", "fastcgi_cache_path", "scgi_cache_path", and "uwsgi_cache_path" directives. при сборке perl-модуля не использовались флаги, заданные с помощью параметра configure --with-ld-opt. flags passed by the --with-ld-opt configure option were not used while building perl module. в директиве add_after_body при использовании совместно с директивой sub_filter. in the "add_after_body" directive when used with the "sub_filter" directive. в переменной $realip_remote_addr. in the $realip_remote_addr variable. директивы dav_access, proxy_store_access, fastcgi_store_access, scgi_store_access и uwsgi_store_access игнорировали права, заданные для пользователя. the "dav_access", "proxy_store_access", "fastcgi_store_access", "scgi_store_access", and "uwsgi_store_access" directives ignored permissions specified for user. unix domain listen-сокеты могли не наследоваться при обновлении исполняемого файла на Linux. unix domain listen sockets might not be inherited during binary upgrade on Linux. nginx возвращал ошибку 400 на запросы с символом "-" в HTTP-методе. nginx returned the 400 response on requests with the "-" character in the HTTP method. переменная $upstream_bytes_received. the $upstream_bytes_received variable. переменные $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. 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. модуль ngx_stream_log_module. the ngx_stream_log_module. параметр proxy_protocol в директиве listen, переменные $proxy_protocol_addr и $proxy_protocol_port в модуле stream. the "proxy_protocol" parameter of the "listen" directive, the $proxy_protocol_addr and $proxy_protocol_port variables in the stream module. модуль ngx_stream_realip_module. the ngx_stream_realip_module. nginx не собирался с модулем stream и модулем ngx_http_ssl_module, но без модуля ngx_stream_ssl_module; ошибка появилась в 1.11.3. 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. опция сокета IP_BIND_ADDRESS_NO_PORT не использовалась; ошибка появилась в 1.11.2. the IP_BIND_ADDRESS_NO_PORT socket option was not used; the bug had appeared in 1.11.2. в параметре ranges директивы geo. in the "ranges" parameter of the "geo" directive. при использовании директив "aio threads" и sendfile мог возвращаться некорректный ответ; ошибка появилась в 1.9.13. an incorrect response might be returned when using the "aio threads" and "sendfile" directives; the bug had appeared in 1.9.13. теперь accept_mutex по умолчанию выключен. now the "accept_mutex" directive is turned off by default. теперь nginx использует EPOLLEXCLUSIVE на Linux. now nginx uses EPOLLEXCLUSIVE on Linux. модуль ngx_stream_geo_module. the ngx_stream_geo_module. модуль ngx_stream_geoip_module. the ngx_stream_geoip_module. модуль ngx_stream_split_clients_module. the ngx_stream_split_clients_module. директивы proxy_pass и proxy_ssl_name в модуле stream поддерживают переменные. variables support in the "proxy_pass" and "proxy_ssl_name" directives in the stream module. утечки сокетов при использовании HTTP/2. socket leak when using HTTP/2. в configure.
Спасибо Piotr Sikora.
in configure tests.
Thanks to Piotr Sikora.
теперь nginx всегда использует внутренние реализации MD5 и SHA1; параметры configure --with-md5 и --with-sha1 упразднены. now nginx always uses internal MD5 and SHA1 implementations; the --with-md5 and --with-sha1 configure options were canceled. поддержка переменных в модуле stream. variables support in the stream module. модуль ngx_stream_map_module. the ngx_stream_map_module. модуль ngx_stream_return_module. the ngx_stream_return_module. в директивах proxy_bind, fastcgi_bind, memcached_bind, scgi_bind и uwsgi_bind теперь можно указывать порт. a port can be specified in the "proxy_bind", "fastcgi_bind", "memcached_bind", "scgi_bind", and "uwsgi_bind" directives. теперь nginx использует опцию сокета IP_BIND_ADDRESS_NO_PORT, если она доступна. now nginx uses the IP_BIND_ADDRESS_NO_PORT socket option when available. при использовании HTTP/2 и директивы proxy_request_buffering в рабочем процессе мог произойти segmentation fault. a segmentation fault might occur in a worker process when using HTTP/2 and the "proxy_request_buffering" directive. при использовании HTTP/2 к запросам, передаваемым на бэкенд, всегда добавлялась строка заголовка "Content-Length", даже если у запроса не было тела. the "Content-Length" request header line was always added to requests passed to backends, including requests without body, when using HTTP/2. при использовании HTTP/2 в логах могли появляться сообщения "http request count is zero". "http request count is zero" alerts might appear in logs when using HTTP/2. при использовании директивы sub_filter могло буферизироваться больше данных, чем это необходимо; проблема появилась в 1.9.4. unnecessary buffering might occur when using the "sub_filter" directive; the issue had appeared in 1.9.4. при записи тела специально созданного запроса во временный файл в рабочем процессе мог происходить segmentation fault (CVE-2016-4450); ошибка появилась в 1.3.9. 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. параметр transparent директив proxy_bind, fastcgi_bind, memcached_bind, scgi_bind и uwsgi_bind. the "transparent" parameter of the "proxy_bind", "fastcgi_bind", "memcached_bind", "scgi_bind", and "uwsgi_bind" directives. переменная $request_id. the $request_id variable. директива map поддерживает комбинации нескольких переменных в качестве результирующих значений. the "map" directive supports combinations of multiple variables as resulting values. теперь при использовании метода epoll nginx проверяет, поддерживает ли ядро события EPOLLRDHUP, и соответственно оптимизирует обработку соединений. now nginx checks if EPOLLRDHUP events are supported by kernel, and optimizes connection handling accordingly if the "epoll" method is used. директивы ssl_certificate и ssl_certificate_key теперь можно указывать несколько раз для загрузки сертификатов разных типов (например, RSA и ECDSA). the "ssl_certificate" and "ssl_certificate_key" directives can be specified multiple times to load certificates of different types (for example, RSA and ECDSA). при использовании OpenSSL 1.0.2 и новее с помощью директивы ssl_ecdh_curve теперь можно задать список кривых; по умолчанию используется встроенный в OpenSSL список кривых. 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. для использования DHE-шифров теперь надо явно задавать файл параметров с помощью директивы ssl_dhparam. to use DHE ciphers it is now required to specify parameters using the "ssl_dhparam" directive. переменная $proxy_protocol_port. the $proxy_protocol_port variable. переменная $realip_remote_port в модуле ngx_http_realip_module. the $realip_remote_port variable in the ngx_http_realip_module. модуль ngx_http_realip_module теперь позволяет устанавливать не только адрес, но и порт клиента. the ngx_http_realip_module is now able to set the client port in addition to the address. при попытке запросить виртуальный сервер, отличающийся от согласованного в процессе SSL handshake, теперь возвращается ответ "421 Misdirected Request"; это улучшает совместимость с некоторыми HTTP/2-клиентами в случае использования клиентских сертификатов. 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. HTTP/2-клиенты теперь могут сразу присылать тело запроса; директива http2_body_preread_size позволяет указать размер буфера, который будет использоваться до того, как nginx начнёт читать тело. 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. при использовании директивы proxy_cache_bypass не обновлялись закэшированные ошибочные ответы. cached error responses were not updated when using the "proxy_cache_bypass" directive. при использовании HHVM в качестве FastCGI-сервера могли возникать ошибки "recv() failed". "recv() failed" errors might occur when using HHVM as a FastCGI server. при использовании HTTP/2 и директив limit_req или auth_request при чтении тела запроса мог произойти таймаут или ошибка "client violated flow control"; ошибка появилась в 1.9.14. 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. при использовании HTTP/2 ответ мог не показываться некоторыми браузерами, если тело запроса было прочитано не целиком; ошибка появилась в 1.9.14. 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. при использовании директивы "aio threads" соединения могли зависать.
Спасибо Mindaugas Rasiukevicius.
connections might hang when using the "aio threads" directive.
Thanks to Mindaugas Rasiukevicius.
совместимость с OpenSSL 1.1.0. OpenSSL 1.1.0 compatibility. директивы proxy_request_buffering, fastcgi_request_buffering, scgi_request_buffering и uwsgi_request_buffering теперь работают при использовании HTTP/2. the "proxy_request_buffering", "fastcgi_request_buffering", "scgi_request_buffering", and "uwsgi_request_buffering" directives now work with HTTP/2. при использовании HTTP/2 в логах могли появляться сообщения "zero size buf in output". "zero size buf in output" alerts might appear in logs when using HTTP/2. при использовании HTTP/2 директива client_max_body_size могла работать неверно. the "client_max_body_size" directive might work incorrectly when using HTTP/2. незначительных ошибок логгирования. of minor bugs in logging. неидемпотентные запросы (POST, LOCK, PATCH) теперь по умолчанию не передаются на другой сервер, если запрос уже был отправлен на бэкенд; параметр non_idempotent директивы proxy_next_upstream явно разрешает повторять такие запросы. 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. модуль ngx_http_perl_module теперь можно собрать динамически. the ngx_http_perl_module can be built dynamically. поддержка UDP в модуле stream. UDP support in the stream module. директива aio_write. the "aio_write" directive. теперь cache manager следит за количеством элементов в кэше и старается не допускать переполнений зоны разделяемой памяти. now cache manager monitors number of elements in caches and tries to avoid cache keys zone overflows. при использовании директив sendfile и aio с подзапросами в логах могли появляться сообщения "task already active" и "second aio post". "task already active" and "second aio post" alerts might appear in logs when using the "sendfile" and "aio" directives with subrequests. при использовании кэширования в логах могли появляться сообщения "zero size buf in output", если клиент закрывал соединение преждевременно. "zero size buf in output" alerts might appear in logs if caching was used and a client closed a connection prematurely. при использовании кэширования соединения с клиентами могли закрываться без необходимости.
Спасибо Justin Li.
connections with clients might be closed needlessly if caching was used.
Thanks to Justin Li.
nginx мог нагружать процессор при использовании директивы sendfile на Linux и Solaris, если отправляемый файл был изменён в процессе отправки. nginx might hog CPU if the "sendfile" directive was used on Linux or Solaris and a file being sent was changed during sending. при использовании директив sendfile и "aio threads" соединения могли зависать. connections might hang when using the "sendfile" and "aio threads" directives. в директивах proxy_pass, fastcgi_pass, scgi_pass и uwsgi_pass при использовании переменных.
Спасибо Piotr Sikora.
in the "proxy_pass", "fastcgi_pass", "scgi_pass", and "uwsgi_pass" directives when using variables.
Thanks to Piotr Sikora.
в модуле ngx_http_sub_filter_module. in the ngx_http_sub_filter_module. если в закэшированном соединении к бэкенду происходила ошибка, запрос передавался на другой сервер без учёта директивы proxy_next_upstream. if an error occurred in a cached backend connection, the request was passed to the next server regardless of the proxy_next_upstream directive. ошибки "CreateFile() failed" при создании временных файлов на Windows. "CreateFile() failed" errors when creating temporary files on Windows.
кодирование Хаффмана заголовков ответов в HTTP/2.
Спасибо Владу Краснову.
Huffman encoding of response headers in HTTP/2.
Thanks to Vlad Krasnov.
директива worker_cpu_affinity теперь поддерживает более 64 процессоров. the "worker_cpu_affinity" directive now supports more than 64 CPUs. совместимость со сторонними модулями на C++; ошибка появилась в 1.9.11.
Спасибо Piotr Sikora.
compatibility with 3rd party C++ modules; the bug had appeared in 1.9.11.
Thanks to Piotr Sikora.
nginx не собирался статически с OpenSSL на Linux; ошибка появилась в 1.9.11. nginx could not be built statically with OpenSSL on Linux; the bug had appeared in 1.9.11. директива "add_header ... always" с пустым значением не удаляла из заголовков ошибочных ответов строки Last-Modified и ETag. the "add_header ... always" directive with an empty value did not delete "Last-Modified" and "ETag" header lines from error responses. при использовании OpenSSL 1.0.2f в логах могли появляться сообщения "called a function you should not call" и "shutdown while in init". "called a function you should not call" and "shutdown while in init" messages might appear in logs when using OpenSSL 1.0.2f. ошибочные заголовки могли логгироваться некорректно. invalid headers might be logged incorrectly. утечки сокетов при использовании HTTP/2. socket leak when using HTTP/2. в модуле ngx_http_v2_module. in the ngx_http_v2_module.
теперь resolver поддерживает TCP. TCP support in resolver. динамические модули. dynamic modules. при использовании HTTP/2 переменная $request_length не учитывала размер заголовков запроса. the $request_length variable did not include size of request headers when using HTTP/2. в модуле ngx_http_v2_module. in the ngx_http_v2_module. при использовании директивы resolver во время обработки ответов DNS-сервера могло происходить разыменование некорректного адреса, что позволяло атакующему, имеющему возможность подделывать UDP-пакеты от DNS-сервера, вызвать segmentation fault в рабочем процессе (CVE-2016-0742). 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). при использовании директивы resolver во время обработки CNAME-записей могло произойти обращение к ранее освобождённой памяти, что позволяло атакующему, имеющему возможность инициировать преобразование произвольных имён в адреса, вызвать segmentation fault в рабочем процессе, а также потенциально могло иметь другие последствия (CVE-2016-0746). 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). при использовании директивы resolver во время обработки CNAME-записей не во всех случаях проверялось ограничение на максимальное количество записей в цепочке, что позволяло атакующему, имеющему возможность инициировать преобразование произвольных имён в адреса, вызвать чрезмерное потребление ресурсов рабочими процессами (CVE-2016-0747). 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). параметр auto директивы worker_cpu_affinity. the "auto" parameter of the "worker_cpu_affinity" directive. параметр proxy_protocol директивы listen не работал с IPv6 listen-сокетами. the "proxy_protocol" parameter of the "listen" directive did not work with IPv6 listen sockets. при использовании директивы keepalive соединения к бэкендам могли кэшироваться некорректно. connections to upstream servers might be cached incorrectly when using the "keepalive" directive. после перенаправления запроса с помощью X-Accel-Redirect при проксировании использовался HTTP-метод оригинального запроса. proxying used the HTTP method of the original request after an "X-Accel-Redirect" redirection. проксирование в unix domain сокеты не работало при использовании переменных; ошибка появилась в 1.9.8. proxying to unix domain sockets did not work when using variables; the bug had appeared in 1.9.8. поддержка pwritev(). pwritev() support. директива include в блоке upstream. the "include" directive inside the "upstream" block. модуль ngx_http_slice_module. the ngx_http_slice_module. при использовании LibreSSL в рабочем процессе мог произойти segmentation fault; ошибка появилась в 1.9.6. a segmentation fault might occur in a worker process when using LibreSSL; the bug had appeared in 1.9.6. nginx мог не собираться на OS X. nginx could not be built on OS X in some cases. параметр nohostname логгирования в syslog. the "nohostname" parameter of logging to syslog. директива proxy_cache_convert_head. the "proxy_cache_convert_head" directive. переменная $realip_remote_addr в модуле ngx_http_realip_module. the $realip_remote_addr variable in the ngx_http_realip_module. директива expires могла не срабатывать при использовании переменных. the "expires" directive might not work when using variables. при использовании HTTP/2 в рабочем процессе мог произойти segmentation fault; ошибка появилась в 1.9.6. a segmentation fault might occur in a worker process when using HTTP/2; the bug had appeared in 1.9.6. если nginx был собран с модулем ngx_http_v2_module, протокол HTTP/2 мог быть использован клиентом, даже если не был указан параметр http2 директивы listen. 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. в модуле ngx_http_v2_module. in the ngx_http_v2_module. при использовании HTTP/2 в рабочем процессе мог произойти segmentation fault.
Спасибо Piotr Sikora и Denis Andzakovic.
a segmentation fault might occur in a worker process when using HTTP/2.
Thanks to Piotr Sikora and Denis Andzakovic.
при использовании HTTP/2 переменная $server_protocol была пустой. the $server_protocol variable was empty when using HTTP/2. SSL-соединения к бэкендам в модуле stream могли неожиданно завершаться по таймауту. backend SSL connections in the stream module might be timed out unexpectedly. при использовании различных настроек ssl_session_cache в разных виртуальных серверах в рабочем процессе мог произойти segmentation fault. a segmentation fault might occur in a worker process if different ssl_session_cache settings were used in different virtual servers. nginx/Windows не собирался с MinGW gcc; ошибка появилась в 1.9.4.
Спасибо Kouhei Sutou.
nginx/Windows could not be built with MinGW gcc; the bug had appeared in 1.9.4.
Thanks to Kouhei Sutou.
при использовании директивы timer_resolution на Windows время не обновлялось. time was not updated when the timer_resolution directive was used on Windows. Незначительные исправления и улучшения.
Спасибо Markus Linnala, Kurtis Nusbaum и Piotr Sikora.
Miscellaneous minor fixes and improvements.
Thanks to Markus Linnala, Kurtis Nusbaum and Piotr Sikora.
модуль ngx_http_v2_module (заменяет модуль ngx_http_spdy_module).
Спасибо Dropbox и Automattic за спонсирование разработки.
the ngx_http_v2_module (replaces ngx_http_spdy_module).
Thanks to Dropbox and Automattic for sponsoring this work.
теперь по умолчанию директива output_buffers использует два буфера. now the "output_buffers" directive uses two buffers by default. теперь nginx ограничивает максимальную вложенность подзапросов, а не количество одновременных подзапросов. now nginx limits subrequests recursion, not simultaneous subrequests. теперь при возврате ответов из кэша nginx проверяет ключ полностью.
Спасибо Геннадию Махомеду и Сергею Брестеру.
now nginx checks the whole cache key when returning a response from cache.
Thanks to Gena Makhomed and Sergey Brester.
при использовании кэша в логах могли появляться сообщения "header already sent"; ошибка появилась в 1.7.5. "header already sent" alerts might appear in logs when using cache; the bug had appeared in 1.7.5. при использовании CephFS и директивы timer_resolution на Linux в логах могли появляться сообщения "writev() failed (4: Interrupted system call)". "writev() failed (4: Interrupted system call)" errors might appear in logs when using CephFS and the "timer_resolution" directive on Linux. в обработке ошибок конфигурации.
Спасибо Markus Linnala.
in invalid configurations handling.
Thanks to Markus Linnala.
при использовании директивы sub_filter на уровне http в рабочем процессе происходил segmentation fault; ошибка появилась в 1.9.4. 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.
директивы proxy_downstream_buffer и proxy_upstream_buffer в модуле stream заменены директивой proxy_buffer_size. the "proxy_downstream_buffer" and "proxy_upstream_buffer" directives of the stream module are replaced with the "proxy_buffer_size" directive. директива tcp_nodelay в модуле stream. the "tcp_nodelay" directive in the stream module. теперь можно указать несколько директив sub_filter одновременно. multiple "sub_filter" directives can be used simultaneously. директива sub_filter поддерживает переменные в строке поиска. variables support in the search string of the "sub_filter" directive. тестирование конфигурации могло не работать под Linux OpenVZ.
Спасибо Геннадию Махомеду.
configuration testing might fail under Linux OpenVZ.
Thanks to Gena Makhomed.
после переконфигурации старые рабочие процессы могли сильно нагружать процессор при больших значениях worker_connections. old worker processes might hog CPU after reconfiguration with a large number of worker_connections. при совместном использовании директив try_files и alias внутри location'а, заданного регулярным выражением, в рабочем процессе мог произойти segmentation fault; ошибка появилась в 1.7.1. 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. директива try_files внутри вложенного location'а, заданного регулярным выражением, работала неправильно, если во внешнем location'е использовалась директива alias. 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. в обработке ошибок при построении хэш-таблиц. in hash table initialization error handling. nginx не собирался с Visual Studio 2015. nginx could not be built with Visual Studio 2015.
дублирующиеся блоки http, mail и stream теперь запрещены. duplicate "http", "mail", and "stream" blocks are now disallowed. ограничение количества соединений в модуле stream. connection limiting in the stream module. ограничение скорости в модуле stream. data rate limiting in the stream module. директива zone в блоке upstream не работала на Windows. the "zone" directive inside the "upstream" block did not work on Windows. совместимость с LibreSSL в модуле stream.
Спасибо Piotr Sikora.
compatibility with LibreSSL in the stream module.
Thanks to Piotr Sikora.
в параметре --builddir в configure.
Спасибо Piotr Sikora.
in the "--builddir" configure parameter.
Thanks to Piotr Sikora.
директива ssl_stapling_file не работала; ошибка появилась в 1.9.2.
Спасибо Faidon Liambotis и Brandon Black.
the "ssl_stapling_file" directive did not work; the bug had appeared in 1.9.2.
Thanks to Faidon Liambotis and Brandon Black.
при использовании директивы ssl_stapling в рабочем процессе мог произойти segmentation fault; ошибка появилась в 1.9.2.
Спасибо Matthew Baldwin.
a segmentation fault might occur in a worker process if the "ssl_stapling" directive was used; the bug had appeared in 1.9.2.
Thanks to Matthew Baldwin.
параметр backlog директивы listen в почтовом прокси-сервере и модуле stream. the "backlog" parameter of the "listen" directives of the mail proxy and stream modules. директивы allow и deny в модуле stream. the "allow" and "deny" directives in the stream module. директива proxy_bind в модуле stream. the "proxy_bind" directive in the stream module. директива proxy_protocol в модуле stream. the "proxy_protocol" directive in the stream module. ключ -T. the -T switch. параметр REQUEST_SCHEME добавлен в стандартные конфигурационные файлы fastcgi.conf, fastcgi_params, scgi_params и uwsgi_params. the REQUEST_SCHEME parameter added to the fastcgi.conf, fastcgi_params, scgi_params, and uwsgi_params standard configuration files. параметр reuseport директивы listen в модуле stream не работал. the "reuseport" parameter of the "listen" directive of the stream module did not work. OCSP stapling в некоторых случаях мог вернуть устаревший OCSP-ответ. OCSP stapling might return an expired OCSP response in some cases. теперь протокол SSLv3 по умолчанию запрещён. now SSLv3 protocol is disabled by default. некоторые давно устаревшие директивы больше не поддерживаются. some long deprecated directives are not supported anymore. параметр reuseport директивы listen.
Спасибо Yingqi Lu из Intel и Sepherosa Ziehau.
the "reuseport" parameter of the "listen" directive.
Thanks to Yingqi Lu at Intel and Sepherosa Ziehau.
переменная $upstream_connect_time. the $upstream_connect_time variable. в директиве hash на big-endian платформах. in the "hash" directive on big-endian platforms. nginx мог не запускаться на некоторых старых версиях Linux; ошибка появилась в 1.7.11. nginx might fail to start on some old Linux variants; the bug had appeared in 1.7.11. в парсинге IP-адресов.
Спасибо Сергею Половко.
in IP address parsing.
Thanks to Sergey Polovko.
устаревшие методы обработки соединений aio и rtsig больше не поддерживаются. obsolete aio and rtsig event methods have been removed. директива zone в блоке upstream. the "zone" directive inside the "upstream" block. модуль stream. the stream module. поддержка byte ranges для ответов модуля ngx_http_memcached_module.
Спасибо Martin Mlynář.
byte ranges support in the ngx_http_memcached_module.
Thanks to Martin Mlynář.
разделяемую память теперь можно использовать на версиях Windows с рандомизацией адресного пространства.
Спасибо Сергею Брестеру.
shared memory can now be used on Windows versions with address space layout randomization.
Thanks to Sergey Brester.
директиву error_log теперь можно использовать на уровнях mail и server в почтовом прокси-сервере. the "error_log" directive can now be used on mail and server levels in mail proxy. параметр proxy_protocol директивы listen не работал, если не был указан в первой директиве listen для данного listen-сокета. the "proxy_protocol" parameter of the "listen" directive did not work if not specified in the first "listen" directive for a listen socket.
теперь директива tcp_nodelay работает для SSL-соединений с бэкендами. now the "tcp_nodelay" directive works with backend SSL connections. теперь потоки могут использоваться для чтения заголовков файлов в кэше. now thread pools can be used to read cache file headers. в директиве proxy_request_buffering. in the "proxy_request_buffering" directive. при использовании потоков на Linux в рабочем процессе мог произойти segmentation fault. a segmentation fault might occur in a worker process when using thread pools on Linux. в обработке ошибок при использовании директивы ssl_stapling.
Спасибо Filipe da Silva.
in error handling when using the "ssl_stapling" directive.
Thanks to Filipe da Silva.
в модуле ngx_http_spdy_module. in the ngx_http_spdy_module.
параметр sendfile директивы aio более не нужен; теперь nginx автоматически использует AIO для подгрузки данных для sendfile, если одновременно используются директивы aio и sendfile. 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. экспериментальная поддержка потоков. experimental thread pools support. директивы proxy_request_buffering, fastcgi_request_buffering, scgi_request_buffering и uwsgi_request_buffering. the "proxy_request_buffering", "fastcgi_request_buffering", "scgi_request_buffering", and "uwsgi_request_buffering" directives. экспериментальное API для обработки тела запроса. request body filters experimental API. проверка клиентских SSL-сертификатов в почтовом прокси-сервере.
Спасибо Sven Peter, Franck Levionnois и Filipe Da Silva.
client SSL certificates support in mail proxy.
Thanks to Sven Peter, Franck Levionnois, and Filipe Da Silva.
уменьшение времени запуска при использовании директивы "hash ... consistent" в блоке upstream.
Спасибо Wai Keen Woon.
startup speedup when using the "hash ... consistent" directive in the upstream block.
Thanks to Wai Keen Woon.
отладочное логгирование в кольцевой буфер в памяти. debug logging into a cyclic memory buffer. в обработке хэш-таблиц.
Спасибо Chris West.
in hash table handling.
Thanks to Chris West.
в директиве proxy_cache_revalidate. in the "proxy_cache_revalidate" directive. SSL-соединения могли зависать, если использовался отложенный accept или параметр proxy_protocol директивы listen.
Спасибо James Hamlin.
SSL connections might hang if deferred accept or the "proxy_protocol" parameter of the "listen" directive were used.
Thanks to James Hamlin.
переменная $upstream_response_time могла содержать неверное значение при использовании директивы image_filter. the $upstream_response_time variable might contain a wrong value if the "image_filter" directive was used. в обработке целочисленных переполнений.
Спасибо Régis Leroy.
in integer overflow handling.
Thanks to Régis Leroy.
при использовании LibreSSL было невозможно включить поддержку SSLv3. it was not possible to enable SSLv3 with LibreSSL. при использовании LibreSSL в логах появлялись сообщения "ignoring stale global SSL error ... called a function you should not call". the "ignoring stale global SSL error ... called a function you should not call" alerts appeared in logs when using LibreSSL. сертификаты, указанные в директивах ssl_client_certificate и ssl_trusted_certificate, использовались для автоматического построения цепочек сертификатов. certificates specified by the "ssl_client_certificate" and "ssl_trusted_certificate" directives were inadvertently used to automatically construct certificate chains.
параметр use_temp_path директив proxy_cache_path, fastcgi_cache_path, scgi_cache_path и uwsgi_cache_path. the "use_temp_path" parameter of the "proxy_cache_path", "fastcgi_cache_path", "scgi_cache_path", and "uwsgi_cache_path" directives. переменная $upstream_header_time. the $upstream_header_time variable. теперь при переполнении диска nginx пытается писать error_log'и только раз в секунду. now on disk overflow nginx tries to write error logs once a second only. директива try_files при тестировании каталогов не игнорировала обычные файлы.
Спасибо Damien Tournoud.
the "try_files" directive did not ignore normal files while testing directories.
Thanks to Damien Tournoud.
при использовании директивы sendfile на OS X возникали ошибки "sendfile() failed"; ошибка появилась в nginx 1.7.8. alerts "sendfile() failed" if the "sendfile" directive was used on OS X; the bug had appeared in 1.7.8. в лог могли писаться сообщения "sem_post() failed". alerts "sem_post() failed" might appear in logs. nginx не собирался с musl libc.
Спасибо James Taylor.
nginx could not be built with musl libc.
Thanks to James Taylor.
nginx не собирался на Tru64 UNIX.
Спасибо Goetz T. Fischer.
nginx could not be built on Tru64 UNIX.
Thanks to Goetz T. Fischer.
директивы proxy_cache, fastcgi_cache, scgi_cache и uwsgi_cache поддерживают переменные. variables support in the "proxy_cache", "fastcgi_cache", "scgi_cache", and "uwsgi_cache" directives. директива expires поддерживает переменные. variables support in the "expires" directive. возможность загрузки секретных ключей с аппаратных устройств с помощью OpenSSL engines.
Спасибо Дмитрию Пичулину.
loading of secret keys from hardware tokens with OpenSSL engines.
Thanks to Dmitrii Pichulin.
директива autoindex_format. the "autoindex_format" directive. ревалидация элементов кэша теперь используется только для ответов с кодами 200 и 206.
Спасибо Piotr Sikora.
cache revalidation is now only used for responses with 200 and 206 status codes.
Thanks to Piotr Sikora.
строка "TE" заголовка запроса клиента передавалась на бэкенд при проксировании. the "TE" client request header line was passed to backends while proxying. директивы proxy_pass, fastcgi_pass, scgi_pass и uwsgi_pass могли неправильно работать внутри блоков if и limit_except. the "proxy_pass", "fastcgi_pass", "scgi_pass", and "uwsgi_pass" directives might not work correctly inside the "if" and "limit_except" blocks. директива proxy_store с параметром "on" игнорировалась, если на предыдущем уровне использовалась директива proxy_store с явно заданным путём к файлам. 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. nginx не собирался с BoringSSL.
Спасибо Lukas Tribus.
nginx could not be built with BoringSSL.
Thanks to Lukas Tribus.
теперь строки "If-Modified-Since", "If-Range" и им подобные в заголовке запроса клиента передаются бэкенду при включённом кэшировании, если nginx заранее знает, что не будет кэшировать ответ (например, при использовании proxy_cache_min_uses). 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). теперь после истечения proxy_cache_lock_timeout nginx отправляет запрос на бэкенд без кэширования; новые директивы proxy_cache_lock_age, fastcgi_cache_lock_age, scgi_cache_lock_age и uwsgi_cache_lock_age позволяют указать, через какое время блокировка будет принудительно снята и будет сделана ещё одна попытка закэшировать ответ. 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. директива log_format теперь может использоваться только на уровне http. the "log_format" directive can now be used only at http level. директивы proxy_ssl_certificate, proxy_ssl_certificate_key, proxy_ssl_password_file, uwsgi_ssl_certificate, uwsgi_ssl_certificate_key и uwsgi_ssl_password_file.
Спасибо Piotr Sikora.
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.
Thanks to Piotr Sikora.
теперь с помощью X-Accel-Redirect можно перейти в именованный location.
Спасибо Toshikuni Fukaya.
it is now possible to switch to a named location using "X-Accel-Redirect".
Thanks to Toshikuni Fukaya.
теперь директива tcp_nodelay работает для SPDY-соединений. now the "tcp_nodelay" directive works with SPDY connections. новые директивы в скриптах подсветки синтаксиса для vim.
Спасибо Peter Wu.
new directives in vim syntax highliting scripts.
Thanks to Peter Wu.
nginx игнорировал значение "s-maxage" в строке "Cache-Control" в заголовке ответа бэкенда.
Спасибо Piotr Sikora.
nginx ignored the "s-maxage" value in the "Cache-Control" backend response header line.
Thanks to Piotr Sikora.
в модуле ngx_http_spdy_module.
Спасибо Piotr Sikora.
in the ngx_http_spdy_module.
Thanks to Piotr Sikora.
в директиве ssl_password_file при использовании OpenSSL 0.9.8zc, 1.0.0o, 1.0.1j. in the "ssl_password_file" directive when using OpenSSL 0.9.8zc, 1.0.0o, 1.0.1j. при использовании директивы post_action в лог писались сообщения "header already sent"; ошибка появилась в nginx 1.5.4. alerts "header already sent" appeared in logs if the "post_action" directive was used; the bug had appeared in 1.5.4. при использовании директивы "postpone_output 0" с SSI-подзапросами в лог могли писаться сообщения "the http output chain is empty". alerts "the http output chain is empty" might appear in logs if the "postpone_output 0" directive was used with SSI includes. в директиве proxy_cache_lock при использовании SSI-подзапросов.
Спасибо Yichun Zhang.
in the "proxy_cache_lock" directive with SSI subrequests.
Thanks to Yichun Zhang.
теперь nginx учитывает при кэшировании строку "Vary" в заголовке ответа бэкенда. now nginx takes into account the "Vary" header line in a backend response while caching. директивы proxy_force_ranges, fastcgi_force_ranges, scgi_force_ranges и uwsgi_force_ranges. the "proxy_force_ranges", "fastcgi_force_ranges", "scgi_force_ranges", and "uwsgi_force_ranges" directives. директивы proxy_limit_rate, fastcgi_limit_rate, scgi_limit_rate и uwsgi_limit_rate. the "proxy_limit_rate", "fastcgi_limit_rate", "scgi_limit_rate", and "uwsgi_limit_rate" directives. параметр Vary директив proxy_ignore_headers, fastcgi_ignore_headers, scgi_ignore_headers и uwsgi_ignore_headers. the "Vary" parameter of the "proxy_ignore_headers", "fastcgi_ignore_headers", "scgi_ignore_headers", and "uwsgi_ignore_headers" directives. последняя часть ответа, полученного от бэкенда при небуферизированном проксировании, могла не отправляться клиенту, если использовались директивы gzip или gunzip. 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. в директиве proxy_cache_revalidate.
Спасибо Piotr Sikora.
in the "proxy_cache_revalidate" directive.
Thanks to Piotr Sikora.
в обработке ошибок.
Спасибо Yichun Zhang и Даниилу Бондареву.
in error handling.
Thanks to Yichun Zhang and Daniil Bondarev.
в директивах proxy_next_upstream_tries и proxy_next_upstream_timeout.
Спасибо Feng Gu.
in the "proxy_next_upstream_tries" and "proxy_next_upstream_timeout" directives.
Thanks to Feng Gu.
nginx/Windows не собирался с MinGW-w64 gcc.
Спасибо Kouhei Sutou.
nginx/Windows could not be built with MinGW-w64 gcc.
Thanks to Kouhei Sutou.
устаревшая директива limit_zone больше не поддерживается. the deprecated "limit_zone" directive is not supported anymore. в директивах limit_conn_zone и limit_req_zone теперь можно использовать комбинации нескольких переменных. the "limit_conn_zone" and "limit_req_zone" directives now can be used with combinations of multiple variables. при повторной отправке FastCGI-запроса на бэкенд тело запроса могло передаваться неправильно. request body might be transmitted incorrectly when retrying a FastCGI request to the next upstream server. в логгировании в syslog. in logging to syslog. при использовании общего для нескольких блоков server разделяемого кэша SSL-сессий или общего ключа для шифрования TLS session tickets было возможно повторно использовать SSL-сессию в контексте другого блока server (CVE-2014-3616).
Спасибо Antoine Delignat-Lavaud.
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).
Thanks to Antoine Delignat-Lavaud.
директиву stub_status теперь можно указывать без параметров. now the "stub_status" directive does not require a parameter. параметр always директивы add_header. the "always" parameter of the "add_header" directive. директивы 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. 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. в параметре if директивы access_log. in the "if" parameter of the "access_log" directive. в модуле ngx_http_perl_module.
Спасибо Piotr Sikora.
in the ngx_http_perl_module.
Thanks to Piotr Sikora.
директива listen почтового прокси-сервера не позволяла указать более двух параметров. the "listen" directive of the mail proxy module did not allow to specify more than two parameters. директива sub_filter не работала с заменяемой строкой из одного символа. the "sub_filter" directive did not work with a string to replace consisting of a single character. запросы могли зависать, если использовался resolver и в процессе обращения к DNS-серверу происходил таймаут. requests might hang if resolver was used and a timeout occurred during a DNS request. в модуле ngx_http_spdy_module при использовании совместно с AIO. in the ngx_http_spdy_module when using with AIO. в рабочем процессе мог произойти segmentation fault, если с помощью директивы set изменялись переменные "$http_...", "$sent_http_..." или "$upstream_http_...". 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. в обработке ошибок выделения памяти.
Спасибо Markus Linnala и Feng Gu.
in memory allocation error handling.
Thanks to Markus Linnala and Feng Gu.
pipelined-команды не отбрасывались после команды STARTTLS в SMTP прокси-сервере (CVE-2014-3556); ошибка появилась в 1.5.6.
Спасибо Chris Boulton.
pipelined commands were not discarded after STARTTLS command in SMTP proxy (CVE-2014-3556); the bug had appeared in 1.5.6.
Thanks to Chris Boulton.
экранирование символов в URI теперь использует шестнадцатеричные цифры в верхнем регистре.
Спасибо Piotr Sikora.
URI escaping now uses uppercase hexadecimal digits.
Thanks to Piotr Sikora.
теперь nginx можно собрать с BoringSSL и LibreSSL.
Спасибо Piotr Sikora.
now nginx can be build with BoringSSL and LibreSSL.
Thanks to Piotr Sikora.
запросы могли зависать, если использовался resolver и DNS-сервер возвращал некорректный ответ; ошибка появилась в 1.5.8. requests might hang if resolver was used and a DNS server returned a malformed response; the bug had appeared in 1.5.8. в модуле ngx_http_spdy_module.
Спасибо Piotr Sikora.
in the ngx_http_spdy_module.
Thanks to Piotr Sikora.
переменная $uri могла содержать мусор при возврате ошибок с кодом 400.
Спасибо Сергею Боброву.
the $uri variable might contain garbage when returning errors with code 400.
Thanks to Sergey Bobrov.
в обработке ошибок в директиве proxy_store и в модуле ngx_http_dav_module.
Спасибо Feng Gu.
in error handling in the "proxy_store" directive and the ngx_http_dav_module.
Thanks to Feng Gu.
при логгировании ошибок в syslog мог происходить segmentation fault; ошибка появилась в 1.7.1. a segmentation fault might occur if logging of errors to syslog was used; the bug had appeared in 1.7.1. переменные $geoip_latitude, $geoip_longitude, $geoip_dma_code и $geoip_area_code могли не работать.
Спасибо Yichun Zhang.
the $geoip_latitude, $geoip_longitude, $geoip_dma_code, and $geoip_area_code variables might not work.
Thanks to Yichun Zhang.
в обработке ошибок выделения памяти.
Спасибо Tatsuhiko Kubo и Piotr Sikora.
in memory allocation error handling.
Thanks to Tatsuhiko Kubo and Piotr Sikora.
weak entity tags теперь не удаляются при изменениях ответа, а strong entity tags преобразуются в weak. weak entity tags are now preserved on response modifications, and strong ones are changed to weak. ревалидация элементов кэша теперь, если это возможно, использует заголовок If-None-Match. cache revalidation now uses If-None-Match header if possible. директива ssl_password_file. the "ssl_password_file" directive. при возврате ответа из кэша заголовок запроса If-None-Match игнорировался, если в ответе не было заголовка Last-Modified. the If-None-Match request header line was ignored if there was no Last-Modified header in a response returned from cache. сообщения "peer closed connection in SSL handshake" при соединении с бэкендами логгировались на уровне info вместо error. "peer closed connection in SSL handshake" messages were logged at "info" level instead of "error" while connecting to backends. в модуле ngx_http_dav_module в nginx/Windows. in the ngx_http_dav_module module in nginx/Windows. SPDY-соединения могли неожиданно закрываться, если использовалось кэширование. SPDY connections might be closed prematurely if caching was used. директива hash в блоке upstream. the "hash" directive inside the "upstream" block. дефрагментация свободных блоков разделяемой памяти.
Спасибо Wandenberg Peixoto и Yichun Zhang.
defragmentation of free shared memory blocks.
Thanks to Wandenberg Peixoto and Yichun Zhang.
в рабочем процессе мог произойти segmentation fault, если использовалось значение access_log по умолчанию; ошибка появилась в 1.7.0.
Спасибо Piotr Sikora.
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.
Thanks to Piotr Sikora.
завершающий слэш ошибочно удалялся из последнего параметра директивы try_files. trailing slash was mistakenly removed from the last parameter of the "try_files" directive. nginx мог не собираться на OS X. nginx could not be built on OS X in some cases. в модуле ngx_http_spdy_module. in the ngx_http_spdy_module.
переменные "$upstream_cookie_...". the "$upstream_cookie_..." variables. переменная $ssl_client_fingerprint. the $ssl_client_fingerprint variable. директивы error_log и access_log теперь поддерживают логгирование в syslog. the "error_log" and "access_log" directives now support logging to syslog. почтовый прокси-сервер теперь логгирует порт клиента при соединении. the mail proxy now logs client port on connect. утечки памяти при использовании директивы "ssl_stapling".
Спасибо Filipe da Silva.
memory leak if the "ssl_stapling" directive was used.
Thanks to Filipe da Silva.
директива alias внутри location'а, заданного регулярным выражением, работала неправильно, если использовались директивы if или limit_except. the "alias" directive used inside a location given by a regular expression worked incorrectly if the "if" or "limit_except" directives were used. директива charset не ставила кодировку для сжатых ответов бэкендов. the "charset" directive did not set a charset to encoded backend responses. директива proxy_pass без URI могла использовать оригинальный запрос после установки переменной $args.
Спасибо Yichun Zhang.
a "proxy_pass" directive without URI part might use original request after the $args variable was set.
Thanks to Yichun Zhang.
в работе параметра none директивы smtp_auth; ошибка появилась в 1.5.6.
Спасибо Святославу Никольскому.
in the "none" parameter in the "smtp_auth" directive; the bug had appeared in 1.5.6.
Thanks to Svyatoslav Nikolsky.
при совместном использовании sub_filter и SSI ответы могли передаваться неверно. if sub_filter and SSI were used together, then responses might be transferred incorrectly. nginx не собирался с параметром --with-file-aio на Linux/aarch64. nginx could not be built with the --with-file-aio option on Linux/aarch64.
проверка SSL-сертификатов бэкендов. backend SSL certificate verification. поддержка SNI при работе с бэкендами по SSL. support for SNI while working with SSL backends. переменная $ssl_server_name. the $ssl_server_name variable. параметр if директивы access_log. the "if" parameter of the "access_log" directive. улучшена обработка хэш-таблиц; в директивах variables_hash_max_size и types_hash_bucket_size значения по умолчанию изменены на 1024 и 64 соответственно. 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. модуль ngx_http_mp4_module теперь понимает аргумент end. the ngx_http_mp4_module now supports the "end" argument. поддержка byte ranges модулем ngx_http_mp4_module и при сохранении ответов в кэш. byte ranges support in the ngx_http_mp4_module and while saving responses to cache. теперь nginx не пишет в лог сообщения "ngx_slab_alloc() failed: no memory" при использовании разделяемой памяти в ssl_session_cache и в модуле ngx_http_limit_req_module. 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. директива underscores_in_headers не разрешала подчёркивание в первом символе заголовка.
Спасибо Piotr Sikora.
the "underscores_in_headers" directive did not allow underscore as a first character of a header.
Thanks to Piotr Sikora.
cache manager мог нагружать процессор при выходе в nginx/Windows. cache manager might hog CPU on exit in nginx/Windows. при использовании ssl_session_cache с параметром shared рабочий процесс nginx/Windows завершался аварийно. nginx/Windows terminated abnormally if the "ssl_session_cache" directive was used with the "shared" parameter. в модуле ngx_http_spdy_module. in the ngx_http_spdy_module.
при обработке специально созданного запроса модулем ngx_http_spdy_module могло происходить переполнение буфера в рабочем процессе, что потенциально могло приводить к выполнению произвольного кода (CVE-2014-0133).
Спасибо Lucas Molas из Programa STIC, Fundación Dr. Manuel Sadosky, Buenos Aires, Argentina.
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).
Thanks to Lucas Molas, researcher at Programa STIC, Fundación Dr. Manuel Sadosky, Buenos Aires, Argentina.
параметр proxy_protocol в директивах listen и real_ip_header, переменная $proxy_protocol_addr. the "proxy_protocol" parameters of the "listen" and "real_ip_header" directives, the $proxy_protocol_addr variable. в директиве fastcgi_next_upstream.
Спасибо Lucas Molas.
in the "fastcgi_next_upstream" directive.
Thanks to Lucas Molas.
при обработке специально созданного запроса модулем ngx_http_spdy_module на 32-битных платформах могла повреждаться память рабочего процесса, что потенциально могло приводить к выполнению произвольного кода (CVE-2014-0088); ошибка появилась в 1.5.10.
Спасибо Lucas Molas из Programa STIC, Fundación Dr. Manuel Sadosky, Buenos Aires, Argentina.
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.
Thanks to Lucas Molas, researcher at Programa STIC, Fundación Dr. Manuel Sadosky, Buenos Aires, Argentina.
переменная $ssl_session_reused. the $ssl_session_reused variable. директива client_max_body_size могла не работать при чтении тела запроса с использованием chunked transfer encoding; ошибка появилась в 1.3.9.
Спасибо Lucas Molas.
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.
Thanks to Lucas Molas.
при проксировании WebSocket-соединений в рабочем процессе мог произойти segmentation fault. a segmentation fault might occur in a worker process when proxying WebSocket connections. в рабочем процессе мог произойти segmentation fault, если использовался модуль ngx_http_spdy_module на 32-битных платформах; ошибка появилась в 1.5.10. 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. значение переменной $upstream_status могло быть неверным, если использовались директивы proxy_cache_use_stale или proxy_cache_revalidate.
Спасибо Piotr Sikora.
the $upstream_status variable might contain wrong data if the "proxy_cache_use_stale" or "proxy_cache_revalidate" directives were used.
Thanks to Piotr Sikora.
в рабочем процессе мог произойти segmentation fault, если ошибки с кодом 400 с помощью директивы error_page перенаправлялись в именованный location. 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. nginx/Windows не собирался с Visual Studio 2013. nginx/Windows could not be built with Visual Studio 2013.
модуль ngx_http_spdy_module теперь использует протокол SPDY 3.1.
Спасибо Automattic и MaxCDN за спонсирование разработки.
the ngx_http_spdy_module now uses SPDY 3.1 protocol.
Thanks to Automattic and MaxCDN for sponsoring this work.
модуль ngx_http_mp4_module теперь пропускает дорожки, имеющие меньшую длину, чем запрошенная перемотка. the ngx_http_mp4_module now skips tracks too short for a seek requested. в рабочем процессе мог произойти segmentation fault, если переменная $ssl_session_id использовалась при логгировании; ошибка появилась в 1.5.9. 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. переменные $date_local и $date_gmt использовали неверный формат вне модуля ngx_http_ssi_filter_module. the $date_local and $date_gmt variables used wrong format outside of the ngx_http_ssi_filter_module. клиентские соединения могли сразу закрываться, если использовался отложенный accept; ошибка появилась в 1.3.15. client connections might be immediately closed if deferred accept was used; the bug had appeared in 1.3.15. сообщения "getsockopt(TCP_FASTOPEN) ... failed" записывались в лог в процессе обновления исполняемого файла на Linux; ошибка появилась в 1.5.8.
Спасибо Piotr Sikora.
alerts "getsockopt(TCP_FASTOPEN) ... failed" appeared in logs during binary upgrade on Linux; the bug had appeared in 1.5.8.
Thanks to Piotr Sikora.
теперь в заголовке X-Accel-Redirect nginx ожидает закодированный URI. now nginx expects escaped URIs in "X-Accel-Redirect" headers. директива ssl_buffer_size. the "ssl_buffer_size" directive. директиву limit_rate теперь можно использовать для ограничения скорости передачи ответов клиенту в SPDY-соединениях. the "limit_rate" directive can now be used to rate limit responses sent in SPDY connections. директива spdy_chunk_size. the "spdy_chunk_size" directive. директива ssl_session_tickets.
Спасибо Dirkjan Bussink.
the "ssl_session_tickets" directive.
Thanks to Dirkjan Bussink.
переменная $ssl_session_id содержала всю сессию в сериализованном виде вместо её идентификатора.
Спасибо Ivan Ristić.
the $ssl_session_id variable contained full session serialized instead of just a session id.
Thanks to Ivan Ristić.
nginx неправильно обрабатывал закодированный символ "?" в команде SSI include. nginx incorrectly handled escaped "?" character in the "include" SSI command. модуль ngx_http_dav_module не раскодировал целевой URI при обработке методов COPY и MOVE. the ngx_http_dav_module did not unescape destination URI of the COPY and MOVE methods. resolver не понимал доменные имена с точкой в конце. Спасибо Yichun Zhang. resolver did not understand domain names with a trailing dot. Thanks to Yichun Zhang. при проксировании в логах могли появляться сообщения "zero size buf in output"; ошибка появилась в 1.3.9. alerts "zero size buf in output" might appear in logs while proxying; the bug had appeared in 1.3.9. в рабочем процессе мог произойти segmentation fault, если использовался модуль ngx_http_spdy_module. a segmentation fault might occur in a worker process if the ngx_http_spdy_module was used. при использовании методов обработки соединений select, poll и /dev/poll проксируемые WebSocket-соединения могли зависать сразу после открытия. proxied WebSocket connections might hang right after handshake if the select, poll, or /dev/poll methods were used. директива xclient почтового прокси-сервера некорректно передавала IPv6-адреса. the "xclient" directive of the mail proxy module incorrectly handled IPv6 client addresses.
теперь resolver поддерживает IPv6. IPv6 support in resolver. директива listen поддерживает параметр fastopen.
Спасибо Mathew Rodley.
the "listen" directive supports the "fastopen" parameter.
Thanks to Mathew Rodley.
поддержка SSL в модуле ngx_http_uwsgi_module.
Спасибо Roberto De Ioris.
SSL support in the ngx_http_uwsgi_module.
Thanks to Roberto De Ioris.
скрипты подсветки синтаксиса для vim добавлены в contrib.
Спасибо Evan Miller.
vim syntax highlighting scripts were added to contrib.
Thanks to Evan Miller.
при чтении тела запроса с использованием chunked transfer encoding по SSL-соединению мог произойти таймаут. a timeout might occur while reading client request body in an SSL connection using chunked transfer encoding. директива master_process работала неправильно в nginx/Windows. the "master_process" directive did not work correctly in nginx/Windows. параметр setfib директивы listen мог не работать. the "setfib" parameter of the "listen" directive might not work. в модуле ngx_http_spdy_module. in the ngx_http_spdy_module.
символ, следующий за незакодированным пробелом в строке запроса, обрабатывался неправильно (CVE-2013-4547); ошибка появилась в 0.8.41.
Спасибо Ivan Fratric из Google Security Team.
a character following an unescaped space in a request line was handled incorrectly (CVE-2013-4547); the bug had appeared in 0.8.41.
Thanks to Ivan Fratric of the Google Security Team.
уровень логгирования ошибок auth_basic об отсутствии пароля понижен с уровня error до info. a logging level of auth_basic errors about no user/password provided has been lowered from "error" to "info". директивы proxy_cache_revalidate, fastcgi_cache_revalidate, scgi_cache_revalidate и uwsgi_cache_revalidate. the "proxy_cache_revalidate", "fastcgi_cache_revalidate", "scgi_cache_revalidate", and "uwsgi_cache_revalidate" directives. директива ssl_session_ticket_key.
Спасибо Piotr Sikora.
the "ssl_session_ticket_key" directive.
Thanks to Piotr Sikora.
директива "add_header Cache-Control ''" добавляла строку заголовка ответа "Cache-Control" с пустым значением. the directive "add_header Cache-Control ''" added a "Cache-Control" response header line with an empty value. директива "satisfy any" могла вернуть ошибку 403 вместо 401 при использовании директив auth_request и auth_basic.
Спасибо Jan Marc Hoffmann.
the "satisfy any" directive might return 403 error instead of 401 if auth_request and auth_basic directives were used.
Thanks to Jan Marc Hoffmann.
параметры accept_filter и deferred директивы listen игнорировались для listen-сокетов, создаваемых в процессе обновления исполняемого файла.
Спасибо Piotr Sikora.
the "accept_filter" and "deferred" parameters of the "listen" directive were ignored for listen sockets created during binary upgrade.
Thanks to Piotr Sikora.
часть данных, полученных от бэкенда при небуферизированном проксировании, могла не отправляться клиенту сразу, если использовались директивы gzip или gunzip.
Спасибо Yichun Zhang.
some data received from a backend with unbufferred proxy might not be sent to a client immediately if "gzip" or "gunzip" directives were used.
Thanks to Yichun Zhang.
в обработке ошибок в модуле ngx_http_gunzip_filter_module. in error handling in ngx_http_gunzip_filter_module. ответы могли зависать, если использовался модуль ngx_http_spdy_module и директива auth_request. responses might hang if the ngx_http_spdy_module was used with the "auth_request" directive. утечки памяти в nginx/Windows. memory leak in nginx/Windows.
директива fastcgi_buffering. the "fastcgi_buffering" directive. директивы proxy_ssl_protocols и proxy_ssl_ciphers.
Спасибо Piotr Sikora.
the "proxy_ssl_protocols" and "proxy_ssl_ciphers" directives.
Thanks to Piotr Sikora.
оптимизация SSL handshake при использовании длинных цепочек сертификатов. optimization of SSL handshakes when using long certificate chains. почтовый прокси-сервер поддерживает SMTP pipelining. the mail proxy supports SMTP pipelining. в модуле ngx_http_auth_basic_module при использовании метода шифрования паролей "$apr1$".
Спасибо Markus Linnala.
in the ngx_http_auth_basic_module when using "$apr1$" password encryption method.
Thanks to Markus Linnala.
на MacOSX, Cygwin и nginx/Windows для обработки запроса мог использоваться неверный location, если для задания location'ов использовались символы разных регистров. in MacOSX, Cygwin, and nginx/Windows incorrect location might be used to process a request if locations were given using characters in different cases. автоматическое перенаправление с добавлением завершающего слэша для проксированных location'ов могло не работать. automatic redirect with appended trailing slash for proxied locations might not work. в почтовом прокси-сервере. in the mail proxy server. в модуле ngx_http_spdy_module. in the ngx_http_spdy_module.
теперь nginx по умолчанию использует HTTP/1.0, если точно определить протокол не удалось. now nginx assumes HTTP/1.0 by default if it is not able to detect protocol reliably. директива disable_symlinks теперь использует O_PATH на Linux. the "disable_symlinks" directive now uses O_PATH on Linux. для определения того, что клиент закрыл соединение, при использовании метода epoll теперь используются события EPOLLRDHUP. now nginx uses EPOLLRDHUP events to detect premature connection close by clients if the "epoll" method is used. в директиве valid_referers при использовании параметра server_names. in the "valid_referers" directive if the "server_names" parameter was used. переменная $request_time не работала в nginx/Windows. the $request_time variable did not work in nginx/Windows. в директиве image_filter.
Спасибо Lanshun Zhou.
in the "image_filter" directive.
Thanks to Lanshun Zhou.
совместимость с OpenSSL 1.0.1f.
Спасибо Piotr Sikora.
OpenSSL 1.0.1f compatibility.
Thanks to Piotr Sikora.
MIME-тип для расширения js изменён на "application/javascript"; значение по умолчанию директивы charset_types изменено соответственно. the "js" extension MIME type has been changed to "application/javascript"; default value of the "charset_types" directive was changed accordingly. теперь директива image_filter с параметром size возвращает ответ с MIME-типом "application/json". now the "image_filter" directive with the "size" parameter returns responses with the "application/json" MIME type. модуль ngx_http_auth_request_module. the ngx_http_auth_request_module. на старте или во время переконфигурации мог произойти segmentation fault, если использовалась директива try_files с пустым параметром. a segmentation fault might occur on start or during reconfiguration if the "try_files" directive was used with an empty parameter. утечки памяти при использовании в директивах root и auth_basic_user_file относительных путей, заданных с помощью переменных. memory leak if relative paths were specified using variables in the "root" or "auth_basic_user_file" directives. директива valid_referers неправильно выполняла регулярные выражения, если заголовок Referer начинался с "https://".
Спасибо Liangbin Li.
the "valid_referers" directive incorrectly executed regular expressions if a "Referer" header started with "https://".
Thanks to Liangbin Li.
ответы могли зависать, если использовались подзапросы и при обработке подзапроса происходила ошибка во время SSL handshake с бэкендом.
Спасибо Aviram Cohen.
responses might hang if subrequests were used and an SSL handshake error happened during subrequest processing.
Thanks to Aviram Cohen.
в модуле ngx_http_autoindex_module. in the ngx_http_autoindex_module. в модуле ngx_http_spdy_module. in the ngx_http_spdy_module.
Изменение во внутреннем API: теперь при небуферизированной работе с бэкендами u->length по умолчанию устанавливается в -1. Change in internal API: now u->length defaults to -1 if working with backends in unbuffered mode. теперь при получении неполного ответа от бэкенда nginx отправляет полученную часть ответа, после чего закрывает соединение с клиентом. 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. в рабочем процессе мог произойти segmentation fault, если использовался модуль ngx_http_spdy_module и директива client_body_in_file_only. 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. параметр so_keepalive директивы listen мог работать некорректно на DragonFlyBSD.
Спасибо Sepherosa Ziehau.
the "so_keepalive" parameter of the "listen" directive might be handled incorrectly on DragonFlyBSD.
Thanks to Sepherosa Ziehau.
в модуле ngx_http_xslt_filter_module. in the ngx_http_xslt_filter_module. в модуле ngx_http_sub_filter_module. in the ngx_http_sub_filter_module.
теперь можно использовать несколько директив error_log. now several "error_log" directives can be used. метод $r->header_in() встроенного перла не возвращал значения строк "Cookie" и "X-Forwarded-For" из заголовка запроса; ошибка появилась в 1.3.14. 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. в модуле ngx_http_spdy_module.
Спасибо Jim Radford.
in the ngx_http_spdy_module.
Thanks to Jim Radford.
nginx не собирался на Linux при использовании x32 ABI.
Спасибо Сергею Иванцову.
nginx could not be built on Linux with x32 ABI.
Thanks to Serguei Ivantsov.
директивы ssi_last_modified, sub_filter_last_modified и xslt_last_modified.
Спасибо Алексею Колпакову.
the "ssi_last_modified", "sub_filter_last_modified", and "xslt_last_modified" directives.
Thanks to Alexey Kolpakov.
параметр http_403 в директивах proxy_next_upstream, fastcgi_next_upstream, scgi_next_upstream и uwsgi_next_upstream. the "http_403" parameter of the "proxy_next_upstream", "fastcgi_next_upstream", "scgi_next_upstream", and "uwsgi_next_upstream" directives. директивы allow и deny теперь поддерживают unix domain сокеты. the "allow" and "deny" directives now support unix domain sockets. nginx не собирался с модулем ngx_mail_ssl_module, но без модуля ngx_http_ssl_module; ошибка появилась в 1.3.14. 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. в директиве proxy_set_body.
Спасибо Lanshun Zhou.
in the "proxy_set_body" directive.
Thanks to Lanshun Zhou.
в директиве lingering_time.
Спасибо Lanshun Zhou.
in the "lingering_time" directive.
Thanks to Lanshun Zhou.
параметр fail_timeout директивы server в блоке upstream мог не работать, если использовался параметр max_fails; ошибка появилась в 1.3.0. 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. в рабочем процессе мог произойти segmentation fault, если использовалась директива ssl_stapling.
Спасибо Piotr Sikora.
a segmentation fault might occur in a worker process if the "ssl_stapling" directive was used.
Thanks to Piotr Sikora.
в почтовом прокси-сервере.
Спасибо Filipe Da Silva.
in the mail proxy server.
Thanks to Filipe Da Silva.
nginx/Windows мог перестать принимать соединения, если использовалось несколько рабочих процессов. nginx/Windows might stop accepting connections if several worker processes were used.
при обработке специально созданного запроса мог перезаписываться стек рабочего процесса, что могло приводить к выполнению произвольного кода (CVE-2013-2028); ошибка появилась в 1.3.9.
Спасибо Greg MacManus, iSIGHT Partners Labs.
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.
Thanks to Greg MacManus, iSIGHT Partners Labs.
nginx не собирался с модулем ngx_http_perl_module, если использовался параметр --with-openssl; ошибка появилась в 1.3.16. 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. в работе с телом запроса из модуля ngx_http_perl_module; ошибка появилась в 1.3.9. in a request body handling in the ngx_http_perl_module; the bug had appeared in 1.3.9. в рабочем процессе мог произойти segmentation fault, если использовались подзапросы; ошибка появилась в 1.3.9. a segmentation fault might occur in a worker process if subrequests were used; the bug had appeared in 1.3.9. директива tcp_nodelay вызывала ошибку при проксировании WebSocket-соединений в unix domain сокет. the "tcp_nodelay" directive caused an error if a WebSocket connection was proxied into a unix domain socket. переменная $upstream_response_length возвращала значение "0", если не использовалась буферизация.
Спасибо Piotr Sikora.
the $upstream_response_length variable has an incorrect value "0" if buffering was not used.
Thanks to Piotr Sikora.
в методах обработки соединений eventport и /dev/poll. in the eventport and /dev/poll methods.
открытие и закрытие соединения без отправки в нём каких-либо данных больше не записывается в access_log с кодом ошибки 400. opening and closing a connection without sending any data in it is no longer logged to access_log with error code 400. модуль ngx_http_spdy_module.
Спасибо Automattic за спонсирование разработки.
the ngx_http_spdy_module.
Thanks to Automattic for sponsoring this work.
директивы limit_req_status и limit_conn_status.
Спасибо Nick Marden.
the "limit_req_status" and "limit_conn_status" directives.
Thanks to Nick Marden.
директива image_filter_interlace.
Спасибо Ивану Боброву.
the "image_filter_interlace" directive.
Thanks to Ian Babrou.
переменная $connections_waiting в модуле ngx_http_stub_status_module. $connections_waiting variable in the ngx_http_stub_status_module. теперь почтовый прокси-сервер поддерживает IPv6-бэкенды. the mail proxy module now supports IPv6 backends. при повторной отправке запроса на бэкенд тело запроса могло передаваться неправильно; ошибка появилась в 1.3.9.
Спасибо Piotr Sikora.
request body might be transmitted incorrectly when retrying a request to the next upstream server; the bug had appeared in 1.3.9.
Thanks to Piotr Sikora.
в директиве client_body_in_file_only; ошибка появилась в 1.3.9. in the "client_body_in_file_only" directive; the bug had appeared in 1.3.9. ответы могли зависать, если использовались подзапросы и при обработке подзапроса происходила DNS-ошибка.
Спасибо Lanshun Zhou.
responses might hang if subrequests were used and a DNS error happened during subrequest processing.
Thanks to Lanshun Zhou.
в процедуре учёта использования бэкендов. in backend usage accounting.
переменные $connections_active, $connections_reading и $connections_writing в модуле ngx_http_stub_status_module. $connections_active, $connections_reading, and $connections_writing variables in the ngx_http_stub_status_module. поддержка WebSocket-соединений в модулях ngx_http_uwsgi_module и ngx_http_scgi_module. support of WebSocket connections in the ngx_http_uwsgi_module and ngx_http_scgi_module. в обработке виртуальных серверов при использовании SNI. in virtual servers handling with SNI. при использовании директивы "ssl_session_cache shared" новые сессии могли не сохраняться, если заканчивалось место в разделяемой памяти.
Спасибо Piotr Sikora.
new sessions were not always stored if the "ssl_session_cache shared" directive was used and there was no free space in shared memory.
Thanks to Piotr Sikora.
несколько заголовков X-Forwarded-For обрабатывались неправильно.
Спасибо Neal Poole за спонсирование разработки.
multiple X-Forwarded-For headers were handled incorrectly.
Thanks to Neal Poole for sponsoring this work.
в модуле ngx_http_mp4_module.
Спасибо Gernot Vormayr.
in the ngx_http_mp4_module.
Thanks to Gernot Vormayr.
теперь для сборки по умолчанию используется компилятор с именем "cc". a compiler with name "cc" is now used by default. поддержка проксирования WebSocket-соединений.
Спасибо Apcera и CloudBees за спонсирование разработки.
support for proxying of WebSocket connections.
Thanks to Apcera and CloudBees for sponsoring this work.
директива auth_basic_user_file поддерживает шифрование паролей методом "{SHA}".
Спасибо Louis Opter.
the "auth_basic_user_file" directive supports "{SHA}" password encryption method.
Thanks to Louis Opter.
директивы proxy_bind, fastcgi_bind, memcached_bind, scgi_bind и uwsgi_bind поддерживают переменные. variables support in the "proxy_bind", "fastcgi_bind", "memcached_bind", "scgi_bind", and "uwsgi_bind" directives. переменные $pipe, $request_length, $time_iso8601 и $time_local теперь можно использовать не только в директиве log_format.
Спасибо Kiril Kalchev.
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.
поддержка IPv6 в модуле ngx_http_geoip_module.
Спасибо Gregor Kališnik.
IPv6 support in the ngx_http_geoip_module.
Thanks to Gregor Kališnik.
директива proxy_method работала неверно, если была указана на уровне http. in the "proxy_method" directive. в рабочем процессе мог произойти segmentation fault, если использовался resolver и метод poll. a segmentation fault might occur in a worker process if resolver was used with the poll method. nginx мог нагружать процессор во время SSL handshake с бэкендом при использовании методов обработки соединений select, poll и /dev/poll. nginx might hog CPU during SSL handshake with a backend if the select, poll, or /dev/poll methods were used. ошибка "[crit] SSL_write() failed (SSL:)". the "[crit] SSL_write() failed (SSL:)" error. в директиве client_body_in_file_only; ошибка появилась в 1.3.9. in the "client_body_in_file_only" directive; the bug had appeared in 1.3.9. в директиве fastcgi_keep_conn. in the "fastcgi_keep_conn" directive.
при записи в лог мог происходить segmentation fault; ошибка появилась в 1.3.10. a segmentation fault might occur if logging was used; the bug had appeared in 1.3.10. директива proxy_pass не работала с IP-адресами без явного указания порта; ошибка появилась в 1.3.10. the "proxy_pass" directive did not work with IP addresses without port specified; the bug had appeared in 1.3.10. на старте или во время переконфигурации происходил segmentation fault, если директива keepalive была указана несколько раз в одном блоке upstream. a segmentation fault occurred on start or during reconfiguration if the "keepalive" directive was specified more than once in a single upstream block. параметр default директивы geo не определял значение по умолчанию для IPv6-адресов. parameter "default" of the "geo" directive did not set default value for IPv6 addresses. для указанных в конфигурационном файле доменных имён теперь используются не только IPv4, но и IPv6 адреса. domain names specified in configuration file are now resolved to IPv6 addresses as well as IPv4 ones. теперь при использовании директивы include с маской на Unix-системах включаемые файлы сортируются в алфавитном порядке. now if the "include" directive with mask is used on Unix systems, included files are sorted in alphabetical order. директива add_header добавляет строки в ответы с кодом 201. the "add_header" directive adds headers to 201 responses. директива geo теперь поддерживает IPv6 адреса в формате CIDR. the "geo" directive now supports IPv6 addresses in CIDR notation. параметры flush и gzip в директиве access_log. the "flush" and "gzip" parameters of the "access_log" directive. директива auth_basic поддерживает переменные. variables support in the "auth_basic" directive. nginx в некоторых случаях не собирался с модулем ngx_http_perl_module. nginx could not be built with the ngx_http_perl_module in some cases. в рабочем процессе мог произойти segmentation fault, если использовался модуль ngx_http_xslt_module. a segmentation fault might occur in a worker process if the ngx_http_xslt_module was used. nginx мог не собираться на MacOSX.
Спасибо Piotr Sikora.
nginx could not be built on MacOSX in some cases.
Thanks to Piotr Sikora.
при использовании директивы limit_rate с большими значениями скорости на 32-битных системах ответ мог возвращаться не целиком.
Спасибо Алексею Антропову.
the "limit_rate" directive with high rates might result in truncated responses on 32-bit platforms.
Thanks to Alexey Antropov.
в рабочем процессе мог произойти segmentation fault, если использовалась директива if.
Спасибо Piotr Sikora.
a segmentation fault might occur in a worker process if the "if" directive was used.
Thanks to Piotr Sikora.
ответ "100 Continue" выдавался вместе с ответом "413 Request Entity Too Large". a "100 Continue" response was issued with "413 Request Entity Too Large" responses. директивы image_filter, image_filter_jpeg_quality и image_filter_sharpen могли наследоваться некорректно.
Спасибо Ивану Боброву.
the "image_filter", "image_filter_jpeg_quality" and "image_filter_sharpen" directives might be inherited incorrectly.
Thanks to Ian Babrou.
при использовании директивы auth_basic под Linux могли возникать ошибки "crypt_r() failed". "crypt_r() failed" errors might appear if the "auth_basic" directive was used on Linux. в обработке backup-серверов.
Спасибо Thomas Chen.
in backup servers handling.
Thanks to Thomas Chen.
при проксировании HEAD-запросов мог возвращаться некорректный ответ, если использовалась директива gzip. proxied HEAD requests might return incorrect response if the "gzip" directive was used.
поддержка chunked transfer encoding при получении тела запроса. support for chunked transfer encoding while reading client request body. переменные $request_time и $msec теперь можно использовать не только в директиве log_format. the $request_time and $msec variables can now be used not only in the "log_format" directive. cache manager и cache loader могли не запускаться, если использовалось более 512 listen-сокетов. cache manager and cache loader processes might not be able to start if more than 512 listen sockets were used. в модуле ngx_http_dav_module. in the ngx_http_dav_module. параметр optional_no_ca директивы ssl_verify_client.
Спасибо Михаилу Казанцеву и Eric O'Connor.
the "optional_no_ca" parameter of the "ssl_verify_client" directive.
Thanks to Mike Kazantsev and Eric O'Connor.
переменные $bytes_sent, $connection и $connection_requests теперь можно использовать не только в директиве log_format.
Спасибо Benjamin Grössing.
the $bytes_sent, $connection, and $connection_requests variables can now be used not only in the "log_format" directive.
Thanks to Benjamin Grössing.
параметр auto директивы worker_processes. the "auto" parameter of the "worker_processes" directive. сообщения "cache file ... has md5 collision". "cache file ... has md5 collision" alert. в модуле ngx_http_gunzip_filter_module. in the ngx_http_gunzip_filter_module. в директиве ssl_stapling. in the "ssl_stapling" directive.
поддержка OCSP stapling.
Спасибо Comodo, DigiCert и GlobalSign за спонсирование разработки.
OCSP stapling support.
Thanks to Comodo, DigiCert and GlobalSign for sponsoring this work.
директива ssl_trusted_certificate. the "ssl_trusted_certificate" directive. теперь resolver случайным образом меняет порядок возвращаемых закэшированных адресов.
Спасибо Антону Жулину.
resolver now randomly rotates addresses returned from cache.
Thanks to Anton Jouline.
совместимость с OpenSSL 0.9.7. OpenSSL 0.9.7 compatibility.
модуль ngx_http_gunzip_filter_module. the ngx_http_gunzip_filter_module. директива memcached_gzip_flag. the "memcached_gzip_flag" directive. параметр always директивы gzip_static. the "always" parameter of the "gzip_static" directive. в директиве "limit_req"; ошибка появилась в 1.1.14.
Спасибо Charles Chen.
in the "limit_req" directive; the bug had appeared in 1.1.14.
Thanks to Charles Chen.
nginx не собирался gcc 4.7 с оптимизацией -O2 если использовался параметр --with-ipv6. nginx could not be built by gcc 4.7 with -O2 optimization if the --with-ipv6 option was used.
модуль ngx_http_mp4_module больше не отфильтровывает дорожки в форматах, отличных от H.264 и AAC. the ngx_http_mp4_module module no longer skips tracks in formats other than H.264 and AAC. в рабочем процессе мог произойти segmentation fault, если в директиве map в качестве значений использовались переменные. a segmentation fault might occur in a worker process if the "map" directive was used with variables as values. в рабочем процессе мог произойти segmentation fault при использовании директивы geo с параметром ranges, но без параметра default; ошибка появилась в 0.8.43.
Спасибо Zhen Chen и Weibin Yao.
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.
Thanks to Zhen Chen and Weibin Yao.
в обработке параметра командной строки -p. in the -p command-line parameter handling. в почтовом прокси-сервере. in the mail proxy server. незначительных потенциальных ошибок.
Спасибо Coverity.
of minor potential bugs.
Thanks to Coverity.
nginx/Windows не собирался с Visual Studio 2005 Express.
Спасибо HAYASHI Kentaro.
nginx/Windows could not be built with Visual Studio 2005 Express.
Thanks to HAYASHI Kentaro.
теперь на слушающих IPv6-сокетах параметр ipv6only включён по умолчанию. the "ipv6only" parameter is now turned on by default for listening IPv6 sockets. поддержка компилятора Clang. the Clang compiler support. могли создаваться лишние слушающие сокеты.
Спасибо Роману Одайскому.
extra listening sockets might be created.
Thanks to Roman Odaisky.
nginx/Windows мог нагружать процессор, если при запуске рабочего процесса происходила ошибка.
Спасибо Ricardo Villalobos Guevara.
nginx/Windows might hog CPU if a worker process failed to start.
Thanks to Ricardo Villalobos Guevara.
директивы proxy_pass_header, fastcgi_pass_header, scgi_pass_header, uwsgi_pass_header, proxy_hide_header, fastcgi_hide_header, scgi_hide_header и uwsgi_hide_header могли наследоваться некорректно. 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.
поддержка entity tags и директива etag. entity tags support and the "etag" directive. при использовании директивы map с параметром hostnames не игнорировалась конечная точка в исходном значении. trailing dot in a source value was not ignored if the "map" directive was used with the "hostnames" parameter. для обработки запроса мог использоваться неверный location, если переход в именованный location происходил после изменения URI с помощью директивы rewrite. 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. параметр single директивы keepalive теперь игнорируется. the "single" parameter of the "keepalive" directive is now ignored. сжатие SSL теперь отключено в том числе при использовании OpenSSL старее 1.0.0. SSL compression is now disabled when using all versions of OpenSSL, including ones prior to 1.0.0. директиву "ip_hash" теперь можно использовать для балансировки IPv6 клиентов. it is now possible to use the "ip_hash" directive to balance IPv6 clients. переменную $status теперь можно использовать не только в директиве log_format. the $status variable can now be used not only in the "log_format" directive. при завершении рабочего процесса мог произойти segmentation fault, если использовалась директива resolver. a segmentation fault might occur in a worker process on shutdown if the "resolver" directive was used. в рабочем процессе мог произойти segmentation fault, если использовался модуль ngx_http_mp4_module. a segmentation fault might occur in a worker process if the ngx_http_mp4_module was used. в модуле ngx_http_mp4_module. in the ngx_http_mp4_module. в рабочем процессе мог произойти segmentation fault, если использовались конфликтующие имена серверов с масками. a segmentation fault might occur in a worker process if conflicting wildcard server names were used. на платформе ARM nginx мог аварийно завершаться по сигналу SIGBUS. nginx might be terminated abnormally on a SIGBUS signal on ARM platform. во время переконфигурации на HP-UX в лог записывался alert "sendmsg() failed (9: Bad file number)". an alert "sendmsg() failed (9: Bad file number)" on HP-UX while reconfiguration. теперь nginx/Windows игнорирует точку в конце компонента URI и не разрешает URI, содержащие последовательность ":$".
Спасибо Владимиру Кочеткову, Positive Research Center.
now nginx/Windows ignores trailing dot in URI path component, and does not allow URIs with ":$" in it.
Thanks to Vladimir Kochetkov, Positive Research Center.
директивы proxy_pass, fastcgi_pass, scgi_pass, uwsgi_pass и директива server в блоке upstream теперь поддерживают IPv6-адреса. the "proxy_pass", "fastcgi_pass", "scgi_pass", "uwsgi_pass" directives, and the "server" directive inside the "upstream" block, now support IPv6 addresses. в директиве resolver теперь можно указывать порт и задавать IPv6-адреса DNS-серверов. the "resolver" directive now supports IPv6 addresses and an optional port specification. директива least_conn в блоке upstream. the "least_conn" directive inside the "upstream" block. при использовании директивы ip_hash теперь можно задавать веса серверов. it is now possible to specify a weight for servers while using the "ip_hash" directive. в рабочем процессе мог произойти segmentation fault, если использовалась директива image_filter; ошибка появилась в 1.3.0. a segmentation fault might occur in a worker process if the "image_filter" directive was used; the bug had appeared in 1.3.0. nginx не собирался с модулем ngx_cpp_test_module; ошибка появилась в 1.1.12. nginx could not be built with ngx_cpp_test_module; the bug had appeared in 1.1.12. доступ к переменным из SSI и встроенного перла мог не работать после переконфигурации.
Спасибо Yichun Zhang.
access to variables from SSI and embedded perl module might not work after reconfiguration.
Thanks to Yichun Zhang.
в модуле ngx_http_xslt_filter_module.
Спасибо Kuramoto Eiji.
in the ngx_http_xslt_filter_module.
Thanks to Kuramoto Eiji.
утечки памяти при использовании переменной $geoip_org.
Спасибо Денису Латыпову.
memory leak if $geoip_org variable was used.
Thanks to Denis F. Latypoff.
в директивах proxy_cookie_domain и proxy_cookie_path. in the "proxy_cookie_domain" and "proxy_cookie_path" directives.
директива debug_connection теперь поддерживает IPv6-адреса и параметр "unix:". the "debug_connection" directive now supports IPv6 addresses and the "unix:" parameter. директива set_real_ip_from и параметр proxy директивы geo теперь поддерживают IPv6-адреса. the "set_real_ip_from" directive and the "proxy" parameter of the "geo" directive now support IPv6 addresses. директивы real_ip_recursive, geoip_proxy и geoip_proxy_recursive. the "real_ip_recursive", "geoip_proxy", and "geoip_proxy_recursive" directives. параметр proxy_recursive директивы geo. the "proxy_recursive" parameter of the "geo" directive. в рабочем процессе мог произойти segmentation fault, если использовалась директива resolver. a segmentation fault might occur in a worker process if the "resolver" directive was used. в рабочем процессе мог произойти segmentation fault, если использовались директивы fastcgi_pass, scgi_pass или uwsgi_pass и бэкенд возвращал некорректный ответ. 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. в рабочем процессе мог произойти segmentation fault, если использовалась директива rewrite и в новых аргументах запроса в строке замены использовались переменные. a segmentation fault might occur in a worker process if the "rewrite" directive was used and new request arguments in a replacement used variables. nginx мог нагружать процессор, если было достигнуто ограничение на количество открытых файлов. nginx might hog CPU if the open file resource limit was reached. при использовании директивы proxy_next_upstream с параметром http_404 nginx мог бесконечно перебирать бэкенды, если в блоке upstream был хотя бы один сервер с флагом backup. 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. при использовании директивы ip_hash установка параметра down директивы server могла приводить к ненужному перераспределению клиентов между бэкендами. adding the "down" parameter of the "server" directive might cause unneeded client redistribution among backend servers if the "ip_hash" directive was used. утечки сокетов.
Спасибо Yichun Zhang.
socket leak.
Thanks to Yichun Zhang.
в модуле ngx_http_fastcgi_module. in the ngx_http_fastcgi_module.
в рабочем процессе мог произойти segmentation fault, если использовалась директива try_files; ошибка появилась в 1.1.19. a segmentation fault might occur in a worker process if the "try_files" directive was used; the bug had appeared in 1.1.19. ответ мог быть передан не полностью, если использовалось больше IOV_MAX буферов. response might be truncated if there were more than IOV_MAX buffers used. в работе параметра crop директивы image_filter.
Спасибо Maxim Bublis.
in the "crop" parameter of the "image_filter" directive.
Thanks to Maxim Bublis.
при обработке специально созданного mp4 файла модулем ngx_http_mp4_module могли перезаписываться области памяти рабочего процесса, что могло приводить к выполнению произвольного кода (CVE-2012-2089).
Спасибо Matthew Daley.
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).
Thanks to Matthew Daley.
nginx/Windows мог завершаться аварийно.
Спасибо Vincent Lee.
nginx/Windows might be terminated abnormally.
Thanks to Vincent Lee.
nginx нагружал процессор, если все серверы в upstream'е были помечены флагом backup. nginx hogged CPU if all servers in an upstream were marked as "backup". директивы allow и deny могли наследоваться некорректно, если в них использовались IPv6 адреса. the "allow" and "deny" directives might be inherited incorrectly if they were used with IPv6 addresses. директивы modern_browser и ancient_browser могли наследоваться некорректно. the "modern_browser" and "ancient_browser" directives might be inherited incorrectly. таймауты могли работать некорректно на Solaris/SPARC. timeouts might be handled incorrectly on Solaris/SPARC. в модуле ngx_http_mp4_module. in the ngx_http_mp4_module.
теперь keepalive соединения не запрещены для Safari по умолчанию. keepalive connections are no longer disabled for Safari by default. переменная $connection_requests. the $connection_requests variable. переменные $tcpinfo_rtt, $tcpinfo_rttvar, $tcpinfo_snd_cwnd и $tcpinfo_rcv_space. $tcpinfo_rtt, $tcpinfo_rttvar, $tcpinfo_snd_cwnd and $tcpinfo_rcv_space variables. директива worker_cpu_affinity теперь работает на FreeBSD. the "worker_cpu_affinity" directive now works on FreeBSD. директивы xslt_param и xslt_string_param.
Спасибо Samuel Behan.
the "xslt_param" and "xslt_string_param" directives.
Thanks to Samuel Behan.
в configure.
Спасибо Piotr Sikora.
in configure tests.
Thanks to Piotr Sikora.
в модуле ngx_http_xslt_filter_module. in the ngx_http_xslt_filter_module. nginx не собирался на Debian GNU/Hurd. nginx could not be built on Debian GNU/Hurd.
содержимое ранее освобождённой памяти могло быть отправлено клиенту, если бэкенд возвращал специально созданный ответ.
Спасибо Matthew Daley.
content of previously freed memory might be sent to a client if backend returned specially crafted response.
Thanks to Matthew Daley.
при использовании встроенного перла из SSI.
Спасибо Matthew Daley.
in the embedded perl module if used from SSI.
Thanks to Matthew Daley.
в модуле ngx_http_uwsgi_module. in the ngx_http_uwsgi_module.
ограничение на количество одновременных подзапросов поднято до 200. the simultaneous subrequest limit has been raised to 200. параметр from в директиве disable_symlinks. the "from" parameter of the "disable_symlinks" directive. директивы return и error_page теперь могут использоваться для возврата перенаправлений с кодом 307. the "return" and "error_page" directives can now be used to return 307 redirections. в рабочем процессе мог произойти segmentation fault, если использовалась директива resolver и на глобальном уровне не была задана директива error_log.
Спасибо Роману Арутюняну.
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.
Thanks to Roman Arutyunyan.
в рабочем процессе мог произойти segmentation fault, если использовались директивы "proxy_http_version 1.1" или "fastcgi_keep_conn on". a segmentation fault might occur in a worker process if the "proxy_http_version 1.1" or "fastcgi_keep_conn on" directives were used. утечек памяти.
Спасибо Lanshun Zhou.
memory leaks.
Thanks to Lanshun Zhou.
в директиве disable_symlinks. in the "disable_symlinks" directive. при использовании ZFS размер кэша на диске мог считаться некорректно; ошибка появилась в 1.0.1. on ZFS filesystem disk cache size might be calculated incorrectly; the bug had appeared in 1.0.1. nginx не собирался компилятором icc 12.1. nginx could not be built by the icc 12.1 compiler. nginx не собирался gcc на Solaris; ошибка появилась в 1.1.15. nginx could not be built by gcc on Solaris; the bug had appeared in 1.1.15.
директива disable_symlinks. the "disable_symlinks" directive. директивы proxy_cookie_domain и proxy_cookie_path. the "proxy_cookie_domain" and "proxy_cookie_path" directives. nginx мог некорректно сообщать об ошибке "upstream prematurely closed connection" вместо "upstream sent too big header".
Спасибо Feibo Li.
nginx might log incorrect error "upstream prematurely closed connection" instead of correct "upstream sent too big header" one.
Thanks to Feibo Li.
nginx не собирался с модулем ngx_http_perl_module, если использовался параметр --with-openssl. nginx could not be built with the ngx_http_perl_module if the --with-openssl option was used. количество внутренних перенаправлений в именованные location'ы не ограничивалось. the number of internal redirects to named locations was not limited. вызов $r->flush() несколько раз подряд мог приводить к ошибкам в модуле ngx_http_gzip_filter_module. calling $r->flush() multiple times might cause errors in the ngx_http_gzip_filter_module. при использовании директивы proxy_store с SSI-подзапросами временные файлы могли не удаляться. temporary files might be not removed if the "proxy_store" directive was used with SSI includes. в некоторых случаях некэшируемые переменные (такие, как $args) возвращали старое пустое закэшированное значение. in some cases non-cacheable variables (such as the $args variable) returned old empty cached value. в рабочем процессе мог произойти segmentation fault, если одновременно создавалось слишком много SSI-подзапросов; ошибка появилась в 0.7.25. 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.
теперь можно указать несколько ограничений limit_req одновременно. multiple "limit_req" limits may be used simultaneously. в обработке ошибок при соединении с бэкендом.
Спасибо Piotr Sikora.
in error handling while connecting to a backend.
Thanks to Piotr Sikora.
в обработке ошибок при использовании AIO на FreeBSD. in AIO error handling on FreeBSD. в инициализации библиотеки OpenSSL. in the OpenSSL library initialization. директивы proxy_redirect могли наследоваться некорректно. the "proxy_redirect" directives might be inherited incorrectly. утечки памяти при переконфигурации, если использовалась директива pcre_jit. memory leak during reconfiguration if the "pcre_jit" directive was used.
параметры TLSv1.1 и TLSv1.2 в директиве ssl_protocols. the "TLSv1.1" and "TLSv1.2" parameters of the "ssl_protocols" directive. параметры директивы limit_req наследовались некорректно; ошибка появилась в 1.1.12. the "limit_req" directive parameters were not inherited correctly; the bug had appeared in 1.1.12. директива proxy_redirect некорректно обрабатывала заголовок Refresh при использовании регулярных выражений. the "proxy_redirect" directive incorrectly processed "Refresh" header if regular expression were used. директива proxy_cache_use_stale с параметром error не возвращала ответ из кэша, если все бэкенды были признаны неработающими. the "proxy_cache_use_stale" directive with "error" parameter did not return answer from cache if there were no live upstreams. директива worker_cpu_affinity могла не работать. the "worker_cpu_affinity" directive might not work. nginx не собирался на Solaris; ошибка появилась в 1.1.12. nginx could not be built on Solaris; the bug had appeared in 1.1.12. в модуле ngx_http_mp4_module. in the ngx_http_mp4_module. после перенаправления запроса с помощью директивы error_page директива proxy_pass без URI теперь использует изменённый URI.
Спасибо Lanshun Zhou.
a "proxy_pass" directive without URI part now uses changed URI after redirection with the "error_page" directive.
Thanks to Lanshun Zhou.
директивы proxy/fastcgi/scgi/uwsgi_cache_lock, proxy/fastcgi/scgi/uwsgi_cache_lock_timeout. the "proxy/fastcgi/scgi/uwsgi_cache_lock", "proxy/fastcgi/scgi/uwsgi_cache_lock_timeout" directives. директива pcre_jit. the "pcre_jit" directive. SSI команда if поддерживает выделения в регулярных выражениях. the "if" SSI command supports captures in regular expressions. SSI команда if не работала внутри команды block. the "if" SSI command did not work inside the "block" command. директивы limit_conn_log_level и limit_req_log_level могли не работать. the "limit_conn_log_level" and "limit_req_log_level" directives might not work. директива limit_rate не позволяла передавать на полной скорости, даже если был указан очень большой лимит. the "limit_rate" directive did not allow to use full throughput, even if limit value was very high. директива sendfile_max_chunk не работала, если использовалась директива limit_rate. the "sendfile_max_chunk" directive did not work, if the "limit_rate" directive was used. если в директиве proxy_pass использовались переменные и не был указан URI, всегда использовался URI исходного запроса. a "proxy_pass" directive without URI part always used original request URI if variables were used. после перенаправления запроса с помощью директивы try_files директива proxy_pass без URI могла использовать URI исходного запроса.
Спасибо Lanshun Zhou.
a "proxy_pass" directive without URI part might use original request after redirection with the "try_files" directive.
Thanks to Lanshun Zhou.
в модуле ngx_http_scgi_module. in the ngx_http_scgi_module. в модуле ngx_http_mp4_module. in the ngx_http_mp4_module. nginx не собирался на Solaris; ошибка появилась в 1.1.9. nginx could not be built on Solaris; the bug had appeared in 1.1.9.
параметр so_keepalive в директиве listen.
Спасибо Всеволоду Стахову.
the "so_keepalive" parameter of the "listen" directive.
Thanks to Vsevolod Stakhov.
параметр if_not_empty в директивах fastcgi/scgi/uwsgi_param. the "if_not_empty" parameter of the "fastcgi/scgi/uwsgi_param" directives. переменная $https. the $https variable. директива proxy_redirect поддерживает переменные в первом параметре. the "proxy_redirect" directive supports variables in the first parameter. директива proxy_redirect поддерживает регулярные выражения. the "proxy_redirect" directive supports regular expressions. переменная $sent_http_cache_control могла содержать неверное значение при использовании директивы expires.
Спасибо Yichun Zhang.
the $sent_http_cache_control variable might contain a wrong value if the "expires" directive was used.
Thanks to Yichun Zhang.
директива read_ahead могла не работать при использовании совместно с try_files и open_file_cache. the "read_ahead" directive might not work combined with "try_files" and "open_file_cache". если в параметре inactive директивы proxy_cache_path было указано малое время, в рабочем процессе мог произойти segmentation fault. a segmentation fault might occur in a worker process if small time was used in the "inactive" parameter of the "proxy_cache_path" directive. ответы из кэша могли зависать. responses from cache might hang.
при использовании AIO на Linux в рабочем процессе происходил segmentation fault; ошибка появилась в 1.1.9. a segmentation fault occurred in a worker process if AIO was used on Linux; the bug had appeared in 1.1.9. теперь двойные кавычки экранируется при выводе SSI-командой echo.
Спасибо Зауру Абасмирзоеву.
now double quotes are encoded in an "echo" SSI-command output.
Thanks to Zaur Abasmirzoev.
параметр valid в директиве resolver. По умолчанию теперь используется TTL, возвращённый DNS-сервером.
Спасибо Кириллу Коринскому.
the "valid" parameter of the "resolver" directive. By default TTL returned by a DNS server is used.
Thanks to Kirill A. Korinskiy.
nginx мог перестать отвечать, если рабочий процесс завершался аварийно. nginx might hang after a worker process abnormal termination. в рабочем процессе мог произойти segmentation fault, если использовалось SNI; ошибка появилась в 1.1.2. a segmentation fault might occur in a worker process if SNI was used; the bug had appeared in 1.1.2. в директиве keepalive_disable; ошибка появилась в 1.1.8.
Спасибо Александру Усову.
in the "keepalive_disable" directive; the bug had appeared in 1.1.8.
Thanks to Alexander Usov.
сигнал SIGWINCH переставал работать после первого обновления исполняемого файла; ошибка появилась в 1.1.1. SIGWINCH signal did not work after first binary upgrade; the bug had appeared in 1.1.1. теперь ответы бэкендов, длина которых не соответствует заголовку Content-Length, не кэширутся. backend responses with length not matching "Content-Length" header line are no longer cached. в директиве scgi_param при использовании составных параметров. in the "scgi_param" directive, if complex parameters were used. в методе epoll.
Спасибо Yichun Zhang.
in the "epoll" event method.
Thanks to Yichun Zhang.
в модуле ngx_http_flv_module.
Спасибо Piotr Sikora.
in the ngx_http_flv_module.
Thanks to Piotr Sikora.
в модуле ngx_http_mp4_module. in the ngx_http_mp4_module. теперь nginx понимает IPv6-адреса в строке запроса и в заголовке Host. IPv6 addresses are now handled properly in a request line and in a "Host" request header line. директивы add_header и expires не работали для ответов с кодом 206, если запрос проксировался. "add_header" and "expires" directives did not work if a request was proxied and response status code was 206. nginx не собирался на FreeBSD 10. nginx could not be built on FreeBSD 10. nginx не собирался на AIX. nginx could not be built on AIX.
модуль ngx_http_limit_zone_module переименован в ngx_http_limit_conn_module. the ngx_http_limit_zone_module was renamed to the ngx_http_limit_conn_module. директива limit_zone заменена директивой limit_conn_zone с новым синтаксисом. the "limit_zone" directive was superseded by the "limit_conn_zone" directive with a new syntax. поддержка ограничения по нескольким limit_conn на одном уровне. support for multiple "limit_conn" limits on the same level. директива image_filter_sharpen. the "image_filter_sharpen" directive. в рабочем процессе мог произойти segmentation fault, если resolver получил большой DNS-ответ.
Спасибо Ben Hawkes.
a segmentation fault might occur in a worker process if resolver got a big DNS response.
Thanks to Ben Hawkes.
в вычислении ключа для кэширования, если использовалась внутренняя реализация MD5; ошибка появилась в 1.0.4. in cache key calculation if internal MD5 implementation was used; the bug had appeared in 1.0.4. строки "If-Modified-Since", "If-Range" и им подобные в заголовке запроса клиента могли передаваться бэкенду при кэшировании; или не передаваться при выключенном кэшировании, если кэширование было включено в другой части конфигурации. 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. модуль ngx_http_mp4_module выдавал неверную строку "Content-Length" в заголовке ответа, использовался аргумент start.
Спасибо Piotr Sikora.
the module ngx_http_mp4_module sent incorrect "Content-Length" response header line if the "start" argument was used.
Thanks to Piotr Sikora.
поддержка нескольких DNS серверов в директиве "resolver".
Спасибо Кириллу Коринскому.
support of several DNS servers in the "resolver" directive.
Thanks to Kirill A. Korinskiy.
на старте или во время переконфигурации происходил segmentation fault, если директива ssl использовалась на уровне http и не был указан ssl_certificate. 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. уменьшено потребление памяти при проксировании больших файлов, если они буферизировались на диск. reduced memory consumption while proxying big files if they were buffered to disk. в рабочем процессе мог произойти segmentation fault, если использовалась директива "proxy_http_version 1.1". a segmentation fault might occur in a worker process if "proxy_http_version 1.1" directive was used. в директиве "expires @time". in the "expires @time" directive.
Изменение во внутреннем API: теперь при внутреннем редиректе в именованный location контексты модулей очищаются.
По запросу Yichun Zhang.
Change in internal API: now module context data are cleared while internal redirect to named location.
Requested by Yichun Zhang.
теперь если сервер, описанный в блоке upstream, был признан неработающим, то после истечения fail_timeout на него будет отправлен только один запрос; сервер будет считаться работающим, если успешно ответит на этот запрос. 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. теперь символы 0x7F-0xFF в access_log записываются в виде \xXX. now the 0x7F-0xFF characters are escaped as \xXX in an access_log. директивы "proxy/fastcgi/scgi/uwsgi_ignore_headers" теперь поддерживают значения X-Accel-Limit-Rate, X-Accel-Buffering и X-Accel-Charset. "proxy/fastcgi/scgi/uwsgi_ignore_headers" directives support the following additional values: X-Accel-Limit-Rate, X-Accel-Buffering, X-Accel-Charset. уменьшение потребления памяти при использовании SSL. decrease of memory consumption if SSL is used. некоторые UTF-8 символы обрабатывались неправильно.
Спасибо Алексею Куцу.
some UTF-8 characters were processed incorrectly.
Thanks to Alexey Kuts.
директивы модуля ngx_http_rewrite_module, заданные на уровне server, применялись повторно, если для запроса не находилось ни одного location'а. the ngx_http_rewrite_module directives specified at "server" level were executed twice if no matching locations were defined. при использовании "aio sendfile" могла происходить утечка сокетов. a socket leak might occurred if "aio sendfile" was used. при использовании файлового AIO соединения с быстрыми клиентами могли быть закрыты по истечению send_timeout. connections with fast clients might be closed after send_timeout if file AIO was used. в модуле ngx_http_autoindex_module. in the ngx_http_autoindex_module. модуль ngx_http_mp4_module не поддерживал перемотку на 32-битных платформах. the module ngx_http_mp4_module did not support seeking on 32-bit platforms.
директивы uwsgi_buffering и scgi_buffering.
Спасибо Peter Smit.
the "uwsgi_buffering" and "scgi_buffering" directives.
Thanks to Peter Smit.
при использовании proxy_cache_bypass могли быть закэшированы некэшируемые ответы.
Спасибо John Ferlito.
non-cacheable responses might be cached if "proxy_cache_bypass" directive was used.
Thanks to John Ferlito.
в модуле ngx_http_proxy_module при работе с бэкендами по HTTP/1.1. in HTTP/1.1 support in the ngx_http_proxy_module. закэшированные ответы с пустым телом возвращались некорректно; ошибка появилась в 0.8.31. cached responses with an empty body were returned incorrectly; the bug had appeared in 0.8.31. ответы с кодом 201 модуля ngx_http_dav_module были некорректны; ошибка появилась в 0.8.32. 201 responses of the ngx_http_dav_module were incorrect; the bug had appeared in 0.8.32. в директиве return. in the "return" directive. при использовании директивы "ssl_session_cache builtin" происходил segmentation fault; ошибка появилась в 1.1.1. the "ssl_session_cache builtin" directive caused segmentation fault; the bug had appeared in 1.1.1.
модуль ngx_http_upstream_keepalive. the ngx_http_upstream_keepalive module. директива proxy_http_version. the "proxy_http_version" directive. директива fastcgi_keep_conn. the "fastcgi_keep_conn" directive. директива worker_aio_requests. the "worker_aio_requests" directive. если nginx был собран с файловым AIO, он не мог запускаться на Linux без поддержки AIO. if nginx was built --with-file-aio it could not be run on Linux kernel which did not support AIO. в обработке ошибок при работе с Linux AIO.
Спасибо Hagai Avrahami.
in Linux AIO error processing.
Thanks to Hagai Avrahami.
уменьшено потребление памяти для долгоживущих запросов. reduced memory consumption for long-lived requests. модуль ngx_http_mp4_module не поддерживал 64-битный MP4-атом co64. the module ngx_http_mp4_module did not support 64-bit MP4 "co64" atom.
модуль ngx_http_mp4_module. the module ngx_http_mp4_module. в Linux AIO, используемым совместно с open_file_cache. in Linux AIO combined with open_file_cache. open_file_cache не обновлял информацию о файле, если файл был изменён не атомарно. open_file_cache did not update file info on retest if file was not atomically changed. nginx не собирался на MacOSX 10.7. nginx could not be built on MacOSX 10.7. теперь, если суммарный размер всех диапазонов больше размера исходного ответа, то nginx возвращает только исходный ответ, не обрабатывая диапазоны. now if total size of all ranges is greater than source response size, then nginx disables ranges and returns just the source response. директива max_ranges. the "max_ranges" directive. директивы ssl_verify_client, ssl_verify_depth и ssl_prefer_server_cipher могли работать некорректно, если использовался SNI. the "ssl_verify_client", "ssl_verify_depth", and "ssl_prefer_server_ciphers" directives might work incorrectly if SNI was used. в директивах proxy/fastcgi/scgi/ uwsgi_ignore_client_abort. in the "proxy/fastcgi/scgi/uwsgi_ignore_client_abort" directives. теперь загрузчик кэша за каждую итерацию либо обрабатывает число файлов, указанное в параметре load_files, либо работает не дольше времени, указанного в параметре loader_threshold. 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. SIGWINCH сигнал теперь работает только в режиме демона. now SIGWINCH signal works only in daemon mode. теперь разделяемые зоны и кэши используют семафоры POSIX на Solaris.
Спасибо Денису Иванову.
now shared zones and caches use POSIX semaphores on Solaris.
Thanks to Den Ivanov.
теперь на NetBSD поддерживаются accept фильтры. accept filters are now supported on NetBSD. nginx не собирался на Linux 3.0. nginx could not be built on Linux 3.0. в некоторых случаях nginx не использовал сжатие; ошибка появилась в 1.1.0. nginx did not use gzipping in some cases; the bug had appeared in 1.1.0. обработка тела запроса могла быть неверной, если клиент использовал pipelining. request body might be processed incorrectly if client used pipelining. в директиве request_body_in_single_buf. in the "request_body_in_single_buf" directive. в директивах proxy_set_body и proxy_pass_request_body при использовании SSL-соединения с бэкендом. in "proxy_set_body" and "proxy_pass_request_body" directives if SSL connection to backend was used. nginx нагружал процессор, если все серверы в upstream'е были помечены флагом down. nginx hogged CPU if all servers in an upstream were marked as "down". при переконфигурации мог произойти segmentation fault, если в предыдущей конфигурации был определён, но не использовался ssl_session_cache. a segmentation fault might occur during reconfiguration if ssl_session_cache was defined but not used in previous configuration. при использовании большого количества backup-серверов в рабочем процессе мог произойти segmentation fault. a segmentation fault might occur in a worker process if many backup servers were used in an upstream. при использовании директив fastcgi/scgi/uwsgi_param со значениями, начинающимися со строки "HTTP_", в рабочем процессе мог произойти segmentation fault; ошибка появилась в 0.8.40. 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.
уменьшение времени работы загрузчика кэша. cache loader run time decrease. параметры loader_files, loader_sleep и loader_threshold директив proxy/fastcgi/scgi/uwsgi_cache_path. "loader_files", "loader_sleep", and "loader_threshold" options of the "proxy/fastcgi/scgi/uwsgi_cache_path" directives. уменьшение времени загрузки конфигураций с большим количеством HTTPS серверов. loading time decrease of configuration with large number of HTTPS sites. теперь nginx поддерживает шифры с обменом ECDHE-ключами.
Спасибо Adrian Kotelba.
now nginx supports ECDHE key exchange ciphers.
Thanks to Adrian Kotelba.
директива lingering_close.
Спасибо Максиму Дунину.
the "lingering_close" directive.
Thanks to Maxim Dounin.
закрытия соединения для pipelined-запросов.
Спасибо Максиму Дунину.
in closing connection for pipelined requests.
Thanks to Maxim Dounin.
nginx не запрещал сжатие при получении значения "gzip;q=0" в строке "Accept-Encoding" в заголовке запроса клиента. nginx did not disable gzipping if client sent "gzip;q=0" in "Accept-Encoding" request header line. таймаута при небуферизированном проксировании.
Спасибо Максиму Дунину.
in timeout in unbuffered proxied mode.
Thanks to Maxim Dounin.
утечки памяти при использовании переменных в директиве proxy_pass при работе с бэкендом по HTTPS.
Спасибо Максиму Дунину.
memory leaks when a "proxy_pass" directive contains variables and proxies to an HTTPS backend.
Thanks to Maxim Dounin.
в проверке параметра директивы proxy_pass, заданного переменными.
Спасибо Lanshun Zhou.
in parameter validation of a "proxy_pass" directive with variables.
Thanks to Lanshun Zhou.
SSL не работал на QNX.
Спасибо Максиму Дунину.
SSL did not work on QNX.
Thanks to Maxim Dounin.
SSL модули не собирались gcc 4.6 без параметра --with-debug. SSL modules could not be built by gcc 4.6 without --with-debug option.
теперь по умолчанию используются следующие шифры SSL: "HIGH:!aNULL:!MD5".
Спасибо Rob Stradling.
now default SSL ciphers are "HIGH:!aNULL:!MD5".
Thanks to Rob Stradling.
директивы referer_hash_max_size и referer_hash_bucket_size.
Спасибо Witold Filipczyk.
the "referer_hash_max_size" and "referer_hash_bucket_size" directives.
Thanks to Witold Filipczyk.
переменная $uid_reset. $uid_reset variable. при использовании кэширования в рабочем процессе мог произойти segmentation fault.
Спасибо Lanshun Zhou.
a segmentation fault might occur in a worker process, if a caching was used.
Thanks to Lanshun Zhou.
при использовании кэширования рабочие процессы могли зациклиться во время переконфигурации; ошибка появилась в 0.8.48.
Спасибо Максиму Дунину.
worker processes may got caught in an endless loop during reconfiguration, if a caching was used; the bug had appeared in 0.8.48.
Thanks to Maxim Dounin.
сообщения "stalled cache updating".
Спасибо Максиму Дунину.
"stalled cache updating" alert.
Thanks to Maxim Dounin.
теперь в регулярных выражениях в директиве map можно задать чувствительность к регистру с помощью префиксов "~" и "~*". now regular expressions case sensitivity in the "map" directive is given by prefixes "~" or "~*". теперь разделяемые зоны и кэши используют семафоры POSIX на Linux.
Спасибо Денису Латыпову.
now shared zones and caches use POSIX semaphores on Linux.
Thanks to Denis F. Latypoff.
сообщения "stalled cache updating". "stalled cache updating" alert. nginx не собирался с параметром --without-http_auth_basic_module; ошибка появилась в 1.0.3. nginx could not be built --without-http_auth_basic_module; the bug had appeared in 1.0.3.
директива auth_basic_user_file поддерживает шифрование пароля методами "$apr1", "{PLAIN}" и "{SSHA}".
Спасибо Максиму Дунину.
the "auth_basic_user_file" directive supports "$apr1", "{PLAIN}", and "{SSHA}" password encryption methods.
Thanks to Maxim Dounin.
директива geoip_org и переменная $geoip_org.
Спасибо Александру Ускову, Arnaud Granal и Денису Латыпову.
the "geoip_org" directive and $geoip_org variable.
Thanks to Alexander Uskov, Arnaud Granal, and Denis F. Latypoff.
модули ngx_http_geo_module и ngx_http_geoip_module поддерживают адреса IPv4, отображённые на IPv6 адреса. ngx_http_geo_module and ngx_http_geoip_module support IPv4 addresses mapped to IPv6 addresses. при проверке адреса IPv4, отображённого на адрес IPv6, в рабочем процессе происходил segmentation fault, если директивы access или deny были определены только для адресов IPv6; ошибка появилась в 0.8.22. 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. закэшированный ответ мог быть испорчен, если значения директив proxy/fastcgi/scgi/uwsgi_cache_bypass и proxy/fastcgi/scgi/ uwsgi_no_cache были разными; ошибка появилась в 0.8.46. 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.
теперь разделяемые зоны и кэши используют семафоры POSIX. now shared zones and caches use POSIX semaphores. в работе параметра rotate директивы image_filter.
Спасибо Adam Bocim.
in the "rotate" parameter of the "image_filter" directive.
Thanks to Adam Bocim.
nginx не собирался на Solaris; ошибка появилась в 1.0.1. nginx could not be built on Solaris; the bug had appeared in 1.0.1.
теперь директива split_clients использует алгоритм MurmurHash2 из-за лучшего распределения.
Спасибо Олегу Мамонтову.
now the "split_clients" directive uses MurmurHash2 algorithm because of better distribution.
Thanks to Oleg Mamontov.
теперь длинные строки, начинающиеся с нуля, не считаются ложными значениями.
Спасибо Максиму Дунину.
now long strings starting with zero are not considered as false values.
Thanks to Maxim Dounin.
теперь по умолчанию nginx использует значение 511 для listen backlog на Linux. now nginx uses a default listen backlog value 511 on Linux. переменные $upstream_... можно использовать в SSI и перловом модулях. the $upstream_... variables may be used in the SSI and perl modules. теперь nginx лучше ограничивает размер кэша на диске.
Спасибо Олегу Мамонтову.
now nginx limits better disk cache size.
Thanks to Oleg Mamontov.
при парсинге неправильного IPv4 адреса мог произойти segmentation fault; ошибка появилась в 0.8.22.
Спасибо Максиму Дунину.
a segmentation fault might occur while parsing incorrect IPv4 address; the bug had appeared in 0.9.3.
Thanks to Maxim Dounin.
nginx не собирался gcc 4.6 без параметра --with-debug. nginx could not be built by gcc 4.6 without --with-debug option. nginx не собирался на Solaris 9 и более ранних; ошибка появилась в 0.9.3.
Спасибо Dagobert Michelsen.
nginx could not be built on Solaris 9 and earlier; the bug had appeared in 0.9.3.
Thanks to Dagobert Michelsen.
переменная $request_time имела неверные значения, если использовались подзапросы; ошибка появилась в 0.8.47.
Спасибо Игорю А. Валькову.
$request_time variable had invalid values if subrequests were used; the bug had appeared in 0.8.47.
Thanks to Igor A. Valcov.
cache manager мог нагружать процессор после переконфигурации.
Спасибо Максиму Дунину.
a cache manager might hog CPU after reload.
Thanks to Maxim Dounin.
директива "image_filter crop" неправильно работала в сочетании с "image_filter rotate 180". an "image_filter crop" directive worked incorrectly coupled with an "image_filter rotate 180" directive. директива "satisfy any" запрещала выдачу пользовательской страницы для 401 кода. a "satisfy any" directive disabled custom 401 error page.
теперь соединения в состоянии keepalive могут быть закрыты преждевременно, если у воркера нет свободных соединений.
Спасибо Максиму Дунину.
now keepalive connections may be closed premature, if there are no free worker connections.
Thanks to Maxim Dounin.
параметр rotate директивы image_filter.
Спасибо Adam Bocim.
the "rotate" parameter of the "image_filter" directive.
Thanks to Adam Bocim.
ситуации, когда бэкенд в директивах fastcgi_pass, scgi_pass или uwsgi_pass задан выражением и ссылается на описанный upstream. a case when a backend in "fastcgi_pass", "scgi_pass", or "uwsgi_pass" directives is given by expression and refers to a defined upstream.
директива map поддерживает регулярные выражения в качестве значения первого параметра. the "map" directive supports regular expressions as value of the first parameter. переменная $time_iso8601 для access_log.
Спасибо Michael Lustfield.
$time_iso8601 access_log variable.
Thanks to Michael Lustfield.
теперь по умолчанию nginx использует значение -1 для listen backlog на Linux.
Спасибо Андрею Нигматулину.
now nginx uses a default listen backlog value -1 on Linux.
Thanks to Andrei Nigmatulin.
параметр utf8 в директивах geoip_country и geoip_city.
Спасибо Денису Латыпову.
the "utf8" parameter of "geoip_country" and "geoip_city" directives.
Thanks to Denis F. Latypoff.
исправление в умолчательной директиве proxy_redirect, если в директиве proxy_pass не был описан URI.
Спасибо Максиму Дунину.
in a default "proxy_redirect" directive if "proxy_pass" directive has no URI part.
Thanks to Maxim Dounin.
директива error_page не работала с нестандартными кодами ошибок; ошибка появилась в 0.8.53.
Спасибо Максиму Дунину.
an "error_page" directive did not work with nonstandard error codes; the bug had appeared in 0.8.53.
Thanks to Maxim Dounin.
директива server_name поддерживает переменную $hostname. the "server_name" directive supports the $hostname variable. 494 код для ошибки "Request Header Too Large". 494 code for "Request Header Too Large" error. если для пары IPv6-адрес:порт описан только один сервер, то выделения в регулярных выражениях в директиве server_name не работали. 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. nginx не собирался под Solaris; ошибка появилась в 0.9.0. nginx could not be built on Solaris; the bug had appeared in 0.9.0. поддержка строки "If-Unmodified-Since" в заголовке запроса клиента. the "If-Unmodified-Since" client request header line support. использование accept(), если accept4() не реализован; ошибка появилась в 0.9.0. fallback to accept() syscall if accept4() was not implemented; the issue had appeared in 0.9.0. nginx не собирался под Cygwin; ошибка появилась в 0.9.0. nginx could not be built on Cygwin; the bug had appeared in 0.9.0. уязвимости в OpenSSL CVE-2010-4180.
Спасибо Максиму Дунину.
for OpenSSL vulnerability CVE-2010-4180.
Thanks to Maxim Dounin.
директивы вида "return CODE message" не работали; ошибка появилась в 0.9.0. "return CODE message" directives did not work; the bug had appeared in 0.9.0. директива keepalive_disable. the "keepalive_disable" directive. директива map поддерживает переменные в качестве значения определяемой переменной. the "map" directive supports variables as value of a defined variable. директива map поддерживает пустые строки в качестве значения первого параметра. the "map" directive supports empty strings as value of the first parameter. директива map поддерживает выражения в первом параметре. the "map" directive supports expressions as the first parameter. страница руководства nginx(8).
Спасибо Сергею Осокину.
nginx(8) manual page.
Thanks to Sergey Osokin.
поддержка accept4() в Linux.
Спасибо Simon Liu.
Linux accept4() support.
Thanks to Simon Liu.
устранение предупреждения линкера о "sys_errlist" и "sys_nerr" под Linux; предупреждение появилось в 0.8.35. elimination of Linux linker warning about "sys_errlist" and "sys_nerr"; the warning had appeared in 0.8.35. при использовании директивы auth_basic в рабочем процессе мог произойти segmentation fault.
Спасибо Михаилу Лалетину.
a segmentation fault might occur in a worker process, if the "auth_basic" directive was used.
Thanks to Michail Laletin.
совместимость с модулем ngx_http_eval_module; ошибка появилась в 0.8.42. compatibility with ngx_http_eval_module; the bug had appeared in 0.8.42.
теперь директива error_page позволяет менять код статуса у редиректа. now the "error_page" directive allows to change a status code in a redirect. директива gzip_disable поддерживает специальную маску degradation. the "gzip_disable" directive supports special "degradation" mask. при использовании файлового AIO могла происходить утечка сокетов.
Спасибо Максиму Дунину.
a socket leak might occurred if file AIO was used.
Thanks to Maxim Dounin.
если в первом сервере не была описана директива listen и нигде явно не описан сервер по умолчанию, то сервером по умолчанию становился следующий сервер с директивой listen; ошибка появилась в 0.8.21. 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.
nginx использовал режим SSL для listen сокета, если для него был установлен любой listen-параметр; ошибка появилась в 0.8.51. nginx used SSL mode for a listen socket if any listen option was set; the bug had appeared in 0.8.51. директива secure_link_expires упразднена. the "secure_link_expires" directive has been canceled. уровень логгирования ошибок resolver'а понижен с уровня alert на error. a logging level of resolver errors has been lowered from "alert" to "error". теперь параметр "ssl" listen-сокета можно устанавливать несколько раз. now a listen socket "ssl" parameter may be set several times. директивы secure_link, secure_link_md5 и secure_link_expires модуля ngx_http_secure_link_module. the "secure_link", "secure_link_md5", and "secure_link_expires" directives of the ngx_http_secure_link_module. ключ -q.
Спасибо Геннадию Махомеду.
the -q switch.
Thanks to Gena Makhomed.
при использовании кэширования рабочие процессы и могли зациклиться во время переконфигурации; ошибка появилась в 0.8.48. worker processes may got caught in an endless loop during reconfiguration, if a caching was used; the bug had appeared in 0.8.48. в директиве gzip_disable.
Спасибо Derrick Petzold.
in the "gzip_disable" directive.
Thanks to Derrick Petzold.
nginx/Windows не мог посылать сигналы stop, quit, reopen, reload процессу, запущенному в другой сессии. nginx/Windows could not send stop, quit, reopen, and reload signals to a process run in other session.
директива image_filter_jpeg_quality поддерживает переменные. the "image_filter_jpeg_quality" directive supports variables. при использовании переменной $geoip_region_name в рабочем процессе мог произойти segmentation fault; ошибка появилась в 0.8.48. 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. ошибки, перехваченные error_page, кэшировались только до следующего запроса; ошибка появилась в 0.8.48. errors intercepted by error_page were cached only for next request; the bug had appeared in 0.8.48. теперь по умолчанию директива server_name имеет значение пустое имя "".
Спасибо Геннадию Махомеду.
now the "server_name" directive default value is an empty name "".
Thanks to Gena Makhomed.
теперь по умолчанию директива server_name_in_redirect имеет значение off. now the "server_name_in_redirect" directive default value is "off". переменные $geoip_dma_code, $geoip_area_code и $geoip_region_name.
Спасибо Christine McGonagle.
the $geoip_dma_code, $geoip_area_code, and $geoip_region_name variables.
Thanks to Christine McGonagle.
директивы proxy_pass, fastcgi_pass, uwsgi_pass и scgi_pass не наследовались в блоки limit_except. the "proxy_pass", "fastcgi_pass", "uwsgi_pass", and "scgi_pass" directives were not inherited inside "limit_except" blocks. директивы proxy_cache_min_uses, fastcgi_cache_min_uses uwsgi_cache_min_uses и scgi_cache_min_uses не работали; ошибка появилась в 0.8.46. 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. директива fastcgi_split_path_info неверно использовала выделения, если в выделения попадала только часть URI.
Спасибо Юрию Тарадаю и Frank Enderle.
the "fastcgi_split_path_info" directive used incorrectly captures, if only parts of an URI were captured.
Thanks to Yuriy Taraday and Frank Enderle.
директива rewrite не экранировала символ ";" при копировании из URI в аргументы.
Спасибо Daisuke Murase.
the "rewrite" directive did not escape a ";" character during copying from URI to query string.
Thanks to Daisuke Murase.
модуль ngx_http_image_filter_module закрывал соединение, если изображение было больше размера image_filter_buffer. the ngx_http_image_filter_module closed a connection, if an image was larger than "image_filter_buffer" size.
переменная $request_time имела неверные значения для подзапросов. $request_time variable had invalid values for subrequests. ошибки, перехваченные error_page, не кэшировались. errors intercepted by error_page could not be cached. если использовался параметр max_size, то cache manager мог зациклиться; ошибка появилась в 0.8.46. 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. директивы proxy_no_cache, fastcgi_no_cache, uwsgi_no_cache и scgi_no_cache теперь влияют только на сохранение закэшированного ответа. now the "proxy_no_cache", "fastcgi_no_cache", "uwsgi_no_cache", and "scgi_no_cache" directives affect on a cached response saving only. директивы proxy_cache_bypass, fastcgi_cache_bypass, uwsgi_cache_bypass и scgi_cache_bypass. the "proxy_cache_bypass", "fastcgi_cache_bypass", "uwsgi_cache_bypass", and "scgi_cache_bypass" directives. nginx не освобождал память в keys_zone кэшей в случае ошибки работы с бэкендом: память освобождалась только по истечении времени неактивности или при недостатке памяти. 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. улучшения в модуле ngx_http_xslt_filter.
Спасибо Laurence Rowe.
ngx_http_xslt_filter improvements.
Thanks to Laurence Rowe.
ответ SSI модуля мог передаваться не полностью после команды include с параметром wait="yes"; ошибка появилась в 0.7.25.
Спасибо Максиму Дунину.
SSI response might be truncated after include with wait="yes"; the bug had appeared in 0.7.25.
Thanks to Maxim Dounin.
директива listen не поддерживала параметр setfib=0. the "listen" directive did not support the "setfib=0" parameter.
теперь nginx по умолчанию не кэширует ответы бэкендов, в заголовке которых есть строка "Set-Cookie". now nginx does not cache by default backend responses, if they have a "Set-Cookie" header line. директива listen поддерживает параметр setfib.
Спасибо Андрею Филонову.
the "listen" directive supports the "setfib" parameter.
Thanks to Andrew Filonov.
директива sub_filter могла изменять регистр букв при частичном совпадении. the "sub_filter" directive might change character case on partial match. совместимость с HP/UX. compatibility with HP/UX. совместимость с компилятором AIX xlC_r. compatibility with AIX xlC_r compiler. nginx считал большие пакеты SSLv2 как обычные текстовые запросы.
Спасибо Miroslaw Jaworski.
nginx treated large SSLv2 packets as plain requests.
Thanks to Miroslaw Jaworski.
ускорение загрузки больших баз geo-диапазонов. large geo ranges base loading speed-up. перенаправление ошибки в "location /zero {return 204;}" без изменения кода ответа оставляло тело ошибки; ошибка появилась в 0.8.42. 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. nginx мог закрывать IPv6 listen сокет во время переконфигурации.
Спасибо Максиму Дунину.
nginx might close IPv6 listen socket during reconfiguration.
Thanks to Maxim Dounin.
переменную $uid_set можно использовать на любой стадии обработки запроса. the $uid_set variable may be used at any request processing stage.
теперь nginx проверяет location'ы, заданные регулярными выражениями, если запрос полностью совпал с location'ом, заданным строкой префикса. Предыдущее поведение появилось в 0.7.1. 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. модуль ngx_http_scgi_module.
Спасибо Manlio Perillo.
the ngx_http_scgi_module.
Thanks to Manlio Perillo.
в директиве return можно добавлять текст ответа. a text answer may be added to a "return" directive.
рабочий процесс nginx/Windows мог завершаться аварийно при запросе файла с неверной кодировкой UTF-8. nginx/Windows worker might be terminated abnormally if a requested file name has invalid UTF-8 encoding. теперь nginx разрешает использовать пробелы в строке запроса. now nginx allows to use spaces in a request line. директива proxy_redirect неправильно изменяла строку "Refresh" в заголовке ответа бэкенда.
Спасибо Андрею Андрееву и Максиму Согину.
the "proxy_redirect" directive changed incorrectly a backend "Refresh" response header line.
Thanks to Andrey Andreew and Max Sogin.
nginx не поддерживал путь без имени хоста в строке "Destination" в заголовке запроса. nginx did not support path without host name in "Destination" request header line.
теперь nginx/Windows игнорирует имя потока файла по умолчанию.
Спасибо Jose Antonio Vazquez Gonzalez.
now nginx/Windows ignores default file stream name.
Thanks to Jose Antonio Vazquez Gonzalez.
модуль ngx_http_uwsgi_module.
Спасибо Roberto De Ioris.
the ngx_http_uwsgi_module.
Thanks to Roberto De Ioris.
директива fastcgi_param со значением, начинающимся со строки "HTTP_", изменяет строку заголовка в запросе клиента. a "fastcgi_param" directive with value starting with "HTTP_" overrides a client request header line. строки "If-Modified-Since", "If-Range" и им подобные в заголовке запроса клиента передавались FastCGI-серверу при кэшировании. the "If-Modified-Since", "If-Range", etc. client request header lines were passed to FastCGI-server while caching. listen unix domain сокет нельзя было изменить во время переконфигурации.
Спасибо Максиму Дунину.
listen unix domain socket could not be changed during reconfiguration.
Thanks to Maxim Dounin.
наследуемая директива alias неправильно работала во вложенном location'е. an inherited "alias" directive worked incorrectly in inclusive location. в комбинации директив alias с переменными и try_files; in "alias" with variables and "try_files" directives combination. listen unix domain и IPv6 сокеты не наследовались во время обновления без перерыва.
Спасибо Максиму Дунину.
listen unix domain and IPv6 sockets did not inherit while online upgrade.
Thanks to Maxim Dounin.
директивы proxy_no_cache и fastcgi_no_cache. the "proxy_no_cache" and "fastcgi_no_cache" directives. теперь при использовании переменной $scheme в директиве rewrite автоматически делается редирект.
Спасибо Piotr Sikora.
now the "rewrite" directive does a redirect automatically if the $scheme variable is used.
Thanks to Piotr Sikora.
теперь задержки в директиве limit_req соответствует описанному алгоритму.
Спасибо Максиму Дунину.
now "limit_req" delay directive conforms to the described algorithm.
Thanks to Maxim Dounin.
переменную $uid_got нельзя было использовать в SSI и перловом модулях. the $uid_got variable might not be used in the SSI and perl modules.
модуль ngx_http_split_clients_module. the ngx_http_split_clients_module. директива map поддерживает ключи больше 255 символов. the "map" directive supports keys more than 255 characters. nginx игнорировал значения "private" и "no-store" в строке "Cache-Control" в заголовке ответа бэкенда. nginx ignored the "private" and "no-store" values in the "Cache-Control" backend response header line. параметр stub в SSI-директиве include не использовался, если пустой ответ имел код 200. a "stub" parameter of an "include" SSI directive was not used, if empty response has 200 status code. если проксированный или FastCGI запрос внутренне перенаправлялся в другой проксированный или FastCGI location, то в рабочем процессе мог произойти segmentation fault; ошибка появилась в 0.8.33.
Спасибо Yichun Zhang.
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.
Thanks to Yichun Zhang.
соединения IMAP к серверу Zimbra могло зависнуть до таймаута.
Спасибо Alan Batie.
IMAP connections may hang until they timed out while talking to Zimbra server.
Thanks to Alan Batie.
модуль ngx_http_dav_module неправильно обрабатывал методы DELETE, COPY и MOVE для симлинков. the ngx_http_dav_module handled incorrectly the DELETE, COPY, and MOVE methods for symlinks. модуль SSI в подзапросах использовал закэшированные в основном запросе значения переменных $query_string, $arg_... и им подобных. values of the $query_string, $arg_..., etc. variables cached in main request were used by the SSI module in subrequests. значение переменной повторно экранировалось после каждого вывода SSI-команды echo; ошибка появилась в 0.6.14. a variable value was repeatedly encoded after each an "echo" SSI-command output; the bug had appeared in 0.6.14. рабочий процесс зависал при запросе файла FIFO.
Спасибо Vicente Aguilar и Максиму Дунину.
a worker process hung if a FIFO file was requested.
Thanks to Vicente Aguilar and Maxim Dounin.
совместимость с OpenSSL-1.0.0 на 64-битном Linux.
Спасибо Максиму Дунину.
OpenSSL-1.0.0 compatibility on 64-bit Linux.
Thanks to Maxim Dounin.
nginx не собирался с параметром --without-http-cache; ошибка появилась в 0.8.35. nginx could not be built --without-http-cache; the bug had appeared in 0.8.35.
теперь charset-фильтр работает до SSI-фильтра. now the charset filter runs before the SSI filter. директива chunked_transfer_encoding. the "chunked_transfer_encoding" directive. символ "&" при копировании в аргументы в правилах rewrite не экранировался. an "&" character was not escaped when it was copied in arguments part in a rewrite rule. nginx мог завершаться аварийно во время обработки сигнала или при использовании директивы timer_resolution на платформах, не поддерживающих методы kqueue или eventport.
Спасибо George Xie и Максиму Дунину.
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.
Thanks to George Xie and Maxim Dounin.
если временные файлы и постоянное место хранения располагались на разных файловых системах, то у постоянных файлов время изменения было неверным.
Спасибо Максиму Дунину.
if temporary files and permanent storage area resided at different file systems, then permanent file modification times were incorrect.
Thanks to Maxim Dounin.
модуль ngx_http_memcached_module мог выдавать ошибку "memcached sent invalid trailer".
Спасибо Максиму Дунину.
ngx_http_memcached_module might issue the error message "memcached sent invalid trailer".
Thanks to Maxim Dounin.
nginx не мог собрать библиотеку zlib-1.2.4 из исходных текстов.
Спасибо Максиму Дунину.
nginx could not built zlib-1.2.4 library using the library sources.
Thanks to Maxim Dounin.
в рабочем процессе происходил segmentation fault, если перед ответом FastCGI-сервера было много вывода в stderr; ошибка появилась в 0.8.34.
Спасибо Максиму Дунину.
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.
Thanks to Maxim Dounin.
nginx не поддерживал все шифры, используемые в клиентских сертификатах.
Спасибо Иннокентию Еникееву.
nginx did not support all ciphers and digests used in client certificates.
Thanks to Innocenty Enikeew.
nginx неправильно кэшировал FastCGI-ответы, если перед ответом было много вывода в stderr. nginx cached incorrectly FastCGI responses if there was large stderr output before response. nginx не поддерживал HTTPS-рефереры. nginx did not support HTTPS referrers. nginx/Windows мог не находить файлы, если путь в конфигурации был задан в другом регистре; ошибка появилась в 0.8.33. nginx/Windows might not find file if path in configuration was given in other character case; the bug had appeared in 0.8.33. переменная $date_local выдавала неверное время, если использовался формат "%s".
Спасибо Максиму Дунину.
the $date_local variable has an incorrect value, if the "%s" format was used.
Thanks to Maxim Dounin.
если ssl_session_cache не был установлен или установлен в none, то при проверке клиентского сертификаты могла происходить ошибка "session id context uninitialized"; ошибка появилась в 0.7.1. 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. geo-диапазон возвращал значение по умолчанию, если диапазон включал в себя одну и более сетей размером /16 и не начинался на границе сети размером /16. a geo range returned default value if the range included two or more /16 networks and did not begin at /16 network boundary. блок, используемый в параметре stub в SSI-директиве include, выводился с MIME-типом "text/plain". a block used in a "stub" parameter of an "include" SSI directive was output with "text/plain" MIME type. $r->sleep() не работал; ошибка появилась в 0.8.11. $r->sleep() did not work; the bug had appeared in 0.8.11.
теперь nginx/Windows игнорирует пробелы в конце URI.
Спасибо Dan Crowley, Core Security Technologies.
now nginx/Windows ignores trailing spaces in URI.
Thanks to Dan Crowley, Core Security Technologies.
теперь nginx/Windows игнорирует короткие имена файлов.
Спасибо Dan Crowley, Core Security Technologies.
now nginx/Windows ignores short files names.
Thanks to Dan Crowley, Core Security Technologies.
теперь keepalive соединения после запросов POST не запрещаются для MSIE 7.0+.
Спасибо Adam Lounds.
now keepalive connections after POST requests are not disabled for MSIE 7.0+.
Thanks to Adam Lounds.
теперь keepalive соединения запрещены для Safari.
Спасибо Joshua Sierles.
now keepalive connections are disabled for Safari.
Thanks to Joshua Sierles.
если проксированный или FastCGI запрос внутренне перенаправлялся в другой проксированный или FastCGI location, то переменная $upstream_response_time могла иметь ненормально большое значение; ошибка появилась в 0.8.7. 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. в рабочем процессе мог произойти segmentation fault при отбрасывания тела запроса; ошибка появилась в 0.8.11. a segmentation fault might occur in a worker process, while discarding a request body; the bug had appeared in 0.8.11.
ошибки при использовании кодировки UTF-8 в ngx_http_autoindex_module.
Спасибо Максиму Дунину.
UTF-8 encoding usage in the ngx_http_autoindex_module.
Thanks to Maxim Dounin.
именованные выделения в регулярных выражениях работали только для двух переменных.
Спасибо Максиму Дунину.
regular expression named captures worked for two names only.
Thanks to Maxim Dounin.
теперь в строке заголовка запроса "Host" используется имя "localhost", если в директиве auth_http указан unix domain сокет.
Спасибо Максиму Дунину.
now the "localhost" name is used in the "Host" request header line, if an unix domain socket is defined in the "auth_http" directive.
Thanks to Maxim Dounin.
nginx не поддерживал передачу chunk'ами для 201-ых ответов.
Спасибо Julian Reich.
nginx did not support chunked transfer encoding for 201 responses.
Thanks to Julian Reich.
если директива "expires modified" выставляла дату в прошлом, то в строке заголовка ответа "Cache-Control" выдавалось отрицательное число.
Спасибо Алексею Капранову.
if the "expires modified" set date in the past, then a negative number was set in the "Cache-Control" response header line.
Thanks to Alex Kapranoff.
теперь директива error_page может перенаправлять ответы со статусом 301 и 302. now the "error_page" directive may redirect the 301 and 302 responses. переменные $geoip_city_continent_code, $geoip_latitude и $geoip_longitude.
Спасибо Arvind Sundararajan.
the $geoip_city_continent_code, $geoip_latitude, and $geoip_longitude variables.
Thanks to Arvind Sundararajan.
модуль ngx_http_image_filter_module теперь всегда удаляет EXIF и другие данные, если они занимают больше 5% в JPEG-файле. 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. nginx закрывал соединение при запросе закэшированного ответа с пустым телом.
Спасибо Piotr Sikora.
nginx closed a connection if a cached response had an empty body.
Thanks to Piotr Sikora.
nginx мог не собираться gcc 4.x при использовании оптимизации -O2 и выше.
Спасибо Максиму Дунину и Денису Латыпову.
nginx might not be built by gcc 4.x if the -O2 or higher optimization option was used.
Thanks to Maxim Dounin and Denis F. Latypoff.
регулярные выражения в location всегда тестировались с учётом регистра; ошибка появилась в 0.8.25. regular expressions in location were always tested in case-sensitive mode; the bug had appeared in 0.8.25. nginx кэшировал 304 ответ, если в заголовке проксируемого запроса была строка "If-None-Match".
Спасибо Tim Dettrick и David Kostal.
nginx cached a 304 response if there was the "If-None-Match" header line in a proxied request.
Thanks to Tim Dettrick and David Kostal.
nginx/Windows пытался дважды удалить временный файл при перезаписи уже существующего файла. nginx/Windows tried to delete a temporary file twice if the file should replace an already existent file.
теперь по умолчанию размер буфера директивы large_client_header_buffers равен 8K.
Спасибо Andrew Cholakian.
now the default buffer size of the "large_client_header_buffers" directive is 8K.
Thanks to Andrew Cholakian.
файл conf/fastcgi.conf для простых конфигураций FastCGI. the conf/fastcgi.conf for simple FastCGI configurations. nginx/Windows пытался дважды переименовать временный файл при перезаписи уже существующего файла. nginx/Windows tried to rename a temporary file twice if the file should replace an already existent file. ошибки double free or corruption, возникающей, если имя хоста не было найдено; ошибка появилась в 0.8.22.
Спасибо Константину Свисту.
of "double free or corruption" error issued if host could not be resolved; the bug had appeared in 0.8.22.
Thanks to Konstantin Svist.
в использовании libatomic на некоторых платформах.
Спасибо W-Mark Kubacki.
in libatomic usage on some platforms.
Thanks to W-Mark Kubacki.
теперь для проксируемых ответов HTTP/0.9 в лог пишется код ответа "009". now the "009" status code is written to an access log for proxied HTTP/0.9 responses. директивы addition_types, charset_types, gzip_types, ssi_types, sub_filter_types и xslt_types поддерживают параметр "*". the "addition_types", "charset_types", "gzip_types", "ssi_types", "sub_filter_types", and "xslt_types" directives support an "*" parameter. использование встроенных атомарных операций GCC 4.1+.
Спасибо W-Mark Kubacki.
GCC 4.1+ built-in atomic operations usage.
Thanks to W-Mark Kubacki.
параметр --with-libatomic[=DIR] в configure.
Спасибо W-Mark Kubacki.
the --with-libatomic[=DIR] option in the configure.
Thanks to W-Mark Kubacki.
listen unix domain сокет имели ограниченные права доступа. listen unix domain socket had limited access rights. закэшированные ответы ответов HTTP/0.9 неправильно обрабатывались. cached HTTP/0.9 responses were handled incorrectly. именованные выделения в регулярных выражениях, заданные как "?P<...>", не работали в директиве server_name.
Спасибо Максиму Дунину.
regular expression named captures given by "?P<...>" did not work in a "server_name" directive.
Thanks to Maxim Dounin.
nginx не собирался с параметром --without-pcre; ошибка появилась в 0.8.25. nginx could not be built with the --without-pcre parameter; the bug had appeared in 0.8.25. регулярные выражения не работали в nginx/Windows; ошибка появилась в 0.8.25. regular expressions did not work in nginx/Windows; the bug had appeared in 0.8.25. ошибки при использовании выделений в директиве rewrite; ошибка появилась в 0.8.25. in captures usage in "rewrite" directive; the bug had appeared in 0.8.25. nginx не собирался без параметра --with-debug; ошибка появилась в 0.8.25. nginx could not be built without the --with-debug option; the bug had appeared in 0.8.25. теперь в лог ошибок не пишется сообщение, если переменная не найдена с помощью метода $r->variable(). now no message is written in an error log if a variable is not found by $r->variable() method. модуль ngx_http_degradation_module. the ngx_http_degradation_module. именованные выделения в регулярных выражениях. regular expression named captures. теперь при использовании переменных в директиве proxy_pass не требуется задавать URI. now URI part is not required a "proxy_pass" directive if variables are used. теперь директива msie_padding работает и для Chrome. now the "msie_padding" directive works for Chrome too. в рабочем процессе происходил segmentation fault при недостатке памяти; ошибка появилась в 0.8.18. a segmentation fault occurred in a worker process on low memory condition; the bug had appeared in 0.8.18. nginx передавал сжатые ответы клиентам, не поддерживающим сжатие, при настройках gzip_static on и gzip_vary off; ошибка появилась в 0.8.16. 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. nginx всегда добавлял строку "Content-Encoding: gzip" в заголовок 304-ых ответов модуля ngx_http_gzip_static_module. nginx always added "Content-Encoding: gzip" response header line in 304 responses sent by ngx_http_gzip_static_module. nginx не собирался без параметра --with-debug; ошибка появилась в 0.8.23. nginx could not be built without the --with-debug option; the bug had appeared in 0.8.23. параметр "unix:" в директиве set_real_ip_from неправильно наследовался с предыдущего уровня. the "unix:" parameter of the "set_real_ip_from" directive inherited incorrectly from previous level. в resolver'е при определении пустого имени. in resolving empty name. теперь SSL/TLS renegotiation запрещён.
Спасибо Максиму Дунину.
now SSL/TLS renegotiation is disabled.
Thanks to Maxim Dounin.
listen unix domain сокет не наследовался во время обновления без перерыва. listen unix domain socket did not inherit while online upgrade. параметр "unix:" в директиве set_real_ip_from не работал без ещё одной директивы с любым IP-адресом. the "unix:" parameter of the "set_real_ip_from" directive did not without yet another directive with any IP address. segmentation fault и зацикливания в resolver'е. segmentation fault and infinite looping in resolver. в resolver'е.
Спасибо Артёму Бохану.
in resolver.
Thanks to Artem Bokhan.
директивы proxy_bind, fastcgi_bind и memcached_bind. the "proxy_bind", "fastcgi_bind", and "memcached_bind" directives. директивы access и deny поддерживают IPv6. the "access" and the "deny" directives support IPv6. директива set_real_ip_from поддерживает IPv6 адреса в заголовках запроса. the "set_real_ip_from" directive supports IPv6 addresses in request headers. параметр "unix:" в директиве set_real_ip_from. the "unix:" parameter of the "set_real_ip_from" directive. nginx не удалял unix domain сокет после тестирования конфигурации. nginx did not delete unix domain socket after configuration testing. nginx удалял unix domain сокет во время обновления без перерыва. nginx deleted unix domain socket while online upgrade. оператор "!-x" не работал.
Спасибо Максиму Дунину.
the "!-x" operator did not work.
Thanks to Maxim Dounin.
в рабочем процессе мог произойти segmentation fault при использовании limit_rate в HTTPS сервере.
Спасибо Максиму Дунину.
a segmentation fault might occur in a worker process, if limit_rate was used in HTTPS server.
Thanks to Maxim Dounin.
при записи в лог переменной $limit_rate в рабочем процессе происходил segmentation fault.
Спасибо Максиму Дунину.
a segmentation fault might occur in a worker process while $limit_rate logging.
Thanks to Maxim Dounin.
в рабочем процессе мог произойти segmentation fault, если внутри блока server не было директивы listen; ошибка появилась в 0.8.21. 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.
теперь ключ -V показывает статус поддержки TLS SNI. now the "-V" switch shows TLS SNI support. директива listen модуля HTTP поддерживает unix domain сокеты.
Спасибо Hongli Lai.
the "listen" directive of the HTTP module supports unix domain sockets.
Thanks to Hongli Lai.
параметр "default_server" в директиве listen. the "default_server" parameter of the "listen" directive. теперь параметр "default" не обязателен для установки параметров listen-сокета. now a "default" parameter is not required to set listen socket options. nginx не поддерживал даты в 2038 году на 32-битных платформах; nginx did not support dates in 2038 year on 32-bit platforms; утечки сокетов; ошибка появилась в 0.8.11. socket leak; the bug had appeared in 0.8.11.
теперь по умолчанию используются следующие шифры SSL: "HIGH:!ADH:!MD5". now default SSL ciphers are "HIGH:!ADH:!MD5". модуль ngx_http_autoindex_module не показывал последний слэш для линков на каталоги; ошибка появилась в 0.7.15. the ngx_http_autoindex_module did not show the trailing slash in links to a directory; the bug had appeared in 0.7.15. nginx не закрывал лог, заданный параметром конфигурации --error-log-path; ошибка появилась в 0.7.53. nginx did not close a log file set by the --error-log-path configuration option; the bug had appeared in 0.7.53. nginx не считал запятую разделителем в строке "Cache-Control" в заголовке ответа бэкенда. nginx did not treat a comma as separator in the "Cache-Control" backend response header line. nginx/Windows мог не создать временный файл, файл в кэше или файл с помощью директив proxy/fastcgi_store, если рабочий процесс не имел достаточно прав для работы с каталогами верхнего уровня. 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. строки "Set-Cookie" и "P3P" в заголовке ответа FastCGI-сервера не скрывались при кэшировании, если не использовались директивы fastcgi_hide_header с любыми параметрами. 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. nginx неверно считал размер кэша на диске. nginx counted incorrectly disk cache size. теперь протокол SSLv2 по умолчанию запрещён. now SSLv2 protocol is disabled by default. теперь по умолчанию используются следующие шифры SSL: "ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM". now default SSL ciphers are "ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM". директива limit_req не работала; ошибка появилась в 0.8.18. a "limit_req" directive did not work; the bug had appeared in 0.8.18. директива read_ahead. the "read_ahead" directive. теперь можно использовать несколько директив perl_modules. now several "perl_modules" directives may be used. директивы limit_req_log_level и limit_conn_log_level. the "limit_req_log_level" and "limit_conn_log_level" directives. теперь директива limit_req соответствует алгоритму leaky bucket.
Спасибо Максиму Дунину.
now "limit_req" directive conforms to the leaky bucket algorithm.
Thanks to Maxim Dounin.
nginx не работал на Linux/sparc.
Спасибо Marcus Ramberg.
nginx did not work on Linux/sparc.
Thanks to Marcus Ramberg.
nginx слал символ '\0' в строке "Location" в заголовке в ответе на запрос MKCOL.
Спасибо Xie Zhenye.
nginx sent '\0' in a "Location" response header line on MKCOL request.
Thanks to Xie Zhenye.
вместо кода ответа 499 в лог записывался код 0; ошибка появилась в 0.8.11. zero status code was logged instead of 499 status code; the bug had appeared in 0.8.11. утечки сокетов; ошибка появилась в 0.8.11. socket leak; the bug had appeared in 0.8.11.
теперь символы "/../" запрещены в строке "Destination" в заголовке запроса. now "/../" are disabled in "Destination" request header line. теперь значение переменной $host всегда в нижнем регистре. now $host variable value is always low case. переменная $ssl_session_id. the $ssl_session_id variable. утечки сокетов; ошибка появилась в 0.8.11. socket leak; the bug had appeared in 0.8.11. директива image_filter_transparency. the "image_filter_transparency" directive. директива "addition_types" была неверно названа "addtion_types". "addition_types" directive was incorrectly named "addtion_types". порчи кэша resolver'а.
Спасибо Matthew Dempsky.
resolver cache poisoning.
Thanks to Matthew Dempsky.
утечки памяти в resolver'е.
Спасибо Matthew Dempsky.
memory leak in resolver.
Thanks to Matthew Dempsky.
неверная строка запроса в переменной $request записывалась в access_log только при использовании error_log на уровне info или debug. invalid request line in $request variable was written in access_log only if error_log was set to "info" or "debug" level. в поддержке альфа-канала PNG в модуле ngx_http_image_filter_module. in PNG alpha-channel support in the ngx_http_image_filter_module. nginx всегда добавлял строку "Vary: Accept-Encoding" в заголовок ответа, если обе директивы gzip_static и gzip_vary были включены. nginx always added "Vary: Accept-Encoding" response header line, if both "gzip_static" and "gzip_vary" were on. в поддержке кодировки UTF-8 директивой try_files в nginx/Windows. in UTF-8 encoding support by "try_files" directive in nginx/Windows. ошибки при использовании post_action; ошибка появилась в 0.8.11.
Спасибо Игорю Артемьеву.
in "post_action" directive usage; the bug had appeared in 0.8.11.
Thanks to Igor Artemiev.
при обработке специально созданного запроса в рабочем процессе мог произойти segmentation fault.
Спасибо Chris Ries.
a segmentation fault might occur in worker process while specially crafted request handling.
Thanks to Chris Ries.
если были описаны имена .domain.tld, .sub.domain.tld и .domain-some.tld, то имя .sub.domain.tld попадало под маску .domain.tld. if names .domain.tld, .sub.domain.tld, and .domain-some.tld were defined, then the name .sub.domain.tld was matched by .domain.tld. в поддержке прозрачности в модуле ngx_http_image_filter_module. in transparency support in the ngx_http_image_filter_module. в файловом AIO. in file AIO. ошибки при использовании X-Accel-Redirect; ошибка появилась в 0.8.11. in X-Accel-Redirect usage; the bug had appeared in 0.8.11. ошибки при использовании встроенного перла; ошибка появилась в 0.8.11. in embedded perl module; the bug had appeared in 0.8.11.
устаревший закэшированный запрос мог залипнуть в состоянии "UPDATING". an expired cached response might stick in the "UPDATING" state. при использовании error_log на уровне info или debug в рабочем процессе мог произойти segmentation fault.
Спасибо Сергею Боченкову.
a segmentation fault might occur in worker process, if error_log was set to info or debug level.
Thanks to Sergey Bochenkov.
ошибки при использовании встроенного перла; ошибка появилась в 0.8.11. in embedded perl module; the bug had appeared in 0.8.11. директива error_page не перенаправляла ошибку 413; ошибка появилась в 0.6.10. an "error_page" directive did not redirect a 413 error; the bug had appeared in 0.6.10.
в директиве "aio sendfile"; ошибка появилась в 0.8.12. in the "aio sendfile" directive; the bug had appeared in 0.8.12. nginx не собирался без параметра --with-file-aio на FreeBSD; ошибка появилась в 0.8.12. nginx could not be built without the --with-file-aio option on FreeBSD; the bug had appeared in 0.8.12. параметр sendfile в директиве aio во FreeBSD. the "sendfile" parameter in the "aio" directive on FreeBSD. ошибки при использовании try_files; ошибка появилась в 0.8.11. in try_files; the bug had appeared in 0.8.11. ошибки при использовании memcached; ошибка появилась в 0.8.11. in memcached; the bug had appeared in 0.8.11. теперь директива "gzip_disable msie6" не запрещает сжатие для MSIE 6.0 SV1. now directive "gzip_disable msie6" does not disable gzipping for MSIE 6.0 SV1. поддержка файлового AIO во FreeBSD и Linux. file AIO support on FreeBSD and Linux. директива directio_alignment. the "directio_alignment" directive. утечек памяти при использовании базы GeoIP City. memory leaks if GeoIP City database was used. ошибки при копировании временных файлов в постоянное место хранения; ошибка появилась в 0.8.9. in copying temporary files to permanent storage area; the bug had appeared in 0.8.9. теперь стартовый загрузчик кэша работает в отдельном процесс; это должно улучшить обработку больших кэшей. now the start cache loader runs in a separate process; this should improve large caches handling. теперь временные файлы и постоянное место хранения могут располагаться на разных файловых системах. now temporary files and permanent storage area may reside at different file systems. в обработке заголовков ответа, разделённых в FastCGI-записях. in handling FastCGI headers split in records. если запрос обрабатывался в двух проксированных или FastCGI location'ах и в первом из них использовалось кэширование, то в рабочем процессе происходил segmentation fault; ошибка появилась в 0.8.7. 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. минимальная поддерживаемая версия OpenSSL—0.9.7. minimum supported OpenSSL version is 0.9.7. параметр ask директивы ssl_verify_client изменён на параметр optional и теперь он проверяет клиентский сертификат, если он был предложен.
Спасибо Brice Figureau.
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.
Thanks to Brice Figureau.
переменная $ssl_client_verify.
Спасибо Brice Figureau.
the $ssl_client_verify variable.
Thanks to Brice Figureau.
директива ssl_crl.
Спасибо Brice Figureau.
the "ssl_crl" directive.
Thanks to Brice Figureau.
параметр proxy директивы geo. the "proxy" parameter of the "geo" directive. директива image_filter поддерживает переменные для задания размеров. the "image_filter" directive supports variables for setting size. использование переменной $ssl_client_cert портило память; ошибка появилась в 0.7.7.
Спасибо Сергею Журавлёву.
the $ssl_client_cert variable usage corrupted memory; the bug had appeared in 0.7.7.
Thanks to Sergey Zhuravlev.
директивы proxy_pass_header и fastcgi_pass_header" не передавали клиенту строки "X-Accel-Redirect", "X-Accel-Limit-Rate", "X-Accel-Buffering" и "X-Accel-Charset" из заголовка ответа бэкенда.
Спасибо Максиму Дунину.
"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.
Thanks to Maxim Dounin.
в обработке строк "Last-Modified" и "Accept-Ranges" в заголовке ответа бэкенда; ошибка появилась в 0.7.44.
Спасибо Максиму Дунину.
in handling "Last-Modified" and "Accept-Ranges" backend response header lines; the bug had appeared in 0.7.44.
Thanks to Maxim Dounin.
ошибки "[alert] zero size buf" при получении пустых ответы в подзапросах; ошибка появилась в 0.8.5. the "[alert] zero size buf" error if subrequest returns an empty response; the bug had appeared in 0.8.5.
модуль ngx_http_geoip_module. the ngx_http_geoip_module. XSLT-фильтр мог выдавать ошибку "not well formed XML document" для правильного документа.
Спасибо Kuramoto Eiji.
XSLT filter may fail with message "not well formed XML document" for valid XML document.
Thanks to Kuramoto Eiji.
в MacOSX, Cygwin и nginx/Windows при проверке location'ов, заданных регулярным выражением, теперь всегда делается сравнение без учёта регистра символов. now in MacOSX, Cygwin, and nginx/Windows locations given by a regular expression are always tested in case insensitive mode. теперь nginx/Windows игнорирует точки в конце URI.
Спасибо Hugo Leisink.
now nginx/Windows ignores trailing dots in URI.
Thanks to Hugo Leisink.
имя файла указанного в --conf-path игнорировалось при установке; ошибка появилась в 0.6.6.
Спасибо Максиму Дунину.
name of file specified in --conf-path was not honored during installation; the bug had appeared in 0.6.6.
Thanks to Maxim Dounin.
теперь nginx разрешает подчёркивания в методе запроса. now nginx allows underscores in a request method. при использовании HTTP Basic-аутентификации на Windows для неверных имени/пароля возвращалась 500-ая ошибка. a 500 error code was returned for invalid login/password while HTTP Basic authentication on Windows. ответы модуля ngx_http_perl_module не работали в подзапросах. ngx_http_perl_module responses did not work in subrequests. в модуле ngx_http_limit_req_module.
Спасибо Максиму Дунину.
in ngx_http_limit_req_module.
Thanks to Maxim Dounin.
nginx не собирался с параметром --without-http-cache; ошибка появилась в 0.8.3. nginx could not be built --without-http-cache; the bug had appeared in 0.8.3. переменная $upstream_cache_status. the $upstream_cache_status variable. nginx не собирался на MacOSX 10.6. nginx could not be built on MacOSX 10.6. nginx не собирался с параметром --without-http-cache; ошибка появилась в 0.8.2. nginx could not be built --without-http-cache; the bug had appeared in 0.8.2. если использовался перехват 401 ошибки от бэкенда и бэкенд не возвращал строку "WWW-Authenticate" в заголовке ответа, то в рабочем процессе происходил segmentation fault.
Спасибо Евгению Мычло.
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.
Thanks to Eugene Mychlo.
во взаимодействии open_file_cache и proxy/fastcgi кэша на старте. in open_file_cache and proxy/fastcgi cache interaction on start up. open_file_cache мог кэшировать открытые файлы очень долго; ошибка появилась в 0.7.4. open_file_cache might cache open file descriptors too long; the bug had appeared in 0.7.4. параметр updating в директивах proxy_cache_use_stale и fastcgi_cache_use_stale. the "updating" parameter in "proxy_cache_use_stale" and "fastcgi_cache_use_stale" directives. строки "If-Modified-Since", "If-Range" и им подобные в заголовке запроса клиента передавались бэкенду при кэшировании, если не использовалась директива proxy_set_header с любыми параметрами. 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. строки "Set-Cookie" и "P3P" в заголовке ответа бэкенда не скрывались при кэшировании, если не использовались директивы proxy_hide_header/fastcgi_hide_header с любыми параметрами. 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. модуль ngx_http_image_filter_module не понимал формат GIF87a.
Спасибо Денису Ильиных.
the ngx_http_image_filter_module did not support GIF87a format.
Thanks to Denis Ilyinyh.
nginx не собирался на Solaris 10 и более ранних; ошибка появилась в 0.7.56. nginx could not be built modules on Solaris 10 and early; the bug had appeared in 0.7.56.
директива keepalive_requests. the "keepalive_requests" directive. директива limit_rate_after.
Спасибо Ivan Debnar.
the "limit_rate_after" directive.
Thanks to Ivan Debnar.
XSLT-фильтр не работал в подзапросах. XLST filter did not work in subrequests. обработке относительных путей в nginx/Windows. in relative paths handling in nginx/Windows. в proxy_store, fastcgi_store, proxy_cache и fastcgi_cache в nginx/Windows. in proxy_store, fastcgi_store, proxy_cache, and fastcgi_cache in nginx/Windows. в обработке ошибок выделения памяти.
Спасибо Максиму Дунину и Кириллу Коринскому.
in memory allocation error handling.
Thanks to Maxim Dounin and Kirill A. Korinskiy.
директивы proxy_cache_methods и fastcgi_cache_methods. the "proxy_cache_methods" and "fastcgi_cache_methods" directives. утечки сокетов; ошибка появилась в 0.7.25.
Спасибо Максиму Дунину.
socket leak; the bug had appeared in 0.7.25.
Thanks to Maxim Dounin.
при использовании переменной $request_body в рабочем процессе происходил segmentation fault, если в запросе не было тела; ошибка появилась в 0.7.58. a segmentation fault occurred in worker process, if a request had no body and the $request_body variable was used;
the bug had appeared in 0.7.58.
SSL-модули могли не собираться на Solaris и Linux; ошибка появилась в 0.7.56. the SSL modules might not built on Solaris and Linux;
the bug had appeared in 0.7.56.
ответы модуля ngx_http_xslt_filter_module не обрабатывались SSI-, charset- и gzip-фильтрами. ngx_http_xslt_filter_module responses were not handled by SSI, charset, and gzip filters. директива charset не ставила кодировку для ответов модуля ngx_http_gzip_static_module. a "charset" directive did not set a charset to ngx_http_gzip_static_module responses.
директива listen почтового прокси-сервера поддерживает IPv6. a "listen" directive of the mail proxy module supports IPv6. директива image_filter_jpeg_quality. the "image_filter_jpeg_quality" directive. директива client_body_in_single_buffer. the "client_body_in_single_buffer" directive. переменная $request_body. the $request_body variable. в модуле ngx_http_autoindex_module в ссылках на имена файлов, содержащих символ ":". in ngx_http_autoindex_module in file name links having a ":" symbol in the name. процедура "make upgrade" не работала; ошибка появилась в 0.7.53.
Спасибо Денису Латыпову.
"make upgrade" procedure did not work; the bug had appeared in 0.7.53.
Thanks to Denis F. Latypoff.
при перенаправлении ошибок модуля ngx_http_image_filter_module в именованный location в рабочем процессе происходил floating-point fault; ошибка появилась в 0.7.56. 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. nginx/Windows поддерживает IPv6 в директиве listen модуля HTTP. nginx/Windows supports IPv6 in a "listen" directive of the HTTP module. в модуле ngx_http_image_filter_module. in ngx_http_image_filter_module. параметры http_XXX в директивах proxy_cache_use_stale и fastcgi_cache_use_stale не работали. the http_XXX parameters in "proxy_cache_use_stale" and "fastcgi_cache_use_stale" directives did not work. fastcgi кэш не кэшировал ответы, состоящие только из заголовка. fastcgi cache did not cache header only responses. ошибки "select() failed (9: Bad file descriptor)" в nginx/Unix и "select() failed (10038: ...)" в nginx/Windows. of "select() failed (9: Bad file descriptor)" error in nginx/Unix and "select() failed (10038: ...)" error in nginx/Windows. при использовании директивы debug_connection в рабочем процессе мог произойти segmentation fault; ошибка появилась в 0.7.54. a segmentation fault might occur in worker process, if an "debug_connection" directive was used; the bug had appeared in 0.7.54. в сборке модуля ngx_http_image_filter_module. fix ngx_http_image_filter_module building errors. файлы больше 2G не передавались с использованием $r->sendfile.
Спасибо Максиму Дунину.
the files bigger than 2G could not be transferred using $r->sendfile.
Thanks to Maxim Dounin.
модуль ngx_http_image_filter_module. the ngx_http_image_filter_module. директивы proxy_ignore_headers и fastcgi_ignore_headers. the "proxy_ignore_headers" and "fastcgi_ignore_headers" directives. при использовании переменных "open_file_cache_errors on" в рабочем процессе мог произойти segmentation fault; ошибка появилась в 0.7.53. 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. директива "port_in_redirect off" не работала; ошибка появилась в 0.7.39. the "port_in_redirect off" directive did not work; the bug had appeared in 0.7.39. улучшение обработки ошибок метода select. improve handling of "select" method errors. ошибки "select() failed (10022: ...)" в nginx/Windows. of "select() failed (10022: ...)" error in nginx/Windows. в текстовых сообщениях об ошибках в nginx/Windows; ошибка появилась в 0.7.53. in error text descriptions in nginx/Windows; the bug had appeared in 0.7.53. теперь лог, указанный в --error-log-path, создаётся с самого начала работы. now a log set by --error-log-path is created from the very start-up. теперь ошибки и предупреждения при старте записываются в error_log и выводятся на stderr. now the start up errors and warnings are outputted to an error_log and stderr. при сборке с пустым параметром --prefix= nginx использует как префикс каталог, в котором он был запущен. the empty --prefix= configure parameter forces nginx to use a directory where it was run as prefix. ключ -p. the -p switch. ключ -s на Unix-платформах. the -s switch on Unix platforms. ключи -? и -h.
Спасибо Jerome Loyet.
the -? and -h switches.
Thanks to Jerome Loyet.
теперь ключи можно задавать в сжатой форме. now switches may be set in condensed form. nginx/Windows не работал, если файл конфигурации был задан ключом -c. nginx/Windows did not work if configuration file was given by the -c switch. при использовании директив proxy_store, fastcgi_store, proxy_cache или fastcgi_cache временные файлы могли не удаляться.
Спасибо Максиму Дунину.
temporary files might be not removed if the "proxy_store", "fastcgi_store", "proxy_cache", or "fastcgi_cache" were used.
Thanks to Maxim Dounin.
в заголовке Auth-Method запроса серверу аутентификации почтового прокси-сервера передавалось неверное значение; ошибка появилась в 0.7.34.
Спасибо Simon Lecaille.
an incorrect value was passed to mail proxy authentication server in "Auth-Method" header line; the bug had appeared
in 0.7.34.
Thanks to Simon Lecaille.
при логгировании на Linux не писались текстовые описания системных ошибок; ошибка появилась в 0.7.45. system error text descriptions were not logged on Linux;
the bug had appeared in 0.7.45.
директива fastcgi_cache_min_uses не работала.
Спасибо Андрею Воробьёву.
the "fastcgi_cache_min_uses" directive did not work.
Thanks to Andrew Vorobyoff.
первая бинарная версия под Windows. the first native Windows binary release. корректная обработка метода HEAD при кэшировании. in processing HEAD method while caching. корректная обработка строк "If-Modified-Since", "If-Range" и им подобных в заголовке запроса клиента при кэшировании. in processing the "If-Modified-Since", "If-Range", etc. client request header lines while caching. теперь строки "Set-Cookie" и "P3P" скрываются в заголовке ответа для закэшированных ответов. now the "Set-Cookie" and "P3P" header lines are hidden in cacheable responses. если nginx был собран с модулем ngx_http_perl_module и perl поддерживал потоки, то при выходе основного процесса могла выдаваться ошибка "panic: MUTEX_LOCK". 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. nginx не собирался с параметром --without-http-cache; ошибка появилась в 0.7.48. nginx could not be built --without-http-cache; the bug had appeared in 0.7.48. nginx не собирался на платформах, отличных от i386, amd64, sparc и ppc; ошибка появилась в 0.7.42. nginx could not be built on platforms different from i386, amd64, sparc, and ppc; the bug had appeared in 0.7.42. директива try_files поддерживает код ответа в последнем параметре. the "try_files" directive supports a response code in the fallback parameter. теперь в директиве return можно использовать любой код ответа. now any response code can be used in the "return" directive. директива error_page делала внешний редирект без строки запроса; ошибка появилась в 0.7.44. the "error_page" directive made an external redirect without query string; the bug had appeared in 0.7.44. если сервера слушали на нескольких явно описанных адресах, то виртуальные сервера могли не работать; ошибка появилась в 0.7.39. if servers listened on several defined explicitly addresses, then virtual servers might not work; the bug had appeared in 0.7.39. переменные $arg_... не работали; ошибка появилась в 0.7.49. the $arg_... variables did not work; the bug had appeared in 0.7.49. при использовании переменных $arg_... в рабочем процессе мог произойти segmentation fault; ошибка появилась в 0.7.48. a segmentation fault might occur in worker process, if the $arg_... variables were used; the bug had appeared in 0.7.48. директива proxy_cache_key. the "proxy_cache_key" directive. теперь nginx учитывает при кэшировании строки "X-Accel-Expires", "Expires" и "Cache-Control" в заголовке ответа бэкенда. now nginx takes into account the "X-Accel-Expires", "Expires", and "Cache-Control" header lines in a backend response. теперь nginx кэширует только ответы на запросы GET. now nginx caches responses for the GET requests only. директива fastcgi_cache_key не наследовалась. the "fastcgi_cache_key" directive was not inherited. переменные $arg_... не работали с SSI-подзапросами.
Спасибо Максиму Дунину.
the $arg_... variables did not work with SSI subrequests.
Thanks to Maxim Dounin.
nginx не собирался с библиотекой uclibc.
Спасибо Timothy Redaelli.
nginx could not be built with uclibc library.
Thanks to Timothy Redaelli.
nginx не собирался на OpenBSD; ошибка появилась в 0.7.46. nginx could not be built on OpenBSD; the bug had appeared in 0.7.46.
nginx не собирался на FreeBSD 6 и более ранних версиях; ошибка появилась в 0.7.46. nginx could not be built on FreeBSD 6 and early versions; the bug had appeared in 0.7.46. nginx не собирался на MacOSX; ошибка появилась в 0.7.46. nginx could not be built on MacOSX; the bug had appeared in 0.7.46. если использовался параметр max_size, то cache manager мог удалить весь кэш; ошибка появилась в 0.7.46. if the "max_size" parameter was set, then the cache manager might purge a whole cache; the bug had appeared in 0.7.46. в рабочем процессе мог произойти segmentation fault, если директивы proxy_cache/fastcgi_cache и proxy_cache_valid/ fastcgi_cache_valid не были заданы на одном уровне; ошибка появилась в 0.7.46. 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. в рабочем процессе мог произойти segmentation fault при перенаправлении запроса проксированному или FastCGI-серверу с помощью error_page или try_files; ошибка появилась в 0.7.44. 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. архив предыдущего релиза был неверным. the previous release tarball was incorrect. теперь директивы proxy_cache и proxy_cache_valid можно задавать на разных уровнях. now the "proxy_cache" and the "proxy_cache_valid" directives can be set on different levels. параметр clean_time в директиве proxy_cache_path удалён. the "clean_time" parameter of the "proxy_cache_path" directive is canceled. параметр max_size в директиве proxy_cache_path. the "max_size" parameter of the "proxy_cache_path" directive. предварительная поддержка кэширования в модуле ngx_http_fastcgi_module. the ngx_http_fastcgi_module preliminary cache support. теперь при ошибках выделения в разделяемой памяти в логе указываются названия директивы и зоны. now on shared memory allocation errors directive and zone names are logged. директива "add_header last-modified ''" не удаляла в заголовке ответа строку "Last-Modified"; ошибка появилась в 0.7.44. the directive "add_header last-modified ''" did not delete a "Last-Modified" response header line; the bug had appeared in 0.7.44. в директиве auth_basic_user_file не работал относительный путь, заданный строкой без переменных; ошибка появилась в 0.7.44.
Спасибо Jerome Loyet.
a relative path in the "auth_basic_user_file" directive given without variables did not work; the bug had appeared in 0.7.44.
Thanks to Jerome Loyet.
в директиве alias, заданной переменными без ссылок на выделения в регулярных выражениях; ошибка появилась в 0.7.42. in an "alias" directive given using variables without references to captures of regular expressions; the bug had appeared in 0.7.42.
предварительная поддержка кэширования в модуле ngx_http_proxy_module. the ngx_http_proxy_module preliminary cache support. параметр --with-pcre в configure. the --with-pcre option in the configure. теперь директива try_files может быть использована на уровне server. the "try_files" directive is now allowed on the server block level. директива try_files неправильно обрабатывала строку запроса в последнем параметре. the "try_files" directive handled incorrectly a query string in a fallback parameter. директива try_files могла неверно тестировать каталоги. the "try_files" directive might test incorrectly directories. если для пары адрес:порт описан только один сервер, то выделения в регулярных выражениях в директиве server_name не работали. if there was a single server for given address:port pair, then captures in regular expressions in a "server_name" directive did not work. запрос обрабатывался неверно, если директива root использовала переменные; ошибка появилась в 0.7.42. a request was handled incorrectly, if a "root" directive used variables; the bug had appeared in 0.7.42. если сервер слушал на адресах типа "*", то значение переменной $server_addr было "0.0.0.0"; ошибка появилась в 0.7.36. 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. ошибка "Invalid argument", возвращаемая setsockopt(TCP_NODELAY) на Solaris, теперь игнорируется. now the "Invalid argument" error returned by setsockopt(TCP_NODELAY) on Solaris, is ignored. при отсутствии файла, указанного в директиве auth_basic_user_file, теперь возвращается ошибка 403 вместо 500. 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. директива auth_basic_user_file поддерживает переменные.
Спасибо Кириллу Коринскому.
the "auth_basic_user_file" directive supports variables.
Thanks to Kirill A. Korinskiy.
директива listen поддерживает параметр ipv6only.
Спасибо Zhang Hua.
the "listen" directive supports the "ipv6only" parameter.
Thanks to Zhang Hua.
в директиве alias со ссылками на выделения в регулярных выражениях; ошибка появилась в 0.7.40. in an "alias" directive with references to captures of regular expressions; the bug had appeared in 0.7.40. совместимость с Tru64 UNIX.
Спасибо Dustin Marquess.
compatibility with Tru64 UNIX.
Thanks to Dustin Marquess.
nginx не собирался без библиотеки PCRE; ошибка появилась в 0.7.41. nginx could not be built without PCRE library; the bug had appeared in 0.7.41.
в рабочем процессе мог произойти segmentation fault, если в server_name или location были выделения в регулярных выражениях; ошибка появилась в 0.7.40.
Спасибо Владимиру Сопоту.
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.
Thanks to Vladimir Sopot.
директива location поддерживает выделения в регулярных выражениях. the "location" directive supports captures in regular expressions. директиву alias с ссылками на выделения в регулярных выражениях можно использовать внутри location'а, заданного регулярным выражением с выделениями. an "alias" directive with capture references may be used inside a location given by a regular expression with captures. директива server_name поддерживает выделения в регулярных выражениях. the "server_name" directive supports captures in regular expressions. модуль ngx_http_autoindex_module не показывал последний слэш для каталогов на файловой системе XFS; ошибка появилась в 0.7.15.
Спасибо Дмитрию Кузьменко.
the ngx_http_autoindex_module did not show the trailing slash in directories on XFS filesystem; the issue had appeared in 0.7.15.
Thanks to Dmitry Kuzmenko.
при включённом сжатии большие ответы с использованием SSI могли зависать; ошибка появилась в 0.7.28.
Спасибо Артёму Бохану.
large response with SSI might hang, if gzipping was enabled; the bug had appeared in 0.7.28.
Thanks to Artem Bokhan.
при использовании коротких статических вариантов в директиве try_files в рабочем процессе мог произойти segmentation fault. a segmentation fault might occur in worker process, if short static variants are used in a "try_files" directive.
логгирование ошибок аутентификации. authentication failures logging. имя/пароль, заданные в auth_basic_user_file, игнорировались после нечётного числа пустых строк.
Спасибо Александру Загребину.
name/password in auth_basic_user_file were ignored after odd number of empty lines.
Thanks to Alexander Zagrebin.
при использовании длинного пути в unix domain сокете в главном процессе происходил segmentation fault; ошибка появилась в 0.7.36. 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.
директивы, использующие upstream'ы, не работали; ошибка появилась в 0.7.36. directives using upstreams did not work; the bug had appeared in 0.7.36. предварительная поддержка IPv6; директива listen модуля HTTP поддерживает IPv6. a preliminary IPv6 support; the "listen" directive of the HTTP module supports IPv6. переменная $ancient_browser не работала для браузеров, заданных директивами modern_browser. the $ancient_browser variable did not work for browsers preset by a "modern_browser" directives. директива ssl_engine не использовала SSL-акселератор для асимметричных шифров.
Спасибо Marcin Gozdalik.
a "ssl_engine" directive did not use a SSL-accelerator for asymmetric ciphers.
Thanks to Marcin Gozdalik.
директива try_files выставляла MIME-type, исходя из расширения первоначального запроса. a "try_files" directive set MIME type depending on an original request extension. в директивах server_name, valid_referers и map неправильно обрабатывались имена вида "*domain.tld", если использовались маски вида ".domain.tld" и ".subdomain.domain.tld"; ошибка появилась в 0.7.9. "*domain.tld" names were handled incorrectly in "server_name", "valid_referers", and "map" directives, if ".domain.tld" and ".subdomain.domain.tld" wildcards were used; the bug had appeared in 0.7.9.
параметр off в директиве if_modified_since. the "off" parameter of the "if_modified_since" directive. теперь после команды XCLIENT nginx посылает команду HELO/EHLO.
Спасибо Максиму Дунину.
now nginx sends an HELO/EHLO command after a XCLIENT command.
Thanks to Maxim Dounin.
поддержка Microsoft-специфичного режима "AUTH LOGIN with User Name" в почтовом прокси-сервере.
Спасибо Максиму Дунину.
Microsoft specific "AUTH LOGIN with User Name" mode support in mail proxy server.
Thanks to Maxim Dounin.
в директиве rewrite, возвращающей редирект, старые аргументы присоединялись к новым через символ "?" вместо "&";
ошибка появилась в 0.1.18.
Спасибо Максиму Дунину.
in a redirect rewrite directive original arguments were concatenated with new arguments by a "?" rather than an "&";
the bug had appeared in 0.1.18.
Thanks to Maxim Dounin.
nginx не собирался на AIX. nginx could not be built on AIX.
если на запрос с телом возвращался редирект, то ответ мог быть двойным при использовании методов epoll или rtsig.
Спасибо Eden Li.
a double response might be returned if the epoll or rtsig methods are used and a redirect was returned to a request with body.
Thanks to Eden Li.
для некоторых типов редиректов в переменной $sent_http_location было пустое значение. the $sent_http_location variable was empty for some redirects types. при использовании директивы resolver в SMTP прокси-сервере в рабочем процессе мог произойти segmentation fault. a segmentation fault might occur in worker process if "resolver" directive was used in SMTP proxy.
теперь в директиве try_files можно явно указать проверку каталога. now a directory existence testing can be set explicitly in the "try_files" directive. fastcgi_store не всегда сохранял файлы. fastcgi_store stored files not always. в гео-диапазонах. in geo ranges. ошибки выделения больших блоков в разделяемой памяти, если nginx был собран без отладки.
Спасибо Андрею Квасову.
in shared memory allocations if nginx was built without debugging.
Thanks to Andrey Kvasov.
теперь директива try_files проверяет только файлы, игнорируя каталоги. now the "try_files" directive tests files only and ignores directories. директива fastcgi_split_path_info. the "fastcgi_split_path_info" directive. Исправления в поддержке строки "Expect" в заголовке запроса. Bugfixes in an "Expect" request header line support. Исправления в гео-диапазонах. Bugfixes in geo ranges. при отсутствии ответа ngx_http_memcached_module возвращал в теле ответа строку "END" вместо 404-ой страницы по умолчанию; ошибка появилась в 0.7.18.
Спасибо Максиму Дунину.
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.
Thanks to Maxim Dounin.
при проксировании SMTP nginx выдавал сообщение "250 2.0.0 OK" вместо "235 2.0.0 OK"; ошибка появилась в 0.7.22.
Спасибо Максиму Дунину.
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.
Thanks to Maxim Dounin.
в рабочем процессе происходил segmentation fault, если в директивах fastcgi_pass или proxy_pass использовались переменные и имя хоста должно было резолвиться; ошибка появилась в 0.7.29. 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. директивы fastcgi_pass и proxy_pass не поддерживали переменные при использовании unix domain сокетов. the "fastcgi_pass" and "proxy_pass" directives did not support variables if unix domain sockets were used. Исправления в обработке подзапросов; ошибки появились в 0.7.25. Bugfixes in subrequest processing; the bugs had appeared in 0.7.25. ответ "100 Continue" выдавался для запросов версии HTTP/1.0;
Спасибо Максиму Дунину.
a "100 Continue" response was issued for HTTP/1.0 requests;
Thanks to Maxim Dounin.
в выделении памяти в модуле ngx_http_gzip_filter_module под Cygwin. in memory allocation in the ngx_http_gzip_filter_module on Cygwin.
в выделении памяти в модуле ngx_http_gzip_filter_module. in memory allocation in the ngx_http_gzip_filter_module. значения по умолчанию для директивы gzip_buffers изменены с 4 4k/8k на 32 4k или 16 8k. the default "gzip_buffers" directive values have been changed to 32 4k or 16 8k from 4 4k/8k. директива try_files. the "try_files" directive. директива fastcgi_pass поддерживает переменные. variables support in the "fastcgi_pass" directive. теперь директива geo может брать адрес из переменной.
Спасибо Андрею Нигматулину.
now the $geo variable may get an address from a variable.
Thanks to Andrei Nigmatulin.
теперь модификатор location'а можно указывать без пробела перед названием. now a location's modifier may be used without space before name. переменная $upstream_response_length. the $upstream_response_length variable. теперь директива add_header не добавляет пустое значение. now a "add_header" directive does not add an empty value. при запросе файла нулевой длины nginx закрывал соединение, ничего не передав; ошибка появилась в 0.7.25. if zero length static file was requested, then nginx just closed connection; the bug had appeared in 0.7.25. метод MOVE не мог перемещать файл в несуществующий каталог. a MOVE method could not move file in non-existent directory. если в сервере не был описан ни один именованный location, но такой location использовался в директиве error_page, то в рабочем процессе происходил segmentation fault.
Спасибо Сергею Боченкову.
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.
Thanks to Sergey Bochenkov.
в обработке подзапросов; ошибка появилась в 0.7.25. in subrequest processing; the bug had appeared in 0.7.25. в обработке подзапросов. in subrequest processing. теперь разрешаются POST'ы без строки "Content-Length" в заголовке запроса. now POSTs without "Content-Length" header line are allowed. теперь директивы limit_req и limit_conn указывают причину запрета запроса. now the "limit_req" and "limit_conn" directives log a prohibition reason. в параметре delete директивы geo. in the "delete" parameter of the "geo" directive. директива if_modified_since. the "if_modified_since" directive. nginx не обрабатывал ответ FastCGI-сервера, если перед ответом сервер передавал много сообщений в stderr. nginx did not process a FastCGI server response, if the server send too many messages to stderr before response. переменные "$cookie_..." не работали в SSI and в перловом модуле. the "$cookie_..." variables did not work in the SSI and the perl module. параметры delete и ranges в директиве geo. the "delete" and "ranges" parameters in the "geo" directive. ускорение загрузки geo-базы с большим числом значений. speeding up loading of geo base with large number of values. уменьшение памяти, необходимой для загрузки geo-базы. decrease of memory required for geo base load. параметр none в директиве smtp_auth.
Спасибо Максиму Дунину.
the "none" parameter in the "smtp_auth" directive.
Thanks to Maxim Dounin.
переменные "$cookie_...". the "$cookie_..." variables. директива directio не работала с файловой системой XFS. the "directio" directive did not work in XFS filesystem. resolver не понимал большие DNS-ответы.
Спасибо Zyb.
the resolver did not understand big DNS responses.
Thanks to Zyb.
Изменения в модуле ngx_http_limit_req_module. Changes in the ngx_http_limit_req_module. поддержка EXSLT в модуле ngx_http_xslt_module.
Спасибо Денису Латыпову.
the EXSLT support in the ngx_http_xslt_module.
Thanks to Denis F. Latypoff.
совместимость с glibc 2.3.
Спасибо Eric Benson и Максиму Дунину.
compatibility with glibc 2.3.
Thanks to Eric Benson and Maxim Dounin.
nginx не запускался на MacOSX 10.4 и более ранних; ошибка появилась в 0.7.6. nginx could not run on MacOSX 10.4 and earlier; the bug had appeared in 0.7.6.
Изменения в модуле ngx_http_gzip_filter_module. Changes in the ngx_http_gzip_filter_module. модуль ngx_http_limit_req_module. the ngx_http_limit_req_module. на платформах sparc и ppc рабочие процессы могли выходить по сигналу SIGBUS; ошибка появилась в 0.7.3.
Спасибо Максиму Дунину.
worker processes might exit on a SIGBUS signal on sparc and ppc platforms; the bug had appeared in 0.7.3.
Thanks to Maxim Dounin.
директивы вида "proxy_pass http://host/some:uri" не работали; ошибка появилась в 0.7.12. the "proxy_pass http://host/some:uri" directives did not work; the bug had appeared in 0.7.12. при использовании HTTPS запросы могли завершаться с ошибкой "bad write retry". in HTTPS mode requests might fail with the "bad write retry" error. модуль ngx_http_secure_link_module не работал внутри location'ов с именами меньше 3 символов. the ngx_http_secure_link_module did not work inside locations, whose names are less than 3 characters. переменная $server_addr могла не иметь значения. $server_addr variable might have no value.
обновление номера версии. version number update. директива underscores_in_headers; теперь nginx по умолчанию не разрешает подчёркивания в именах строк в заголовке запроса клиента. the "underscores_in_headers" directive; now nginx does not allows underscores in a client request header line names. модуль ngx_http_secure_link_module. the ngx_http_secure_link_module. директива real_ip_header поддерживает любой заголовок. the "real_ip_header" directive supports any header. директива log_subrequest. the "log_subrequest" directive. переменная $realpath_root. the $realpath_root variable. параметры http_502 и http_504 в директиве proxy_next_upstream. the "http_502" and "http_504" parameters of the "proxy_next_upstream" directive. параметр http_503 в директивах proxy_next_upstream или fastcgi_next_upstream не работал. the "http_503" parameter of the "proxy_next_upstream" or "fastcgi_next_upstream" directives did not work. nginx мог выдавать строку "Transfer-Encoding: chunked" для запросов HEAD. nginx might send a "Transfer-Encoding: chunked" header line for HEAD requests. теперь accept-лимит зависит от числа worker_connections. now accept threshold depends on worker_connections. директива directio теперь работает на Linux. now the "directio" directive works on Linux. переменная $pid. the $pid variable. оптимизация directio, появившаяся в 0.7.15, не работала при использовании open_file_cache. the "directio" optimization that had appeared in 0.7.15 did not work with open_file_cache. access_log с переменными не работал на Linux; ошибка появилась в 0.7.7. the "access_log" with variables did not work on Linux; the bug had appeared in 0.7.7. модуль ngx_http_charset_module не понимал название кодировки в кавычках, полученное от бэкенда. the ngx_http_charset_module did not understand quoted charset name received from backend. nginx не собирался на 64-битных платформах; ошибка появилась в 0.7.15. nginx could not be built on 64-bit platforms; the bug had appeared in 0.7.15. модуль ngx_http_random_index_module. the ngx_http_random_index_module. директива directio оптимизирована для запросов файлов, начинающихся с произвольной позиции. the "directio" directive has been optimized for file requests starting from arbitrary position. директива directio при необходимости запрещает использование sendfile. the "directio" directive turns off sendfile if it is necessary. теперь nginx разрешает подчёркивания в именах строк в заголовке запроса клиента. now nginx allows underscores in a client request header line names. теперь директивы ssl_certificate и ssl_certificate_key не имеют значений по умолчанию. now the ssl_certificate and ssl_certificate_key directives have no default values. директива listen поддерживает параметр ssl. the "listen" directive supports the "ssl" parameter. теперь при переконфигурации nginx учитывает изменение временной зоны на FreeBSD и Linux. now nginx takes into account a time zone change while reconfiguration on FreeBSD and Linux. параметры директивы listen, такие как backlog, rcvbuf и прочие, не устанавливались, если сервером по умолчанию был не первый сервер. the "listen" directive parameters such as "backlog", "rcvbuf", etc. were not set, if a default server was not the first one. при использовании в качестве аргументов части URI, выделенного с помощью директивы rewrite, эти аргументы не экранировались. if URI part captured by a "rewrite" directive was used as a query string, then the query string was not escaped. улучшения тестирования правильности конфигурационного файла. configuration file validity test improvements. nginx не собирался на Linux и Solaris; ошибка появилась в 0.7.12. nginx could not be built on Linux and Solaris; the bug had appeared in 0.7.12. директива server_name поддерживает пустое имя "". the "server_name" directive supports empty name "". директива gzip_disable поддерживает специальную маску msie6. the "gzip_disable" directive supports special "msie6" mask. при использовании параметра max_fails=0 в upstream'е с несколькими серверами рабочий процесс выходил по сигналу SIGFPE.
Спасибо Максиму Дунину.
if the "max_fails=0" parameter was used in upstream with several servers, then a worker process exited on a SIGFPE signal.
Thanks to Maxim Dounin.
при перенаправлении запроса с помощью директивы error_page терялось тело запроса. a request body was dropped while redirection via an "error_page" directive. при перенаправлении запроса с методом HEAD с помощью директивы error_page возвращался полный ответ. a full response was returned for request method HEAD while redirection via an "error_page" directive. метод $r->header_in() не возвращал значения строк "Host", "User-Agent", и "Connection" из заголовка запроса; ошибка появилась в 0.7.0. 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.
теперь ngx_http_charset_module по умолчанию не работает MIME-типом text/css. now ngx_http_charset_module does not work by default with text/css MIME type. теперь nginx возвращает код 405 для метода POST при запросе статического файла, только если файл существует. now nginx returns the 405 status code for POST method requesting a static file only if the file exists. директива proxy_ssl_session_reuse. the "proxy_ssl_session_reuse" directive. после перенаправления запроса с помощью "X-Accel-Redirect" директива proxy_pass без URI могла использовать оригинальный запрос. a "proxy_pass" directive without URI part might use original request after the "X-Accel-Redirect" redirection was used. если у каталога были права доступа только на поиск файлов и первый индексный файл отсутствовал, то nginx возвращал ошибку 500. if a directory has search only rights and the first index file was absent, then nginx returned the 500 status code. ошибок во вложенных location'ах; ошибки появились в 0.7.1. in inclusive locations; the bugs had appeared in 0.7.1. ошибок в директивах addition_types, charset_types, gzip_types, ssi_types, sub_filter_types и xslt_types; ошибки появились в 0.7.9. 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. рекурсивной error_page для 500 ошибки. of recursive error_page for 500 status code. теперь модуль ngx_http_realip_module устанавливает адрес не для всего keepalive соединения, а для каждого запроса по этому соединению. now the ngx_http_realip_module sets address not for whole keepalive connection, but for each request passed via the connection. теперь ngx_http_charset_module по умолчанию работает со следующими MIME-типами: text/html, text/css, text/xml, text/plain, text/vnd.wap.wml, application/x-javascript и application/rss+xml. 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. директивы charset_types и addition_types. the "charset_types" and "addition_types" directives. теперь директивы gzip_types, ssi_types и sub_filter_types используют хэш. now the "gzip_types", "ssi_types", and "sub_filter_types" directives use hash. модуль ngx_cpp_test_module. the ngx_cpp_test_module. директива expires поддерживает суточное время. the "expires" directive supports daily time. улучшения и исправления в модуле ngx_http_xslt_module.
Спасибо Денису Латыпову и Максиму Дунину.
the ngx_http_xslt_module improvements and bug fixing.
Thanks to Denis F. Latypoff and Maxim Dounin.
директива log_not_found не работала при поиске индексных файлов. the "log_not_found" directive did not work for index files tests. HTTPS-соединения могли зависнуть, если использовались методы kqueue, epoll, rtsig или eventport; ошибка появилась в 0.7.7. HTTPS connections might hang, if kqueue, epoll, rtsig, or eventport methods were used; the bug had appeared in 0.7.7. если в директивах server_name, valid_referers и map использовалась маска вида "*.domain.tld" и при этом полное имя вида "domain.tld" не было описано, то это имя попадало под маску; ошибка появилась в 0.3.18. 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.
модуль ngx_http_xslt_module. the ngx_http_xslt_module. переменные "$arg_...". the "$arg_..." variables. поддержка directio в Solaris.
Спасибо Ivan Debnar.
Solaris directio support.
Thanks to Ivan Debnar.
теперь, если FastCGI-сервер присылает строку "Location" в заголовке ответа без строки статуса, то nginx использует код статуса 302.
Спасибо Максиму Дунину.
now if FastCGI server sends a "Location" header line without status line, then nginx uses 302 status code.
Thanks to Maxim Dounin.
теперь ошибка EAGAIN при вызове connect() не считается временной. now the EAGAIN error returned by connect() is not considered as temporary error. значением переменной $ssl_client_cert теперь является сертификат, перед каждой строкой которого, кроме первой, вставляется символ табуляции; неизменённый сертификат доступен через переменную $ssl_client_raw_cert. 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. параметр ask директивы ssl_verify_client. the "ask" parameter in the "ssl_verify_client" directive. улучшения в обработке byte-range.
Спасибо Максиму Дунину.
byte-range processing improvements.
Thanks to Maxim Dounin.
директива directio.
Спасибо Jiang Hong.
the "directio" directive.
Thanks to Jiang Hong.
поддержка sendfile() в MacOSX 10.5. MacOSX 10.5 sendfile() support. в MacOSX и Cygwin при проверке location'ов теперь делается сравнение без учёта регистра символов; однако, сравнение ограничено только однобайтными locale'ями. now in MacOSX and Cygwin locations are tested in case insensitive mode; however, the compare is provided by single-byte locales only. соединения почтового прокси-сервера зависали в режиме SSL, если использовались методы select, poll или /dev/poll. mail proxy SSL connections hanged, if select, poll, or /dev/poll methods were used. ошибки при использовании кодировки UTF-8 в ngx_http_autoindex_module. UTF-8 encoding usage in the ngx_http_autoindex_module.
теперь при использовании переменных в директиве access_log всегда проверяется существовании root'а для запроса. now if variables are used in the "access_log" directive a request root existence is always tested. модуль ngx_http_flv_module не поддерживал несколько значений в аргументах запроса. the ngx_http_flv_module did not support several values in a query string. Исправления в поддержке переменных в директиве access_log; ошибки появились в 0.7.4. Bugfixes in variables support in the "access_log" directive; the bugs had appeared in 0.7.4. nginx не собирался с параметром --without-http_gzip_module; ошибка появилась в 0.7.3.
Спасибо Кириллу Коринскому.
nginx could not be built --without-http_gzip_module; the bug had appeared in 0.7.3.
Thanks to Kirill A. Korinskiy.
при совместном использовании sub_filter и SSI ответы могли передаваться неверно. if sub_filter and SSI were used together, then responses might were transferred incorrectly.
директива access_log поддерживает переменные. variables support in the "access_log" directive. директива open_log_file_cache. the "open_log_file_cache" directive. ключ -g. the -g switch. поддержка строки "Expect" в заголовке запроса. the "Expect" request header line support. большие включения в SSI могли передавались не полностью. large SSI inclusions might be truncated. MIME-тип для расширения rss изменён на "application/rss+xml". the "rss" extension MIME type has been changed to "application/rss+xml". теперь директива "gzip_vary on" выдаёт строку "Vary: Accept-Encoding" в заголовке ответа и для несжатых ответов. now the "gzip_vary" directive turned on issues a "Vary: Accept-Encoding" header line for uncompressed responses too. теперь при использовании протокола "https://" в директиве rewrite автоматически делается редирект. now the "rewrite" directive does a redirect automatically if the "https://" protocol is used. директива proxy_pass не работала с протоколом HTTPS; ошибка появилась в 0.6.9. the "proxy_pass" directive did not work with the HTTPS protocol; the bug had appeared in 0.6.9. теперь nginx поддерживает шифры с обменом EDH-ключами. now nginx supports EDH key exchange ciphers. директива ssl_dhparam. the "ssl_dhparam" directive. переменная $ssl_client_cert.
Спасибо Manlio Perillo.
the $ssl_client_cert variable.
Thanks to Manlio Perillo.
после изменения URI с помощью директивы rewrite nginx не искал новый location; ошибка появилась в 0.7.1.
Спасибо Максиму Дунину.
after changing URI via a "rewrite" directive nginx did not search a new location; the bug had appeared in 0.7.1.
Thanks to Maxim Dounin.
nginx не собирался без библиотеки PCRE; ошибка появилась в 0.7.1. nginx could not be built without PCRE library; the bug had appeared in 0.7.1. при редиректе запроса к каталогу с добавлением слэша nginx не добавлял аргументы из оригинального запроса. when a request to a directory was redirected with the slash added, nginx dropped a query string from the original request.
теперь поиск location'а делается с помощью дерева. now locations are searched in a tree. директива optimize_server_names упразднена в связи с появлением директивы server_name_in_redirect. the "optimize_server_names" directive was canceled due to the "server_name_in_redirect" directive introduction. некоторые давно устаревшие директивы больше не поддерживаются. some long deprecated directives are not supported anymore. параметр "none" в директиве ssl_session_cache; теперь этот параметр используется по умолчанию.
Спасибо Rob Mueller.
the "none" parameter in the "ssl_session_cache" directive; now this is default parameter.
Thanks to Rob Mueller.
рабочие процессы могли не реагировать на сигналы переконфигурации и ротации логов. worker processes might not catch reconfiguration and log rotation signals. nginx не собирался на последних Fedora 9 Linux.
Спасибо Roxis.
nginx could not be built on latest Fedora 9 Linux.
Thanks to Roxis.
теперь символы 0x00-0x1F, '"' и '\' в access_log записываются в виде \xXX.
Спасибо Максиму Дунину.
now the 0x00-0x1F, '"' and '\' characters are escaped as \xXX in an access_log.
Thanks to Maxim Dounin.
теперь nginx разрешает несколько строк "Host" в заголовке запроса. now nginx allows several "Host" request header line. директива expires поддерживает флаг modified. the "modified" flag in the "expires" directive. переменные $uid_got и $uid_set можно использовать на любой стадии обработки запроса. the $uid_got and $uid_set variables may be used at any request processing stage. переменная $hostname.
Спасибо Андрею Нигматулину.
the $hostname variable.
Thanks to Andrei Nigmatulin.
поддержка DESTDIR.
Спасибо Todd A. Fisher и Andras Voroskoi.
DESTDIR support.
Thanks to Todd A. Fisher and Andras Voroskoi.
при использовании keepalive на Linux в рабочем процессе мог произойти segmentation fault. a segmentation fault might occur in worker process on Linux, if keepalive was enabled.
nginx не обрабатывал ответ FastCGI-сервера, если строка заголовка ответа была в конце записи FastCGI; ошибка появилась в 0.6.2.
Спасибо Сергею Серову.
nginx did not process FastCGI response if header was at the end of FastCGI record; the bug had appeared in 0.6.2.
Thanks to Sergey Serov.
при удалении файла и использовании директивы open_file_cache_errors off в рабочем процессе мог произойти segmentation fault. a segmentation fault might occur in worker process if a file was deleted and the "open_file_cache_errors" directive was off.
теперь, если маске, заданной в директиве include, не соответствует ни один файл, то nginx не выдаёт ошибку. now if an "include" directive pattern does not match any file, then nginx does not issue an error. теперь время в директивах можно задавать без пробела, например, "1h50m". now the time in directives may be specified without spaces, for example, "1h50m". утечек памяти, если директива ssl_verify_client имела значение on.
Спасибо Chavelle Vincent.
memory leaks if the "ssl_verify_client" directive was on.
Thanks to Chavelle Vincent.
директива sub_filter могла вставлять заменяемый текст в вывод. the "sub_filter" directive might set text to change into output. директива error_page не воспринимала параметры в перенаправляемом URI. the "error_page" directive did not take into account arguments in redirected URI. теперь при сборке с Cygwin nginx всегда открывает файлы в бинарном режиме. now nginx always opens files in binary mode under Cygwin. nginx не собирался под OpenBSD; ошибка появилась в 0.6.15. nginx could not be built on OpenBSD; the bug had appeared in 0.6.15.
модуль ngx_google_perftools_module. the ngx_google_perftools_module. модуль ngx_http_perl_module не собирался на 64-битных платформах; ошибка появилась в 0.6.27. the ngx_http_perl_module could not be built on 64-bit platforms; the bug had appeared in 0.6.27. метод rtsig не собирался; ошибка появилась в 0.6.27. the rtsig method could not be built; the bug had appeared in 0.6.27. теперь на Linux 2.6.18+ по умолчанию не собирается метод rtsig. now by default the rtsig method is not built on Linux 2.6.18+. теперь при перенаправлении запроса в именованный location с помощью директивы error_page метод запроса не изменяется. now a request method is not changed while redirection to a named location via an "error_page" directive. директивы resolver и resolver_timeout в SMTP прокси-сервере. the "resolver" and "resolver_timeout" directives in SMTP proxy. директива post_action поддерживает именованные location'ы. the "post_action" directive supports named locations. при перенаправлении запроса из location'а c обработчиком proxy, FastCGI или memcached в именованный location со статическим обработчиком в рабочем процессе происходил segmentation fault. a segmentation fault occurred in worker process, if a request was redirected from proxy, FastCGI, or memcached location to static named locations. браузеры не повторяли SSL handshake, если при первом handshake не оказалось правильного клиентского сертификата.
Спасибо Александру Инюхину.
browsers did not repeat SSL handshake if there is no valid client certificate in first handshake.
Thanks to Alexander V. Inyukhin.
при перенаправлении ошибок 495-497 с помощью директивы error_page без изменения кода ошибки nginx пытался выделить очень много памяти. if response code 495-497 was redirected via an "error_page" directive without code change, then nginx tried to allocate too many memory. утечки памяти в долгоживущих небуфферизированных соединениях. memory leak in long-lived non buffered connections. утечки памяти в resolver'е. memory leak in resolver. при перенаправлении запроса из location'а c обработчиком proxy в другой location с обработчиком proxy в рабочем процессе происходил segmentation fault. a segmentation fault occurred in worker process, if a request was redirected from proxy, FastCGI, or memcached location to static named locations. ошибки в кэшировании переменных $proxy_host и $proxy_port.
Спасибо Сергею Боченкову.
in the $proxy_host and $proxy_port variables caching.
Thanks to Sergey Bochenkov.
директива proxy_pass с переменными использовала порт, описанной в другой директиве proxy_pass без переменных, но с таким же именем хоста.
Спасибо Сергею Боченкову.
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.
Thanks to Sergey Bochenkov.
во время переконфигурации на некоторых 64-битном платформах в лог записывался alert "sendmsg() failed (9: Bad file descriptor)". an alert "sendmsg() failed (9: Bad file descriptor)" on some 64-bit platforms while reconfiguration. при повторном использовании в SSI пустого block'а в качестве заглушки в рабочем процессе происходил segmentation fault. a segmentation fault occurred in worker process, if empty stub block was used second time in SSI. ошибки при копировании части URI, содержащего экранированные символы, в аргументы. in copying URI part contained escaped symbols into arguments.
директивы proxy_store и fastcgi_store не проверяли длину ответа. the "proxy_store" and "fastcgi_store" directives did not check a response length. при использовании большого значения в директиве expires в рабочем процессе происходил segmentation fault.
Спасибо Joaquin Cuenca Abela.
a segmentation fault occurred in worker process, if big value was used in a "expires" directive.
Thanks to Joaquin Cuenca Abela.
nginx неверно определял длину строки кэша на Pentium 4.
Спасибо Геннадию Махомеду.
nginx incorrectly detected cache line size on Pentium 4.
Thanks to Gena Makhomed.
в проксированных подзапросах и подзапросах к FastCGI-серверу вместо метода GET использовался оригинальный метод клиента. in proxied or FastCGI subrequests a client original method was used instead of the GET method. утечки сокетов в режиме HTTPS при использовании отложенного accept'а.
Спасибо Ben Maurer.
socket leak in HTTPS mode if deferred accept was used.
Thanks to Ben Maurer.
nginx выдавал ошибочное сообщение "SSL_shutdown() failed (SSL: )"; ошибка появилась в 0.6.23. nginx issued the bogus error message "SSL_shutdown() failed (SSL: )"; the bug had appeared in 0.6.23. при использовании HTTPS запросы могли завершаться с ошибкой "bad write retry"; ошибка появилась в 0.6.23. in HTTPS mode requests might fail with the "bad write retry" error; the bug had appeared in 0.6.23.
вместо специального параметра "*" в директиве server_name теперь используется директива server_name_in_redirect. now the "server_name_in_redirect" directive is used instead of the "server_name" directive's special "*" parameter. в качестве основного имени в директиве server_name теперь можно использовать имена с масками и регулярными выражениями. now wildcard and regex names can be used as main name in a "server_name" directive. директива satisfy_any заменена директивой satisfy. the "satisfy_any" directive was replaced by the "satisfy" directive. после переконфигурации старые рабочие процесс могли сильно нагружать процессор при запуске под Linux OpenVZ. old worker processes might hog CPU after reconfiguration if they was run under Linux OpenVZ. директива min_delete_depth. the "min_delete_depth" directive. методы COPY и MOVE не работали с одиночными файлами. the COPY and MOVE methods did not work with single files. модуль ngx_http_gzip_static_module не позволял работать модулю ngx_http_dav_module; ошибка появилась в 0.6.23. the ngx_http_gzip_static_module did not allow the ngx_http_dav_module to work; the bug had appeared in 0.6.23. утечки сокетов в режиме HTTPS при использовании отложенного accept'а.
Спасибо Ben Maurer.
socket leak in HTTPS mode if deferred accept was used.
Thanks to Ben Maurer.
nginx не собирался без библиотеки PCRE; ошибка появилась в 0.6.23. nginx could not be built without PCRE library; the bug had appeared in 0.6.23.
при использовании HTTPS в рабочем процессе мог произойти segmentation fault; ошибка появилась в 0.6.23. a segmentation fault might occur in worker process if HTTPS was used; the bug had appeared in 0.6.23. параметр "off" в директиве ssl_session_cache; теперь этот параметр используется по умолчанию. the "off" parameter in the "ssl_session_cache" directive; now this is default parameter. директива open_file_cache_retest переименована в open_file_cache_valid. the "open_file_cache_retest" directive was renamed to the "open_file_cache_valid". директива open_file_cache_min_uses. the "open_file_cache_min_uses" directive. модуль ngx_http_gzip_static_module. the ngx_http_gzip_static_module. директива gzip_disable. the "gzip_disable" directive. директиву memcached_pass можно использовать внутри блока if. the "memcached_pass" directive may be used inside the "if" block. если внутри одного location'а использовались директивы "memcached_pass" и "if", то в рабочем процессе происходил segmentation fault. a segmentation fault occurred in worker process, if the "memcached_pass" and "if" directives were used in the same location. если при использовании директивы satisfy_any on" были заданы директивы не всех модулей доступа, то заданные директивы не проверялись. 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; параметры, заданные регулярным выражением в директиве valid_referers, не наследовалась с предыдущего уровня. regex parameters in a "valid_referers" directive were not inherited from previous level. директива post_action не работала, если запрос завершался с кодом 499. a "post_action" directive did run if a request was completed with 499 status code. оптимизация использования 16K буфера для SSL-соединения.
Спасибо Ben Maurer.
optimization of 16K buffer usage in a SSL connection.
Thanks to Ben Maurer.
STARTTLS в режиме SMTP не работал.
Спасибо Олегу Мотиенко.
the STARTTLS in SMTP mode did not work.
Thanks to Oleg Motienko.
при использовании HTTPS запросы могли завершаться с ошибкой "bad write retry"; ошибка появилась в 0.5.13. in HTTPS mode requests might fail with the "bad write retry" error; the bug had appeared in 0.5.13.
теперь все методы модуля ngx_http_perl_module возвращают значения, скопированные в память, выделенную perl'ом. now all ngx_http_perl_module methods return values copied to perl's allocated memory. если nginx был собран с модулем ngx_http_perl_module, использовался perl до версии 5.8.6 и perl поддерживал потоки, то во время переконфигурации основной процесс аварийно выходил; ошибка появилась в 0.5.9.
Спасибо Борису Жмурову.
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.
Thanks to Boris Zhmurov.
в методы модуля ngx_http_perl_module могли передаваться неверные результаты выделения в регулярных выражениях. the ngx_http_perl_module methods may get invalid values of the regex captures. если метод $r->has_request_body() вызывался для запроса, у которого небольшое тело запроса было уже полностью получено, то в рабочем процессе происходил segmentation fault. 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. large_client_header_buffers не освобождались перед переходом в состояние keep-alive.
Спасибо Олександру Штепе.
large_client_header_buffers did not freed before going to keep-alive state.
Thanks to Olexander Shtepa.
в переменной $upstream_addr не записывался последний адрес; ошибка появилась в 0.6.18. the last address was missed in the $upstream_addr variable; the bug had appeared in 0.6.18. директива fastcgi_catch_stderr не возвращала ошибку; теперь она возвращает ошибку 502, которую можно направить на следующий сервер с помощью "fastcgi_next_upstream invalid_header". 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. при использовании директивы fastcgi_catch_stderr в основном процессе происходил segmentation fault; ошибка появилась в 0.6.10.
Спасибо Manlio Perillo.
a segmentation fault occurred in master process if the "fastcgi_catch_stderr" directive was used; the bug had appeared in 0.6.10.
Thanks to Manlio Perillo.
если в значениях переменных директивы proxy_pass используются только IP-адреса, то указывать resolver не нужно. if variable values used in a "proxy_pass" directive contain IP-addresses only, then a "resolver" directive is not mandatory. при использовании директивы proxy_pass c URI-частью в рабочем процессе мог произойти segmentation fault; ошибка появилась в 0.6.19. 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. если resolver использовался на платформах, не поддерживающих метод kqueue, то nginx выдавал alert "name is out of response".
Спасибо Андрею Нигматулину.
if resolver was used on platform that does not support kqueue, then nginx issued an alert "name is out of response".
Thanks to Andrei Nigmatulin.
При использовании переменной $server_protocol в FastCGI-параметрах и запросе, длина которого была близка к значению директивы client_header_buffer_size, nginx выдавал alert "fastcgi: the request record is too big". 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". при обычном запросе версии HTTP/0.9 к HTTPS серверу nginx возвращал обычный ответ. if a plain text HTTP/0.9 version request was made to HTTPS server, then nginx returned usual response.
при использовании директивы proxy_pass c URI-частью в рабочем процессе мог произойти segmentation fault; ошибка появилась в 0.6.19. 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. версия 0.6.18 не собиралась. the 0.6.18 version could not be built. теперь модуль ngx_http_userid_module в поле куки с номером процесса добавляет микросекунды на время старта. now the ngx_http_userid_module adds start time microseconds to the cookie field contains a pid value. в error_log теперь записывается полная строка запроса вместо только URI. now the full request line instead of URI only is written to error_log. директива proxy_pass поддерживает переменные. variables support in the "proxy_pass" directive. директивы resolver и resolver_timeout. the "resolver" and "resolver_timeout" directives. теперь директива "add_header last-modified ''" удаляет в заголовке ответа строку "Last-Modified". now the directive "add_header last-modified ''" deletes a "Last-Modified" response header line. директива limit_rate не позволяла передавать на полной скорости, даже если был указан очень большой лимит. the "limit_rate" directive did not allow to use full throughput, even if limit value was very high. поддержка строки "If-Range" в заголовке запроса.
Спасибо Александру Инюхину.
the "If-Range" request header line support.
Thanks to Alexander V. Inyukhin.
при использовании директивы msie_refresh повторно экранировались уже экранированные символы; ошибка появилась в 0.6.4. URL double escaping in a redirect of the "msie_refresh" directive; the bug had appeared in 0.6.4. директива autoindex не работала при использовании "alias /". the "autoindex" directive did not work with the "alias /" directive. при использовании подзапросов в рабочем процессе мог произойти segmentation fault. a segmentation fault might occur in worker process if subrequests were used. при использовании SSL и gzip большие ответы могли передаваться не полностью. the big responses may be transferred truncated if SSL and gzip were used. если ответ проксированного сервера был версии HTTP/0.9, то переменная $status была равна 0. the $status variable was equal to 0 if a proxied server returned response in HTTP/0.9 version.
теперь на Linux используется uname(2) вместо procfs.
Спасибо Илье Новикову.
now the uname(2) is used on Linux instead of procfs.
Thanks to Ilya Novikov.
если в директиве error_page использовался символ "?", то он экранировался при проксировании запроса; ошибка появилась в 0.6.11. 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. совместимость с mget. compatibility with mget.
совместимость с Cygwin.
Спасибо Владимиру Кутакову.
Cygwin compatibility.
Thanks to Vladimir Kutakov.
директива merge_slashes. the "merge_slashes" directive. директива gzip_vary. the "gzip_vary" directive. директива server_tokens. the "server_tokens" directive. nginx не раскодировал URI в команде SSI include. nginx did not unescape URI in the "include" SSI command. при использовании переменной в директивах charset или source_charset на старте или во время переконфигурации происходил segmentation fault, the segmentation fault was occurred on start or while reconfiguration if variable was used in the "charset" or "source_charset" directives. nginx возвращал ошибку 400 на запросы вида "GET http://www.domain.com HTTP/1.0".
Спасибо James Oakley.
nginx returned the 400 response on requests like "GET http://www.domain.com HTTP/1.0".
Thanks to James Oakley.
после перенаправления запроса с телом запроса с помощью директивы error_page nginx пытался снова прочитать тело запроса; ошибка появилась в 0.6.7. 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. в рабочем процессе происходил segmentation fault, если у сервера, обрабатывающему запрос, не был явно определён server_name; ошибка появилась в 0.6.7. 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.
теперь по умолчанию команда SSI echo использует кодирование entity. now by default the "echo" SSI command uses entity encoding. параметр encoding в команде SSI echo. the "encoding" parameter in the "echo" SSI command. директиву access_log можно использовать внутри блока limit_except. the "access_log" directive may be used inside the "limit_except" block. если все сервера апстрима оказывались недоступными, то до восстановления работоспособности у всех серверов вес становился равным одному; ошибка появилась в 0.6.6. 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. при использовании переменных $date_local и $date_gmt вне модуля ngx_http_ssi_filter_module в рабочем процессе происходил segmentation fault. a segmentation fault occurred in worker process if $date_local and $date_gmt were used outside the ngx_http_ssi_filter_module. при использовании включённом отладочном логе в рабочем процессе мог произойти segmentation fault.
Спасибо Андрею Нигматулину.
a segmentation fault might occur in worker process if debug log was enabled.
Thanks to Andrei Nigmatulin.
ngx_http_memcached_module не устанавливал $upstream_response_time.
Спасибо Максиму Дунину.
ngx_http_memcached_module did not set $upstream_response_time.
Thanks to Maxim Dounin.
рабочий процесс мог зациклиться при использовании memcached. a worker process may got caught in an endless loop, if the memcached was used. nginx распознавал параметры "close" и "keep-alive" в строке "Connection" в заголовке запроса только, если они были в нижнем регистре; ошибка появилась в 0.6.11. nginx supported low case only "close" and "keep-alive" values in the "Connection" request header line; the bug had appeared in 0.6.11. sub_filter не работал с пустой строкой замены. sub_filter did not work with empty substitution. в парсинге sub_filter. in sub_filter parsing.
nginx не закрывал файл каталога для запроса HEAD, если использовался autoindex
Спасибо Arkadiusz Patyk.
nginx did not close directory file on HEAD request if autoindex was used.
Thanks to Arkadiusz Patyk.
почтовый прокси-сервер разделён на три модуля: pop3, imap и smtp. mail proxy was split on three modules: pop3, imap and smtp. параметры конфигурации --without-mail_pop3_module, --without-mail_imap_module и --without-mail_smtp_module. the --without-mail_pop3_module, --without-mail_imap_module, and --without-mail_smtp_module configuration parameters. директивы smtp_greeting_delay и smtp_client_buffer модуля ngx_mail_smtp_module. the "smtp_greeting_delay" and "smtp_client_buffer" directives of the ngx_mail_smtp_module. wildcard в конце имени сервера не работали; ошибка появилась в 0.6.9. the trailing wildcards did not work; the bug had appeared in 0.6.9. при использовании разделяемой библиотеки PCRE, расположенной в нестандартном месте, nginx не запускался на Solaris. nginx could not start on Solaris if the shared PCRE library located in non-standard place was used. директивы proxy_hide_header и fastcgi_hide_header не скрывали строки заголовка ответа с именем больше 32 символов.
Спасибо Manlio Perillo.
the "proxy_hide_header" and "fastcgi_hide_header" directives did not hide response header lines whose name was longer than 32 characters.
Thanks to Manlio Perillo.
счётчик активных соединений всегда рос при использовании почтового прокси-сервера. active connection counter always increased if mail proxy was used. если бэкенд возвращал только заголовок ответа при небуферизированном проксировании, то nginx закрывал соединение с бэкендом по таймауту. if backend returned response header only using non-buffered proxy, then nginx closed backend connection on timeout. nginx не поддерживал несколько строк "Connection" в заголовке запроса. nginx did not support several "Connection" request header lines. если в сервере апстрима был задан max_fails, то после первой же неудачной попытки вес сервера навсегда становился равным одному; ошибка появилась в 0.6.6. 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. директивы open_file_cache, open_file_cache_retest и open_file_cache_errors. the "open_file_cache", "open_file_cache_retest", and "open_file_cache_errors" directives. утечки сокетов; ошибка появилась в 0.6.7. socket leak; the bug had appeared in 0.6.7. В строку заголовка ответа "Content-Type", указанную в методе $r->send_http_header(), не добавлялась кодировка, указанная в директиве charset. a charset set by the "charset" directive was not appended to the "Content-Type" header set by $r->send_http_header(). при использовании метода /dev/poll в рабочем процессе мог произойти segmentation fault. a segmentation fault might occur in worker process if /dev/poll method was used. рабочий процесс мог зациклиться при использовании протокола HTTPS; ошибка появилась в 0.6.7. a worker process may got caught in an endless loop, if the HTTPS protocol was used; the bug had appeared in 0.6.7. если сервер слушал на двух адресах или портах, то nginx не запускался при использовании wildcard в конце имени сервера. if server listened on two addresses or ports and trailing wildcard was used, then nginx did not run. директива ip_hash могла неверно помечать сервера как нерабочие. the "ip_hash" directive might incorrectly mark servers as down. nginx не собирался на amd64; ошибка появилась в 0.6.8. nginx could not be built on amd64; the bug had appeared in 0.6.8. теперь nginx пытается установить директивы worker_priority, worker_rlimit_nofile, worker_rlimit_core, worker_rlimit_sigpending без привилегий root'а. now nginx tries to set the "worker_priority", "worker_rlimit_nofile", "worker_rlimit_core", and "worker_rlimit_sigpending" without super-user privileges. теперь nginx экранирует символы пробела и "%" при передаче запроса серверу аутентификации почтового прокси-сервера. now nginx escapes space and "%" in request to a mail proxy authentication server. теперь nginx экранирует символ "%" в переменной $memcached_key. now nginx escapes "%" in $memcached_key variable. при указании относительного пути к конфигурационному файлу в качестве параметра ключа -c nginx определял путь относительно конфигурационного префикса; ошибка появилась в 0.6.6. 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. nginx не работал на FreeBSD/sparc64. nginx did not work on FreeBSD/sparc64. теперь пути, указанные в директивах include, auth_basic_user_file, perl_modules, ssl_certificate, ssl_certificate_key и ssl_client_certificate, определяются относительно каталога конфигурационного файла nginx.conf, а не относительно префикса. 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. параметр --sysconfdir=PATH в configure упразднён. the --sysconfdir=PATH option in configure was canceled. для обновления на лету версий 0.1.x создан специальный сценарий make upgrade1. the special make target "upgrade1" was defined for online upgrade of 0.1.x versions. директивы server_name и valid_referers поддерживают регулярные выражения. the "server_name" and "valid_referers" directives support regular expressions. директива server в блоке upstream поддерживает параметр backup. the "server" directive in the "upstream" context supports the "backup" parameter. модуль ngx_http_perl_module поддерживает метод $r->discard_request_body. the ngx_http_perl_module supports the $r->discard_request_body. директива "add_header Last-Modified ..." меняет строку "Last-Modified" в заголовке ответа. the "add_header Last-Modified ..." directive changes the "Last-Modified" response header line. если на запрос с телом возвращался ответ с кодом HTTP отличным от 200, и после этого запроса соединение переходило в состояние keep-alive, то на следующий запрос nginx возвращал 400. 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. если в директиве auth_http был задан неправильный адрес, то в рабочем процессе происходил segmentation fault. a segmentation fault occurred in worker process if invalid address was set in the "auth_http" directive. теперь по умолчанию nginx использует значение 511 для listen backlog на всех платформах, кроме FreeBSD.
Спасибо Jiang Hong.
now nginx uses default listen backlog value 511 on all platforms except FreeBSD.
Thanks to Jiang Hong.
рабочий процесс мог зациклиться, если server в блоке upstream был помечен как down; ошибка появилась в 0.6.6. 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. sendfilev() в Solaris теперь не используется при передаче тела запроса FastCGI-серверу через unix domain сокет. now Solaris sendfilev() is not used to transfer the client request body to FastCGI-server via the unix domain socket.
параметр --sysconfdir=PATH в configure. the --sysconfdir=PATH option in configure. именованные location'ы. named locations. переменную $args можно устанавливать с помощью set. the $args variable can be set with the "set" directive. переменная $is_args. the $is_args variable. равномерное распределение запросов к апстримам с большими весами. fair big weight upstream balancer. если клиент в почтовом прокси-сервере закрывал соединение, то nginx мог не закрывать соединение с бэкендом. if a client has closed connection to mail proxy then nginx might not close connection to backend. при использовании одного хоста в качестве бэкендов для протоколов HTTP и HTTPS без явного указания портов, nginx использовал только один порт—80 или 443. if the same host without specified port was used as backend for HTTP and HTTPS, then nginx used only one port—80 or 443. nginx не собирался на Solaris/amd64 Sun Studio 11 и более ранними версиями; ошибка появилась в 0.6.4. fix building on Solaris/amd64 by Sun Studio 11 and early versions; the bug had appeared in 0.6.4. переменная $nginx_version.
Спасибо Николаю Гречуху.
$nginx_version variable.
Thanks to Nick S. Grechukh.
почтовый прокси-сервер поддерживает AUTHENTICATE в режиме IMAP.
Спасибо Максиму Дунину.
the mail proxy supports AUTHENTICATE in IMAP mode.
Thanks to Maxim Dounin.
почтовый прокси-сервер поддерживает STARTTLS в режиме SMTP.
Спасибо Максиму Дунину.
the mail proxy supports STARTTLS in SMTP mode.
Thanks to Maxim Dounin.
теперь nginx экранирует пробел в переменной $memcached_key. now nginx escapes space in $memcached_key variable. nginx неправильно собирался Sun Studio на Solaris/amd64.
Спасибо Jiang Hong.
nginx was incorrectly built by Sun Studio on Solaris/amd64.
Thanks to Jiang Hong.
незначительных потенциальных ошибок.
Спасибо Coverity's Scan.
of minor potential bugs.
Thanks to Coverity's Scan.
при использовании директивы msie_refresh был возможен XSS.
Спасибо Максиму Богуку.
the "msie_refresh" directive allowed XSS.
Thanks to Maxim Boguk.
директивы proxy_store и fastcgi_store изменены. the "proxy_store" and "fastcgi_store" directives were changed. директивы proxy_store_access и fastcgi_store_access. the "proxy_store_access" and "fastcgi_store_access" directives. nginx не работал на Solaris/sparc64, если был собран Sun Studio.
Спасибо Андрею Нигматулину.
nginx did not work on Solaris/sparc64 if it was built by Sun Studio.
Thanks to Andrei Nigmatulin.
обход ошибки в Sun Studio 12.
Спасибо Jiang Hong.
for Sun Studio 12.
Thanks to Jiang Hong.
директивы proxy_store и fastcgi_store. the "proxy_store" and "fastcgi_store" directives. при использовании директивы auth_http_header в рабочем процессе мог произойти segmentation fault.
Спасибо Максиму Дунину.
a segmentation fault might occur in worker process if the "auth_http_header" directive was used.
Thanks to Maxim Dounin.
если использовался метод аутентификации CRAM-MD5, но он не был разрешён, то в рабочем процессе происходил segmentation fault. a segmentation fault occurred in worker process if the CRAM-MD5 authentication method was used, but it was not enabled. при использовании протокола HTTPS в директиве proxy_pass в рабочем процессе мог произойти segmentation fault. a segmentation fault might occur in worker process when the HTTPS protocol was used in the "proxy_pass" directive. в рабочем процессе мог произойти segmentation fault, если использовался метод eventport. a segmentation fault might occur in worker process if the eventport method was used. директивы proxy_ignore_client_abort и fastcgi_ignore_client_abort не работали; ошибка появилась в 0.5.13. the "proxy_ignore_client_abort" and "fastcgi_ignore_client_abort" directives did not work; the bug had appeared in 0.5.13.
если заголовок ответа был разделён в FastCGI-записях, то nginx передавал клиенту мусор в таких заголовках. if the FastCGI header was split in records, then nginx passed garbage in the header to a client. в парсинге SSI. in SSI parsing. при использовании удалённого подзапроса в SSI последующий подзапрос локального файла мог отдаваться клиенту в неверном порядке. if remote SSI subrequest was used, then posterior local file subrequest might transferred to client in wrong order. большие включения в SSI, сохранённые во временные файлы, передавались не полностью. large SSI inclusions buffered in temporary files were truncated. значение perl'овой переменной $$ модуля ngx_http_perl_module было равно номеру главного процесса. the perl $$ variable value in ngx_http_perl_module was equal to the master process identification number. директивы "server_name", "map", and "valid_referers" поддерживают маски вида "www.example.*". the "server_name", "map", and "valid_referers" directives support the "www.example.*" wildcards. nginx не собирался с параметром --without-http_rewrite_module; ошибка появилась в 0.5.24. nginx could not be built with the --without-http_rewrite_module parameter; the bug had appeared in 0.5.24. директива ssl_verify_client не работала, если запрос выполнялся по протоколу HTTP/0.9. the "ssl_verify_client" directive did not work if request was made using HTTP/0.9. при использовании сжатия часть ответа могла передаваться несжатой; ошибка появилась в 0.5.23. a part of response body might be passed uncompressed if gzip was used; the bug had appeared in 0.5.23. модуль ngx_http_ssl_module поддерживает расширение TLS Server Name Indication. the ngx_http_ssl_module supports Server Name Indication TLS extension. директива fastcgi_catch_stderr.
Спасибо Николаю Гречуху, проект OWOX.
the "fastcgi_catch_stderr" directive.
Thanks to Nick S. Grechukh, OWOX project.
на Линуксе в основном процессе происходил segmentation fault, если два виртуальных сервера должны bind()ится к пересекающимся портам. a segmentation fault occurred in master process if two virtual servers should bind() to the overlapping ports. если nginx был собран с модулем ngx_http_perl_module и perl поддерживал потоки, то во время второй переконфигурации выдавались ошибки "panic: MUTEX_LOCK" и "perl_parse() failed". 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. в использовании протокола HTTPS в директиве proxy_pass. in the HTTPS protocol in the "proxy_pass" directive.
большое тело запроса могло не передаваться бэкенду; ошибка появилась в 0.5.21. a big request body might not be passed to backend; the bug had appeared in 0.5.21. если внутри сервера описано больше примерно десяти location'ов, то location'ы, заданные с помощью регулярного выражения, могли выполняться не в том, порядке, в каком они описаны. if server has more than about ten locations, then regex locations might be chosen not in that order as they were specified. на 64-битной платформе рабочий процесс мог зациклиться, если 33-тий по счёту или последующий бэкенд упал.
Спасибо Антону Поварову.
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.
Thanks to Anton Povarov.
при использовании библиотеки PCRE на Solaris/sparc64 мог произойти bus error.
Спасибо Андрею Нигматулину.
a bus error might occur on Solaris/sparc64 if the PCRE library was used.
Thanks to Andrei Nigmatulin.
в использовании протокола HTTPS в директиве proxy_pass. in the HTTPS protocol in the "proxy_pass" directive.
директива sendfile_max_chunk. the "sendfile_max_chunk" directive. переменные "$http_...", "$sent_http_..." и "$upstream_http_..." можно менять директивой set. the "$http_...", "$sent_http_...", and "$upstream_http_..." variables may be changed using the "set" directive. при использовании SSI-команды 'if expr="$var = /"' в рабочем процессе мог произойти segmentation fault. a segmentation fault might occur in worker process if the SSI command 'if expr="$var = /"' was used. завершающая строка multipart range ответа передавалась неверно.
Спасибо Evan Miller.
trailing boundary of multipart range response was transferred incorrectly.
Thanks to Evan Miller.
nginx не работал на Solaris/sparc64, если был собран Sun Studio.
Спасибо Андрею Нигматулину.
nginx did not work on Solaris/sparc64 if it was built by Sun Studio.
Thanks to Andrei Nigmatulin.
модуль ngx_http_perl_module не собирался make в Solaris.
Спасибо Андрею Нигматулину.
the ngx_http_perl_module could not be built by Solaris make.
Thanks to Andrei Nigmatulin.
значение переменной $request_time теперь записывается с точностью до миллисекунд. now the $request_time variable has millisecond precision. метод $r->rflush в модуле ngx_http_perl_module переименован в $r->flush. the method $r->rflush of ngx_http_perl_module was renamed to the $r->flush. переменная $upstream_addr. the $upstream_addr variable. директивы proxy_headers_hash_max_size и proxy_headers_hash_bucket_size.
Спасибо Володымыру Костырко.
the "proxy_headers_hash_max_size" and "proxy_headers_hash_bucket_size" directives.
Thanks to Volodymyr Kostyrko.
при использовании sendfile и limit_rate на 64-битных платформах нельзя было передавать файлы больше 2G. the files more than 2G could not be transferred using sendfile and limit_rate on 64-bit platforms. при использовании sendfile на 64-битном Linux нельзя было передавать файлы больше 2G. the files more than 2G could not be transferred using sendfile on 64-bit Linux.
модуль ngx_http_sub_filter_module. the ngx_http_sub_filter_module. переменные "$upstream_http_...". the "$upstream_http_..." variables. теперь переменные $upstream_status и $upstream_response_time содержат данные о всех обращениях к апстримам, сделанным до X-Accel-Redirect. now the $upstream_status and $upstream_response_time variables keep data about all upstreams before X-Accel-Redirect. если nginx был собран с модулем ngx_http_perl_module и perl не поддерживал multiplicity, то после первой переконфигурации и после получения любого сигнала в основном процессе происходил segmentation fault; ошибка появилась в 0.5.9. 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. если perl не поддерживал multiplicity, то после переконфигурации перловый код не работал; ошибка появилась в 0.3.38. if perl did not support multiplicity, then after reconfiguration perl code did not work; the bug had appeared in 0.3.38. теперь nginx для метода TRACE всегда возвращает код 405. now nginx always returns the 405 status for the TRACE method. теперь nginx поддерживает директиву include внутри блока types. now nginx supports the "include" directive inside the "types" block. использование переменной $document_root в директиве root и alias запрещено: оно вызывало рекурсивное переполнение стека. the $document_root variable usage in the "root" and "alias" directives is disabled: this caused recursive stack overflow. в использовании протокола HTTPS в директиве proxy_pass. in the HTTPS protocol in the "proxy_pass" directive. в некоторых случаях некэшируемые переменные (такие, как $uri) возвращали старое закэшированное значение. in some cases non-cacheable variables (such as $uri variable) returned old cached value. в качестве ключа для хэша в директиве ip_hash не использовалась сеть класса С.
Спасибо Павлу Ярковому.
the C-class network was not used as hash key in the "ip_hash" directive.
Thanks to Pavel Yarkovoy.
если в строке "Content-Type" в заголовке ответа бэкенда был указан charset и строка завершалась символом ";", то в рабочем процессе мог произойти segmentation fault; ошибка появилась в 0.3.50. 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. ошибки "[alert] zero size buf" при работе с FastCGI-сервером, если тело запроса, записанное во временный файл, было кратно 32K. the "[alert] zero size buf" error when FastCGI server was used and a request body written in a temporary file was multiple of 32K. nginx не собирался на Solaris без параметра --with-debug; ошибка появилась в 0.5.15. nginx could not be built on Solaris without the --with-debug option; the bug had appeared in 0.5.15.
почтовый прокси-сервер поддерживает аутентифицированное SMTP-проксирование и директивы smtp_auth, smtp_capabilities и xclient.
Спасибо Антону Южанинову и Максиму Дунину.
the mail proxy supports authenticated SMTP proxying and the "smtp_auth", "smtp_capabilities", and "xclient" directives.
Thanks to Anton Yuzhaninov and Maxim Dounin.
теперь keep-alive соединения закрываются сразу же по получении сигнала переконфигурации. now the keep-alive connections are closed just after receiving the reconfiguration signal. директивы imap и auth переименованы соответственно в mail и pop3_auth. the "imap" and "auth" directives were renamed to the "mail" and "pop3_auth" directives. если использовался метод аутентификации CRAM-MD5 и не был разрешён метод APOP, то в рабочем процессе происходил segmentation fault. a segmentation fault occurred in worker process if the CRAM-MD5 authentication method was used and the APOP method was disabled. при использовании директивы starttls only в протоколе POP3 nginx разрешал аутентификацию без перехода в режим SSL. if the "starttls only" directive was used in POP3 protocol, then nginx allowed authentication without switching to the SSL mode. рабочие процессы не выходили после переконфигурации и не переоткрывали логи, если использовался метод eventport. worker processes did not exit after reconfiguration and did not rotate logs if the eventport method was used. при использовании директивы ip_hash рабочий процесс мог зациклиться. a worker process may got caught in an endless loop, if the "ip_hash" directive was used. теперь nginx не пишет в лог некоторые alert'ы, если используются методы eventport или /dev/poll. now nginx does not log some alerts if eventport or /dev/poll methods are used.
nginx игнорировал лишние закрывающие скобки "}" в конце конфигурационного файла. nginx ignored superfluous closing "}" in the end of configuration file. методы COPY и MOVE. the COPY and MOVE methods. модуль ngx_http_realip_module устанавливал мусор для запросов, переданных по keep-alive соединению. the ngx_http_realip_module set garbage for requests passed via keep-alive connection. nginx не работал на 64-битном big-endian Linux.
Спасибо Андрею Нигматулину.
nginx did not work on big-endian 64-bit Linux.
Thanks to Andrei Nigmatulin.
при получении слишком длинной команды IMAP/POP3-прокси теперь сразу закрывает соединение, а не по таймауту. now when IMAP/POP3 proxy receives too long command it closes the connection right away, but not after timeout. если при использовании метода epoll клиент закрывал преждевременно соединение со своей стороны, то nginx закрывал это соединение только по истечении таймаута на передачу. if the "epoll" method was used and a client closed a connection prematurely, then nginx closed the connection after a send timeout only. nginx не собирался на платформах, отличных от i386, amd64, sparc и ppc; ошибка появилась в 0.5.8. nginx could not be built on platforms different from i386, amd64, sparc, and ppc; the bug had appeared in 0.5.8.
nginx не собирался на платформах, отличных от i386, amd64, sparc и ppc; ошибка появилась в 0.5.8. nginx could not be built on platforms different from i386, amd64, sparc, and ppc; the bug had appeared in 0.5.8. при использовании временных файлов в время работы с FastCGI-сервером в рабочем процессе мог произойти segmentation fault; ошибка появилась в 0.5.8. 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. если переменная $fastcgi_script_name записывалась в лог, то в рабочем процессе мог произойти segmentation fault. a segmentation fault might occur in worker process if the $fastcgi_script_name variable was logged. ngx_http_perl_module не собирался на Solaris. ngx_http_perl_module could not be built on Solaris. теперь configure определяет библиотеку PCRE в MacPorts.
Спасибо Chris McGrath.
now configure detects system PCRE library in MacPorts.
Thanks to Chris McGrath.
ответ был неверным, если запрашивалось несколько диапазонов; ошибка появилась в 0.5.6. the response was incorrect if several ranges were requested; the bug had appeared in 0.5.6. директива create_full_put_path не могла создавать промежуточные каталоги, если не была установлена директива dav_access.
Спасибо Evan Miller.
the "create_full_put_path" directive could not create the intermediate directories if no "dav_access" directive was set.
Thanks to Evan Miller.
вместо кодов ошибок "400" и "408" в access_log мог записываться код "0". the "0" response code might be logged in the access_log instead of the "400" and "408" error codes. при сборке с оптимизацией -O2 в рабочем процессе мог произойти segmentation fault. a segmentation fault might occur in worker process if nginx was built with -O2 optimization.
во время обновления исполняемого файла новый процесс не наследовал слушающие сокеты; ошибка появилась в 0.5.9. while online executable file upgrade the new master process did not inherit the listening sockets; the bug had appeared in 0.5.9. при сборке с оптимизацией -O2 в рабочем процессе мог произойти segmentation fault; ошибка появилась в 0.5.1. a segmentation fault might occur in worker process if nginx was built with -O2 optimization; the bug had appeared in 0.5.1. модуль ngx_http_memcached_module теперь в качестве ключа использует значение переменной $memcached_key. now the ngx_http_memcached_module uses the $memcached_key variable value as a key. переменная $memcached_key. the $memcached_key variable. параметр clean в директиве client_body_in_file_only. the "clean" parameter in the "client_body_in_file_only" directive. директива env. the "env" directive. директива sendfile работает внутри блока if. the "sendfile" directive is available inside the "if" block. теперь при ошибке записи в access_log nginx записывает сообщение в error_log, но не чаще одного раза в минуту. now on failure of the writing to access nginx logs a message to error_log, but not more often than once a minute. директива "access_log off" не всегда запрещала запись в лог. the "access_log off" directive did not always turn off the logging. если использовалась директива "client_body_in_file_only on" и тело запроса было небольшое, то мог произойти segmentation fault. a segmentation fault might occur if "client_body_in_file_only on" was used and a request body was small. происходил segmentation fault, если использовались директивы "client_body_in_file_only on" и "proxy_pass_request_body off" или "fastcgi_pass_request_body off", и делался переход к следующему бэкенду. a segmentation fault occurred if "client_body_in_file_only on" and "proxy_pass_request_body off" or "fastcgi_pass_request_body off" directives were used, and nginx switched to a next upstream. если при использовании директивы "proxy_buffering off" соединение с клиентом было неактивно, то оно закрывалось по таймауту, заданному директивой send_timeout; ошибка появилась в 0.4.7. 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. если при использовании метода epoll клиент закрывал преждевременно соединение со своей стороны, то nginx закрывал это соединение только по истечении таймаута на передачу. if the "epoll" method was used and a client closed a connection prematurely, then nginx closed the connection after a send timeout only. ошибки "[alert] zero size buf" при работе с FastCGI-сервером. the "[alert] zero size buf" error when FastCGI server was used. Исправление ошибок в директиве limit_zone. Bugfixes in the "limit_zone" directive. оптимизация использования памяти в ssl_session_cache. the ssl_session_cache storage optimization. Исправление ошибок в директивах ssl_session_cache и limit_zone. Bugfixes in the "ssl_session_cache" and "limit_zone" directives. на старте или во время переконфигурации происходил segmentation fault, если директивы ssl_session_cache или limit_zone использовались на 64-битных платформах. 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. при использовании директив add_before_body или add_after_body происходил segmentation fault, если в заголовке ответа нет строки "Content-Type". 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. библиотека OpenSSL всегда собиралась с поддержкой потоков.
Спасибо Дену Иванову.
the OpenSSL library was always built with the threads support.
Thanks to Den Ivanov.
совместимость библиотеки PCRE-6.5+ и компилятора icc. the PCRE-6.5+ library and the icc compiler compatibility.
теперь модуль ngx_http_index_module игнорирует все методы, кроме GET, HEAD и POST. now the ngx_http_index_module ignores all methods except the GET, HEAD, and POST methods. модуль ngx_http_limit_zone_module. the ngx_http_limit_zone_module. переменная $binary_remote_addr. the $binary_remote_addr variable. директивы ssl_session_cache модулей ngx_http_ssl_module и ngx_imap_ssl_module. the "ssl_session_cache" directives of the ngx_http_ssl_module and ngx_imap_ssl_module. метод DELETE поддерживает рекурсивное удаление. the DELETE method supports recursive removal. при использовании $r->sendfile() byte-ranges передавались неверно. the byte-ranges were transferred incorrectly if the $r->sendfile() was used. ключ -v больше не выводит информацию о компиляторе. the -v switch does not show compiler information any more. ключ -V. the -V switch. директива worker_rlimit_core поддерживает указание размера в K, M и G. the "worker_rlimit_core" directive supports size in K, M, and G. модуль nginx.pm теперь может устанавливаться непривилегированным пользователем. the nginx.pm module now could be installed by an unprivileged user. при использовании методов $r->request_body или $r->request_body_file мог произойти segmentation fault. a segmentation fault might occur if the $r->request_body or $r->request_body_file methods were used. ошибок, специфичных для платформы ppc. the ppc platform specific bugs. директиву perl можно использовать внутри блока limit_except. the "perl" directive may be used inside the "limit_except" block. модуль ngx_http_dav_module требовал строку "Date" в заголовке запроса для метода DELETE. the ngx_http_dav_module required the "Date" request header line for the DELETE method. при использовании одного параметра в директиве dav_access nginx мог сообщить об ошибке в конфигурации. if one only parameter was used in the "dav_access" directive, then nginx might report about configuration error. при использовании переменной $host мог произойти segmentation fault; ошибка появилась в 0.4.14. a segmentation fault might occur if the $host variable was used; the bug had appeared in 0.4.14. модуль ngx_http_perl_module поддерживает методы $r->status, $r->log_error и $r->sleep. the ngx_http_perl_module supports the $r->status, $r->log_error, and $r->sleep methods. метод $r->variable поддерживает переменные, неописанные в конфигурации nginx'а. the $r->variable method supports variables that do not exist in nginx configuration. метод $r->has_request_body не работал. the $r->has_request_body method did not work. если в директивах proxy_pass использовалось имя, указанное в upstream, то nginx пытался найти IP-адрес этого имени; ошибка появилась в 0.5.1. 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. директива post_action могла не работать после неудачного завершения запроса. the "post_action" directive might not run after a unsuccessful completion of a request. обход ошибки в Eudora для Mac; ошибка появилась в 0.4.11.
Спасибо Bron Gondwana.
for Eudora for Mac; the bug had appeared in 0.4.11.
Thanks to Bron Gondwana.
при указании в директиве fastcgi_pass имени описанного upstream'а выдавалось сообщение "no port in upstream"; ошибка появилась в 0.5.0. 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. если в директивах proxy_pass и fastcgi_pass использовались одинаковых имена серверов, но с разными портами, то эти директивы использовали первый описанный порт; ошибка появилась в 0.5.0. 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. если в директивах proxy_pass и fastcgi_pass использовались unix domain сокеты, то эти директивы использовали первый описанный сокет; ошибка появилась в 0.5.0. 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. ngx_http_auth_basic_module игнорировал пользователя, если он был указан в последней строке файла паролей и после пароля не было перевода строки, возврата каретки или символа ":". 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. переменная $upstream_response_time могла быть равна "0.000", хотя время обработки было больше 1 миллисекунды. the $upstream_response_time variable might be equal to "0.000", although response time was more than 1 millisecond.
параметры в виде "%name" в директиве log_format больше не поддерживаются. the parameters in the "%name" form in the "log_format" directive are not supported anymore. директивы proxy_upstream_max_fails, proxy_upstream_fail_timeout, fastcgi_upstream_max_fails, и fastcgi_upstream_fail_timeout, memcached_upstream_max_fails и memcached_upstream_fail_timeout больше не поддерживаются. 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. директива server в блоке upstream поддерживает параметры max_fails, fail_timeout и down. the "server" directive in the "upstream" context supports the "max_fails", "fail_timeout", and "down" parameters. директива ip_hash в блоке upstream. the "ip_hash" directive inside the "upstream" block. статус WAIT в строке "Auth-Status" в заголовке ответа сервера аутентификации IMAP/POP3 прокси. the WAIT status in the "Auth-Status" header line of the IMAP/POP3 proxy authentication server response. nginx не собирался на 64-битных платформах; ошибка появилась в 0.4.14. nginx could not be built on 64-bit platforms; the bug had appeared in 0.4.14. директива proxy_pass_error_message в IMAP/POP3 прокси. the "proxy_pass_error_message" directive in IMAP/POP3 proxy. теперь configure определяет библиотеку PCRE на FreeBSD, Linux и NetBSD. now configure detects system PCRE library on FreeBSD, Linux, and NetBSD. ngx_http_perl_module не работал с перлом, собранным с поддержкой потоков; ошибка появилась в 0.3.38. ngx_http_perl_module did not work with perl built with the threads support; the bug had appeared in 0.3.38. ngx_http_perl_module не работал корректно, если перл вызывался рекурсивно. ngx_http_perl_module did not work if perl was called recursively. nginx игнорировал имя сервера в строке запроса. nginx ignored a host name in a request line. если FastCGI сервер передавал много в stderr, то рабочий процесс мог зациклиться. a worker process may got caught in an endless loop, if a FastCGI server sent too many data to the stderr. при изменении системного времени переменная $upstream_response_time могла быть отрицательной. the $upstream_response_time variable may be negative if the system time was changed backward. при использовании POP3 серверу аутентификации IMAP/POP3 прокси не передавался параметр Auth-Login-Attempt. the "Auth-Login-Attempt" parameter was not sent to IMAP/POP3 proxy authentication server when POP3 was used. при ошибке соединения с сервером аутентификации IMAP/POP3 прокси мог произойти segmentation fault. a segmentation fault might occur if connect to IMAP/POP3 proxy authentication server failed. директиву proxy_pass можно использовать внутри блока limit_except. the "proxy_pass" directive may be used inside the "limit_except" block. директива limit_except поддерживает все WebDAV методы. the "limit_except" directive supports all WebDAV methods. при использовании директивы add_before_body без директивы add_after_body ответ передавался не полностью. if the "add_before_body" directive was used without the "add_after_body" directive, then a response did not transferred complete. большое тело запроса не принималось, если использовались метод epoll и deferred accept(). a large request body did not receive if the epoll method and the deferred accept() were used. для ответов модуля ngx_http_autoindex_module не выставлялась кодировка; ошибка появилась в 0.3.50. a charset could not be set for ngx_http_autoindex_module responses; the bug had appeared in 0.3.50. ошибки "[alert] zero size buf" при работе с FastCGI-сервером; the "[alert] zero size buf" error when FastCGI server was used; параметр конфигурации --group= игнорировался.
Спасибо Thomas Moschny.
the --group= configuration parameter was ignored.
Thanks to Thomas Moschny.
50-й подзапрос в SSI ответе не работал; ошибка появилась в 0.3.50. the 50th subrequest in SSI response did not work; the bug had appeared in 0.3.50.
модуль ngx_http_perl_module поддерживает метод $r->variable. the ngx_http_perl_module supports the $r->variable method. при включении в ответ большого статического файла с помощью SSI ответ мог передаваться не полностью. if a big static file was included using SSI in a response, then the response may be transferred incomplete. nginx не убирал "#fragment" в URI. nginx did not omit the "#fragment" part in URI. POP3 прокси поддерживает AUTH LOGIN PLAIN и CRAM-MD5. the POP3 proxy supports the AUTH LOGIN PLAIN and CRAM-MD5. модуль ngx_http_perl_module поддерживает метод $r->allow_ranges. the ngx_http_perl_module supports the $r->allow_ranges method. при включённой поддержке команды APOP в POP3 прокси могли не работать команды USER/PASS; ошибка появилась в 0.4.10. 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. POP3 прокси поддерживает APOP. the POP3 proxy supports the APOP command. при использовании методов select, poll и /dev/poll во время ожидания ответа от сервера аутентификации IMAP/POP3 прокси нагружал процессор. if the select, poll or /dev/poll methods were used, then while waiting authentication server response the IMAP/POP3 proxy hogged CPU. при использовании переменной $server_addr в директиве map мог произойти segmentation fault. a segmentation fault might occur if the $server_addr variable was used in the "map" directive. модуль ngx_http_flv_module не поддерживал byte ranges для полных ответов; ошибка появилась в 0.4.7. the ngx_http_flv_module did not support the byte ranges for full responses; the bug had appeared in 0.4.7. nginx не собирался на Debian amd64; ошибка появилась в 0.4.9. nginx could not be built on Debian amd64; the bug had appeared in 0.4.9. параметр set в команде SSI include. the "set" parameter in the "include" SSI command. модуль ngx_http_perl_module теперь проверяет версию модуля nginx.pm. the ngx_http_perl_module now tests the nginx.pm module version. если до команды SSI include с параметром wait выполнялась ещё одна команда SSI include, то параметр wait мог не работать. if an "include" SSI command were before another "include" SSI command with a "wait" parameter, then the "wait" parameter might not work. модуль ngx_http_flv_module добавлял FLV-заголовок для полных ответов.
Спасибо Алексею Ковырину.
the ngx_http_flv_module added the FLV header to the full responses.
Thanks to Alexey Kovyrin.
модуль ngx_http_flv_module. the ngx_http_flv_module. переменная $request_body_file. the $request_body_file variable. директивы charset и source_charset поддерживают переменные. the "charset" and "source_charset" directives support the variables. если до команды SSI include с параметром wait выполнялась ещё одна команда SSI include, то параметр wait мог не работать. if an "include" SSI command were before another "include" SSI command with a "wait" parameter, then the "wait" parameter might not work. при использовании директивы "proxy_buffering off" или при работе с memcached соединения могли не закрываться по таймауту. if the "proxy_buffering off" directive was used or while working with memcached the connections might not be closed on timeout. nginx не запускался на 64-битных платформах, отличных от amd64, sparc64 и ppc64. nginx did not run on 64-bit platforms except amd64, sparc64, and ppc64. nginx не запускался на 64-битных платформах, отличных от amd64, sparc64 и ppc64. nginx did not run on 64-bit platforms except amd64, sparc64, and ppc64. при запросе версии HTTP/1.1 nginx передавал ответ chunk'ами, если длина ответа в методе $r->headers_out("Content-Length", ...) была задана текстовой строкой. nginx sent the chunked response for HTTP/1.1 request,
if its length was set by text string in the $r->headers_out("Content-Length", ...) method.
после перенаправления ошибки с помощью директивы error_page любая директива модуля ngx_http_rewrite_module возвращала эту ошибку; ошибка появилась в 0.4.4. 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.
nginx не собирался на Linux и Solaris; ошибка появилась в 0.4.4. nginx could not be built on Linux and Solaris; the bug had appeared in 0.4.4. переменная $scheme. the $scheme variable. директива expires поддерживает параметр max. the "expires" directive supports the "max" parameter. директива include поддерживает маску "*".
Спасибо Jonathan Dance.
the "include" directive supports the "*" mask.
Thanks to Jonathan Dance.
директива return всегда изменяла код ответа, перенаправленного директивой error_page. the "return" directive always overrode the "error_page" response code redirected by the "error_page" directive. происходил segmentation fault, если в методе PUT передавалось тело нулевой длины. a segmentation fault occurred if zero-length body was in PUT method. при использовании переменных в директиве proxy_redirect редирект изменялся неверно. the redirect was changed incorrectly if the variables were used in the "proxy_redirect" directive.
ошибку 499 теперь нельзя перенаправить с помощью директивы error_page. now the 499 error could not be redirected using an "error_page" directive. поддержка Solaris 10 event ports. the Solaris 10 event ports support. модуль ngx_http_browser_module. the ngx_http_browser_module. при перенаправлении ошибки 400 проксированному серверу помощью директивы error_page мог произойти segmentation fault. a segmentation fault may occur while redirecting the 400 error to the proxied server using a "proxy_pass" directive. происходил segmentation fault, если в директиве proxy_pass использовался unix domain сокет; ошибка появилась в 0.3.47. a segmentation fault occurred if an unix domain socket was used in a "proxy_pass" directive; the bug had appeared in 0.3.47. SSI не работал с ответами memcached и небуферизированными проксированными ответами. SSI did work with memcached and nonbuffered responses. обход ошибки PAUSE hardware capability в Sun Studio. of the Sun Studio PAUSE hardware capability bug. убрана поддержка флага O_NOATIME на Linux; ошибка появилась в 0.4.1. the O_NOATIME flag support on Linux was canceled; the bug had appeared in 0.4.1. совместимость с DragonFlyBSD.
Спасибо Павлу Назарову.
the DragonFlyBSD compatibility.
Thanks to Pavel Nazarov.
обход ошибки в sendfile() в 64-битном Linux при передаче файлов больше 2G. of bug in 64-bit Linux sendfile(), when file is more than 2G. теперь на Linux nginx для статических запросов использует флаг O_NOATIME.
Спасибо Yusuf Goolamabbas.
now on Linux nginx uses O_NOATIME flag for static requests.
Thanks to Yusuf Goolamabbas.
Изменение во внутреннем API: инициализация модулей HTTP перенесена из фазы init module в фазу HTTP postconfiguration. Change in internal API: the HTTP modules initialization was moved from the init module phase to the HTTP postconfiguration phase. теперь тело запроса в модуле ngx_http_perl_module не считывается заранее: нужно явно инициировать чтение с помощью метода $r->has_request_body. 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. модуль ngx_http_perl_module поддерживает код возврата DECLINED. the ngx_http_perl_module supports the DECLINED return code. модуль ngx_http_dav_module поддерживает входящую строку заголовка "Date" для метода PUT. the ngx_http_dav_module supports the incoming "Date" header line for the PUT method. директива ssi работает внутри блока if. the "ssi" directive is available inside the "if" block. происходил segmentation fault, если в директиве index использовалась переменные и при этом первое имя индексного файла было без переменных; ошибка появилась в 0.1.29. 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. директива tcp_nodelay теперь по умолчанию включена. now the "tcp_nodelay" directive is turned on by default. директива msie_refresh. the "msie_refresh" directive. директива recursive_error_pages. the "recursive_error_pages" directive. директива rewrite возвращала неправильный редирект, если редирект включал в себя выделенные закодированные символы из оригинального URI. the "rewrite" directive returned incorrect redirect, if the redirect had the captured escaped symbols from original URI. во время перенаправления ошибки рабочий процесс мог зациклиться; ошибка появилась в 0.3.59. a worker process may got caught in an endless loop while an error redirection; the bug had appeared in 0.3.59. теперь можно делать несколько перенаправлений через директиву error_page. now is possible to do several redirection using the "error_page" directive. директива dav_access не поддерживала три параметра. the "dav_access" directive did not support three parameters. директива error_page не изменяла строку "Content-Type" после перенаправления с помощью "X-Accel-Redirect"; ошибка появилась в 0.3.58. 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. директива error_page поддерживает переменные. the "error_page" directive supports the variables. теперь на Linux используется интерфейс procfs вместо sysctl. now the procfs interface instead of sysctl is used on Linux. теперь при использовании "X-Accel-Redirect" строка "Content-Type" наследуется из первоначального ответа. now the "Content-Type" header line is inherited from first response when the "X-Accel-Redirect" was used. директива error_page не перенаправляла ошибку 413. the "error_page" directive did not redirect the 413 error. завершающий "?" не удалял старые аргументы, если в переписанном URI не было новых аргументов. the trailing "?" did not remove old arguments if no new arguments were added to a rewritten URI. nginx не запускался на 64-битной FreeBSD 7.0-CURRENT. nginx could not run on 64-bit FreeBSD 7.0-CURRENT. переменная $ssl_client_serial. the $ssl_client_serial variable. в операторе "!-e" в директиве if.
Спасибо Андриану Буданцову.
in the "!-e" operator of the "if" directive.
Thanks to Andrian Budanstov.
при проверке клиентского сертификата nginx не передавал клиенту информацию о требуемых сертификатах. while a client certificate verification nginx did not send to a client the required certificates information. переменная $document_root не поддерживала переменные в директиве root. the $document_root variable did not support the variables in the "root" directive.
директива dav_access. the "dav_access" directive. директива if поддерживает операторы "-d", "!-d", "-e", "!-e", "-x" и "!-x". the "if" directive supports the "-d", "!-d", "-e", "!-e", "-x", and "!-x" operators. при записи в access_log некоторых передаваемых клиенту строк заголовков происходил segmentation fault, если запрос возвращал редирект. a segmentation fault occurred if a request returned a redirect and some sent to client header lines were logged in the access log. параметр stub в команде SSI include. the "stub" parameter in the "include" SSI command. команда SSI block. the "block" SSI command. скрипт unicode2nginx добавлен в contrib. the unicode2nginx script was added to contrib. если root был задан только переменной, то корень задавался относительно префикса сервера. if a "root" was specified by variable only, then the root was relative to a server prefix. если в запросе был "//" или "/.", и после этого закодированные символы в виде "%XX", то проксируемый запрос передавался незакодированным. if the request contained "//" or "/./" and escaped symbols after them, then the proxied request was sent unescaped. метод $r->header_in("Cookie") модуля ngx_http_perl_module теперь возвращает все строки "Cookie" в заголовке запроса. the $r->header_in("Cookie") of the ngx_http_perl_module now returns all "Cookie" header lines. происходил segmentation fault, если использовался "client_body_in_file_only on" и делался переход к следующему бэкенду. a segmentation fault occurred if "client_body_in_file_only on" was used and nginx switched to a next upstream. при некоторых условиях во время переконфигурации коды символов внутри директивы charset_map могли считаться неверными; ошибка появилась в 0.3.50. on some condition while reconfiguration character codes inside the "charset_map" may be treated invalid; the bug had appeared in 0.3.50. nginx теперь записывает в лог информацию о подзапросах. nginx now logs the subrequest information to the error log. директивы proxy_next_upstream, fastcgi_next_upstream и memcached_next_upstream поддерживают параметр off. the "proxy_next_upstream", "fastcgi_next_upstream", and "memcached_next_upstream" directives support the "off" parameter. директива debug_connection поддерживает запись адресов в формате CIDR. the "debug_connection" directive supports the CIDR address form. при перекодировании ответа проксированного сервера или сервера FastCGI в UTF-8 или наоборот ответ мог передаваться не полностью. if a response of proxied server or FastCGI server was converted from UTF-8 or back, then it may be transferred incomplete. переменная $upstream_response_time содержала время только первого обращения к бэкенду. the $upstream_response_time variable had the time of the first request to a backend only. nginx не собирался на платформе amd64; ошибка появилась в 0.3.53. nginx could not be built on amd64 platform; the bug had appeared in 0.3.53. директива add_header добавляет строки в ответы с кодом 204, 301 и 302. the "add_header" directive adds the string to 204, 301, and 302 responses. директива server в блоке upstream поддерживает параметр weight. the "server" directive in the "upstream" context supports the "weight" parameter. директива server_name поддерживает маску "*". the "server_name" directive supports the "*" wildcard. nginx поддерживает тело запроса больше 2G. nginx supports the request body size more than 2G. если при использовании "satisfy_any on" клиент успешно проходил аутентификацию, в лог всё равно записалоcь сообщение "access forbidden by rule". if a client was successfully authorized using "satisfy_any on", then anyway the message "access forbidden by rule" was written in the log. метод PUT мог ошибочно не создать файл и вернуть код 409. the "PUT" method may erroneously not create a file and return the 409 code. если во время аутентификации IMAP/POP3 бэкенд возвращал ошибку, nginx продолжал проксирование. if the IMAP/POP3 backend returned an error, then nginx continued proxying anyway. восстановлено поведение модуля ngx_http_index_module для запросов "POST /": как в версии до 0.3.40, модуль теперь не выдаёт ошибку 405. 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. при использовании ограничения скорости рабочий процесс мог зациклиться; ошибка появилась в 0.3.37. the worker process may got caught in an endless loop if the limit rate was used; the bug had appeared in 0.3.37. модуль ngx_http_charset_module записывал в лог ошибку "unknown charset", даже если перекодировка не требовалась; ошибка появилась в 0.3.50. ngx_http_charset_module logged "unknown charset" alert, even if the recoding was not needed; the bug had appeared in 0.3.50. если в результате запроса PUT возвращался код 409, то временный файл не удалялся. if a code response of the PUT request was 409, then a temporary file was not removed. при некоторых условиях в SSI мог пропадать символы "<"; ошибка появилась в 0.3.50. the "<" symbols might disappeared some conditions in the SSI; the bug had appeared in 0.3.50. директивы proxy_redirect_errors и fastcgi_redirect_errors переименованы соответственно в proxy_intercept_errors и fastcgi_intercept_errors. the "proxy_redirect_errors" and "fastcgi_redirect_errors" directives was renamed to the "proxy_intercept_errors" and "fastcgi_intercept_errors" directives. модуль ngx_http_charset_module поддерживает перекодирование из однобайтных кодировок в UTF-8 и обратно. the ngx_http_charset_module supports the recoding from the single byte encodings to the UTF-8 encoding and back. в режиме прокси и FastCGI поддерживается строка заголовка "X-Accel-Charset" в ответе бэкенда. the "X-Accel-Charset" response header line is supported in proxy and FastCGI mode. символ "\" в парах "\"" и "\'" в SSI командах убирался, только если также использовался символ "$". the "\" escape symbol in the "\"" and "\'" pairs in the SSI command was removed only if the command also has the "$" symbol. при некоторых условиях в SSI после вставки могла быть добавлена строка "<!--". the "<!--" string might be added on some conditions in the SSI after inclusion. если в заголовке ответа была строка "Content-Length: 0", то при использовании небуферизированного проксировании не закрывалось соединение с клиентом. if the "Content-Length: 0" header line was in response, then in nonbuffered proxying mode the client connection was not closed. в директиве set. in the "set" directive. при включении в ssi двух и более подзапросов, обрабатываемых через FastCGI, вместо вывода второго и остальных подзапросов в ответ включался вывод первого подзапроса. if two or more FastCGI subrequests was in SSI, then first subrequest output was included instead of second and following subrequests. теперь модуль ngx_http_charset_module работает для подзапросов, в ответах которых нет строки заголовка "Content-Type". now the ngx_http_charset_module works for subrequests, if the response has no "Content-Type" header line. если в директиве proxy_pass не было URI, то директива "proxy_redirect default" добавляла в переписанный редирект в начало лишний слэш. 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. внутренний редирект всегда превращал любой HTTP-метод в GET, теперь это делается только для редиректов, выполняемых с помощью X-Accel-Redirect, и у которых метод не равен HEAD; ошибка появилась в 0.3.42. 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. модуль ngx_http_perl_module не собирался, если перл был с поддержкой потоков; ошибка появилась в 0.3.46. 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. директива upstream. the "upstream" directive. символ "\" в парах "\"" и "\'" в SSI командах теперь всегда убирается. now the "\" escape symbol in the "\"" and "\'" pairs in the SSI command is always removed. директивы proxy_hide_header, proxy_pass_header, fastcgi_hide_header и fastcgi_pass_header. the "proxy_hide_header", "proxy_pass_header", "fastcgi_hide_header", and "fastcgi_pass_header" directives. директивы proxy_pass_x_powered_by, fastcgi_x_powered_by и proxy_pass_server упразднены. the "proxy_pass_x_powered_by", "fastcgi_x_powered_by", and "proxy_pass_server" directives were canceled. в режиме прокси поддерживается строка заголовка "X-Accel-Buffering" в ответе бэкенда. the "X-Accel-Buffering" response header line is supported in proxy mode. ошибок и утечек памяти при переконфигурации в модуле ngx_http_perl_module. the reconfiguration bug and memory leaks in the ngx_http_perl_module. директивы ssl_verify_client, ssl_verify_depth и ssl_client_certificate. the "ssl_verify_client", "ssl_verify_depth", and "ssl_client_certificate" directives. теперь переменная $request_method возвращает метод только основного запроса. the $request_method variable now returns the main request method. в таблице перекодировки koi-win изменены коды символа &deg;. the &deg; symbol codes were changed in koi-win conversion table. в таблицу перекодировки koi-win добавлены символы евро и номера. the euro and N symbols were added to koi-win conversion table. если nginx распределял запросы на несколько машин, то при падении одной из них запросы, предназначенные для этой машины, перенаправлялись только на одну машину вместо того, чтобы равномерно распределяться между остальными. 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. параметр wait в команде SSI include. the "wait" parameter in the "include" SSI command. в таблицу перекодировки koi-win добавлены украинские и белорусские символы. the Ukrainian and Byelorussian characters were added to koi-win conversion table. в SSI. in the SSI. в SSI. in the SSI. параметр bind в директиве listen в IMAP/POP3 прокси. the "bind" option of the "listen" directive in IMAP/POP3 proxy. ошибки при использовании в директиве rewrite одного и того же выделения более одного раза. if the same capture in the "rewrite" directive was used more then once. в лог не записывались переменные $sent_http_content_type, $sent_http_content_length, $sent_http_last_modified, $sent_http_connection, $sent_http_keep_alive и $sent_http_transfer_encoding. 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. переменная $sent_http_cache_control возвращала содержимое только одной строки "Cache-Control" в заголовке ответа. the $sent_http_cache_control returned value of the single "Cache-Control" response header line. ключ -v. the -v switch. при включении в SSI удалённых подзапросов мог произойти segmentation fault. the segmentation fault may occurred if the SSI page has remote subrequests. в обработке FastCGI. in FastCGI handling. если путь к перловым модулям не был указан с помощью --with-perl_modules_path=PATH или директивы perl_modules, то на старте происходил segmentation fault. if the perl modules path was not set using --with-perl_modules_path=PATH or the "perl_modules", then the segmentation fault was occurred. модуль ngx_http_dav_module поддерживает метод MKCOL. the ngx_http_dav_module supports the MKCOL method. директива create_full_put_path. the "create_full_put_path" directive. переменная $limit_rate. the "$limit_rate" variable. директива uninitialized_variable_warn; уровень логгирования сообщения о неинициализированной переменной понижен с уровня alert на warn. the "uninitialized_variable_warn" directive; the logging level of the "uninitialized variable" message was lowered from "alert" to "warn". директива override_charset. the "override_charset" directive. при использовании неизвестной переменной в SSI-командах echo и if expr='$name' теперь не записывается в лог сообщение о неизвестной переменной. now if the unknown variable is used in the "echo" and "if expr='$name'" SSI-commands, then the "unknown variable" message is not logged. счётчик активных соединений рос при превышении лимита соединений, заданного директивой worker_connections; ошибка появилась в 0.2.0. 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. при некоторых условия ограничение скорости соединения могло не работать; ошибка появилась в 0.3.38. the limit rate might not work on some condition; the bug had appeared in 0.3.38. модуль ngx_http_dav_module. the ngx_http_dav_module. оптимизация модуля ngx_http_perl_module.
Спасибо Сергею Скворцову.
the ngx_http_perl_module optimizations.
Thanks to Sergey Skvortsov.
модуль ngx_http_perl_module поддерживает метод $r->request_body_file. the ngx_http_perl_module supports the $r->request_body_file method. директива client_body_in_file_only. the "client_body_in_file_only" directive. теперь при переполнении диска nginx пытается писать access_log'и только раз в секунду.
Спасибо Антону Южанинову и Максиму Дунину.
now on disk overflow nginx tries to write access logs once a second only.
Thanks to Anton Yuzhaninov and Maxim Dounin.
теперь директива limit_rate точнее ограничивает скорость при значениях больше 100 Kbyte/s.
Спасибо ForJest.
now the "limit_rate" directive more precisely limits rate if rate is more than 100 Kbyte/s.
Thanks to ForJest.
IMAP/POP3 прокси теперь передаёт серверу авторизации символы "\r" и "\n" в логине и пароле в закодированном виде.
Спасибо Максиму Дунину.
now the IMAP/POP3 proxy escapes the "\r" and "\n" symbols in login and password to pass authorization server.
Thanks to Maxim Dounin.
директива limit_except. the "limit_except" directive. директива if поддерживает операторы "!~", "!~*", "-f" и "!-f". the "if" directive supports the "!~", "!~*", "-f", and "!-f" operators. модуль ngx_http_perl_module поддерживает метод $r->request_body. the ngx_http_perl_module supports the $r->request_body method. в модуле ngx_http_addition_filter_module. in the ngx_http_addition_filter_module. модуль ngx_http_addition_filter_module. the ngx_http_addition_filter_module. директивы proxy_pass и fastcgi_pass можно использовать внутри блока if. the "proxy_pass" and "fastcgi_pass" directives may be used inside the "if" block. директивы proxy_ignore_client_abort и fastcgi_ignore_client_abort. the "proxy_ignore_client_abort" and "fastcgi_ignore_client_abort" directives. переменная $request_completion. the "$request_completion" variable. модуль ngx_http_perl_module поддерживает методы $r->request_method и $r->remote_addr. the ngx_http_perl_module supports the $r->request_method and $r->remote_addr. модуль ngx_http_ssi_module поддерживает команду elif. the ngx_http_ssi_module supports the "elif" command. строка "\/" в начале выражения команды if модуля ngx_http_ssi_module воспринималась неверно. the "\/" string in the expression of the "if" command of the ngx_http_ssi_module was treated incorrectly. в использовании регулярных выражениях в команде if модуля ngx_http_ssi_module. in the regular expressions in the "if" command of the ngx_http_ssi_module. при задании относительного пути в директивах client_body_temp_path, proxy_temp_path, fastcgi_temp_path и perl_modules использовался каталог относительно текущего каталога, а не относительно префикса сервера. 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. accept-фильтр и TCP_DEFER_ACCEPT устанавливались только для первой директивы listen; ошибка появилась в 0.3.31. the accept-filter and the TCP_DEFER_ACCEPT option were set for first "listen" directive only; the bug had appeared in 0.3.31. в директиве proxy_pass без URI при использовании в подзапросе. in the "proxy_pass" directive without the URI part in a subrequest. директива add_header поддерживает переменные. the "add_header" directive supports the variables. параметр http_503 в директивах proxy_next_upstream или fastcgi_next_upstream. the "http_503" parameter of the "proxy_next_upstream" or "fastcgi_next_upstream" directives. ngx_http_perl_module не работал со встроенным в конфигурационный файл кодом, если он не начинался сразу же с "sub". ngx_http_perl_module did not work with inlined in the configuration code, if it was not started with the "sub" word. в директиве post_action. in the "post_action" directive. удаление отладочного логгирования на старте и при переконфигурации; ошибка появилась в 0.3.31. the debug logging on startup and reconfiguration time was removed; the bug had appeared in 0.3.31. теперь nginx передаёт неверные ответы проксированного бэкенда. now nginx passes the malformed proxied backend responses. директивы listen поддерживают адрес в виде "*:порт". the "listen" directives support the address in the "*:port" form. поддержка EVFILER_TIMER в MacOSX 10.4. the EVFILER_TIMER support in MacOSX 10.4. обход ошибки обработки миллисекундных таймаутов kqueue в 64-битном ядре MacOSX.
Спасибо Андрею Нигматулину.
for MacOSX 64-bit kernel kqueue millisecond timeout bug.
Thanks to Andrei Nigmatulin.
если внутри одного сервера описаны несколько директив listen, слушающих на разных адресах, то имена серверов вида "*.domain.tld" работали только для первого адреса; ошибка появилась в 0.3.18. 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. при использовании протокола HTTPS в директиве proxy_pass не передавались запросы с телом, записанным во временный файл. 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. совместимость с perl 5.8.8. perl 5.8.8 compatibility.
уровень записи в лог ошибки ECONNABORTED изменён на error с уровня crit. the ECONNABORTED error log level was changed to "error" from "crit". модуль ngx_http_perl_module не собирался без модуля ngx_http_ssi_filter_module. the ngx_http_perl_module could not be build without the ngx_http_ssi_filter_module. nginx не собирался на i386 платформе, если использовался PIC; ошибка появилась в 0.3.27. nginx could not be built on i386 platform, if the PIC was used; the bug had appeared in 0.3.27. теперь nginx использует меньше памяти, если PHP в режиме FastCGI передаёт большое количество предупреждений перед ответом. now nginx uses less memory, if PHP in FastCGI mode sends many warnings before the response. в ответах 204 для запросов версии HTTP/1.1 выдавалась строка заголовка "Transfer-Encoding: chunked". the "Transfer-Encoding: chunked" header line was issued in the 204 responses for the HTTP/1.1 requests. nginx возвращал 502 код ответа, если FastCGI сервер передавал полные строки заголовка ответа в отдельных FastCGI записях. nginx returned the 502 response, if the complete response header lines were transferred in a separate FastCGI records. если в директиве post_action был указан проксируемый URI, то он выполнялся только после успешного завершения запроса. if the proxied URI was specified in the "post_action" directive, then it ran only after a successful completion of a request. директива restrict_host_names упразднена. the "restrict_host_names" directive was canceled. параметр конфигурации --with-cpu-opt=ppc64. the --with-cpu-opt=ppc64 configuration parameter. при некоторых условиях проксированное соединение с клиентом завершалось преждевременно.
Спасибо Владимиру Шутову.
on some condition the proxied connection with a client was terminated prematurely.
Thanks to Vladimir Shutoff.
строка заголовка "X-Accel-Limit-Rate" не учитывалась для запросов, перенаправленных с помощью строки "X-Accel-Redirect". the "X-Accel-Limit-Rate" header line was not taken into account if the request was redirected using the "X-Accel-Redirect" header line. директива post_action работала только после успешного завершения запроса. the "post_action" directive ran only after a successful completion of a request. тело проксированного ответа, создаваемого директивой post_action, передавалось клиенту. the proxied response body generated by the "post_action" directive was transferred to a client.
директивы variables_hash_max_size и variables_hash_bucket_size. the "variables_hash_max_size" and "variables_hash_bucket_size" directives. переменная $body_bytes_sent доступна не только в директиве log_format. the $body_bytes_sent variable can be used not only in the "log_format" directive. переменные $ssl_protocol и $ssl_cipher. the $ssl_protocol and $ssl_cipher variables. определение размера строки кэша распространённых процессоров при старте. the cache line size detection for widespread CPUs at start time. директива accept_mutex теперь поддерживается посредством fcntl(2) на платформах, отличных от i386, amd64, sparc64 и ppc. now the "accept_mutex" directive is supported using fcntl(2) on platforms different from i386, amd64, sparc64, and ppc. директива lock_file и параметр автоконфигурации --with-lock-path=PATH. the "lock_file" directive and the --with-lock-path=PATH autoconfiguration directive. при использовании протокола HTTPS в директиве proxy_pass не передавались запросы с телом. if the HTTPS protocol was used in the "proxy_pass" directive then the requests with the body was not transferred. директива optimize_host_names переименована в optimize_server_names. the "optimize_host_names" directive was renamed to the "optimize_server_names". при проксировании подзапроса в SSI бэкенду передавался URI основного запроса, если в директиве proxy_pass отсутствовал URI. 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. при неверной конфигурации на старте или во время переконфигурации происходил segmentation fault; ошибка появилась в 0.3.24. the segmentation fault was occurred on start or while reconfiguration if there was invalid configuration; the bug had appeared in 0.3.24. обход ошибки в kqueue во FreeBSD. for bug in FreeBSD kqueue. ответ, создаваемый директивой post_action, теперь не передаётся клиенту. now a response generated by the "post_action" directive is not transferred to a client. при использовании большого количества лог-файлов происходила утечка памяти. the memory leaks were occurring if many log files were used. внутри одного location работала только первая директива proxy_redirect. the first "proxy_redirect" directive was working inside one location. на 64-битных платформах при старте мог произойти segmentation fault, если использовалось большое количество имён в директивах server_name; ошибка появилась в 0.3.18. 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. директива optimize_host_names. the "optimize_host_names" directive. ошибки при использовании переменных в директивах path и alias. in using of the variables in the "path" and "alias" directives. модуль ngx_http_perl_module неправильно собирался на Linux и Solaris. the ngx_http_perl_module was incorrectly built on Linux and Solaris. модуль ngx_http_perl_module поддерживает методы $r->args и $r->unescape. the ngx_http_perl_module supports the $r->args and $r->unescape methods. метод $r->query_string в модуле ngx_http_perl_module упразднён. the method $r->query_string of ngx_http_perl_module was canceled. если в директиве valid_referers указаны только none или blocked, то происходил segmentation fault; ошибка появилась в 0.3.18. 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. модуль ngx_http_perl_module. the ngx_http_perl_module. директива valid_referers разрешает использовать рефереры совсем без URI. the "valid_referers" directive allows the referrers without URI part. ошибки в обработке SSI. in SSI handling. модуль ngx_http_memcached_module не поддерживал ключи в виде /uri?args. the ngx_http_memcached_module did not support the keys in the "/usr?args" form. директивы path и alias поддерживают переменные. the "path" and "alias" directives support the variables. теперь директива valid_referers опять учитывает URI. now the "valid_referers" directive again checks the URI part. ошибки в обработке SSI. in SSI handling. директива server_names поддерживает имена вида ".domain.tld". the "server_names" directive supports the ".domain.tld" names. директива server_names использует хэш для имён вида "*.domain.tld" и более эффективный хэш для обычных имён. the "server_names" directive uses the hash for the "*.domain.tld" names and more effective hash for usual names. директивы server_names_hash_max_size и server_names_hash_bucket_size. the "server_names_hash_max_size" and "server_names_hash_bucket_size" directives. директивы server_names_hash и server_names_hash_threshold упразднены. the "server_names_hash" and "server_names_hash_threshold" directives were canceled. директива valid_referers использует хэш для имён сайтов. the "valid_referers" directive uses the hash site names. теперь директива valid_referers проверяет только имена сайтов без учёта URI. now the "valid_referers" directive checks the site names only without the URI part. некоторые имена вида ".domain.tld" неверно обрабатывались модулем ngx_http_map_module. some ".domain.tld" names incorrectly processed by the ngx_http_map_module. если конфигурационного файла не было, то происходил segmentation fault; ошибка появилась в 0.3.12. segmentation fault was occurred if configuration file did not exist; the bug had appeared in 0.3.12. на 64-битных платформах при старте мог произойти segmentation fault; ошибка появилась в 0.3.16. on 64-bit platforms segmentation fault may occurred on start; the bug had appeared in 0.3.16. на Linux configure теперь проверяет наличие epoll и sendfile64() в ядре. now on Linux configure checks the presence of epoll and sendfile64() in kernel. директива map поддерживает доменные имена в формате ".domain.tld". the "map" directive supports domain names in the ".domain.tld" form. во время SSL handshake не иcпользовались таймауты; ошибка появилась в 0.2.4. the timeouts were not used in SSL handshake; the bug had appeared in 0.2.4. в использовании протокола HTTPS в директиве proxy_pass. in the HTTPS protocol in the "proxy_pass" directive. при использовании протокола HTTPS в директиве proxy_pass по умолчанию использовался порт 80. when the HTTPS protocol was used in the "proxy_pass" directive the port 80 was used by default. модуль ngx_http_map_module. the ngx_http_map_module. директивы types_hash_max_size и types_hash_bucket_size. the "types_hash_max_size" and "types_hash_bucket_size" directives. директива ssi_value_length. the "ssi_value_length" directive. директива worker_rlimit_core. the "worker_rlimit_core" directive. при сборке компиляторами icc 8.1 и 9.0 с оптимизацией для Pentium 4 номер соединения в логах всегда был равен 1. the connection number in logs was always 1 if nginx was built by the icc 8.1 or 9.0 compilers with optimization for Pentium 4. команда config timefmt в SSI задавала неверный формат времени. the "config timefmt" SSI command set incorrect time format. nginx не закрывал соединения с IMAP/POP3 бэкендом при использовании SSL соединений; ошибка появилась в 0.3.13.
Спасибо Rob Mueller.
nginx did not close connection to IMAP/POP3 backend for the SSL connections; the bug had appeared in 0.3.13.
Thanks to Rob Mueller.
segmentation fault мог произойти во время SSL shutdown; ошибка появилась в 0.3.13. segmentation fault may occurred in at SSL shutdown; the bug had appeared in 0.3.13.
новой код 444 в директиве return для закрытия соединения. the new 444 code of the "return" directive to close connection. директива so_keepalive в IMAP/POP3 прокси. the "so_keepalive" directive in IMAP/POP3 proxy. nginx теперь вызывает abort() при обнаружении незакрытых соединений только при плавном выходе и включённой директиве debug_points. if there are unclosed connection nginx now calls abort() only on graceful quit and active "debug_points" directive. в ответе 304 передавалось тело ответа; ошибка появилась в 0.3.13. in the 304 response the body was transferred; the bug had appeared in 0.3.13. IMAP/POP3 прокси поддерживает STARTTLS и STLS. the IMAP/POP3 proxy supports STARTTLS and STLS. IMAP/POP3 прокси не работала с методами select, poll и /dev/poll. the IMAP/POP3 proxy did not work with the select, poll, and /dev/poll methods. ошибки в обработке SSI. in SSI handling. sendfilev() в Solaris теперь не используется при передаче тела запроса FastCGI-серверу через unix domain сокет. now Solaris sendfilev() is not used to transfer the client request body to FastCGI-server via the unix domain socket. директива auth_basic не запрещала аутентификацию; ошибка появилась в 0.3.11. the "auth_basic" directive did not disable the authorization; the bug had appeared in 0.3.11. если nginx был собран с модулем ngx_http_realip_module, то при использовании директивы "satisfy_any on" директивы доступа и аутентификации не работали. Модуль ngx_http_realip_module не собирался и не собирается по умолчанию. 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. имя переменной "$time_gmt" изменено на "$time_local". the "$time_gmt" variable name was changed to "$time_local". директивы proxy_header_buffer_size и fastcgi_header_buffer_size переименованы соответственно в proxy_buffer_size и fastcgi_buffer_size. the "proxy_header_buffer_size" and "fastcgi_header_buffer_size" directives was renamed to the "proxy_buffer_size" and "fastcgi_buffer_size" directives. модуль ngx_http_memcached_module. the ngx_http_memcached_module. директива proxy_buffering. the "proxy_buffering" directive. изменение в работе с accept mutex при использовании метода rtsig; ошибка появилась в 0.3.0. the changes in accept mutex handling when the "rtsig" method was used; the bug had appeared in 0.3.0. если клиент передал строку "Transfer-Encoding: chunked" в заголовке запроса, то nginx теперь выдаёт ошибку 411. if the client sent the "Transfer-Encoding: chunked" header line, then nginx returns the 411 error. при наследовании директивы auth_basic с уровня http в строке "WWW-Authenticate" заголовка ответа выводился realm без текста "Basic realm". 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. если в директиве access_log был явно указан формат combined, то в лог записывались пустые строки; ошибка появилась в 0.3.8. 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. nginx не работал на платформе sparc под любыми OS, кроме Solaris. nginx did not run on the sparc platform under any OS except Solaris. в директиве if теперь не нужно разделять пробелом строку в кавычках и закрывающую скобку. now it is not necessary to place space between the quoted string and closing bracket in the "if" directive. nginx не передавал при проксировании тело запроса и строки заголовка клиента; ошибка появилась в 0.3.10. nginx did not pass the client request headers and body while proxying; the bug had appeared in 0.3.10. директива valid_referers и переменная $invalid_referer перенесены из модуля ngx_http_rewrite_module в новый модуль ngx_http_referer_module. the "valid_referers" directive and the "$invalid_referer" variable were moved to the new ngx_http_referer_module from the ngx_http_rewrite_module. имя переменной "$apache_bytes_sent" изменено на "$body_bytes_sent". the "$apache_bytes_sent" variable name was changed to "$body_bytes_sent". переменные "$sent_http_...". the "$sent_http_..." variables. директива if поддерживает операции "=" и "!=". the "if" directive supports the "=" and "!=" operations. директива proxy_pass поддерживает протокол HTTPS. the "proxy_pass" directive supports the HTTPS protocol. директива proxy_set_body. the "proxy_set_body" directive. директива post_action. the "post_action" directive. модуль ngx_http_empty_gif_module. the ngx_http_empty_gif_module. директива worker_cpu_affinity для Linux. the "worker_cpu_affinity" directive for Linux. директива rewrite не раскодировала символы в редиректах в URI, теперь символы раскодируются, кроме символов %00-%25 и %7F-%FF. the "rewrite" directive did not unescape URI part in redirect, now it is unescaped except the %00-%25 and %7F-%FF characters. nginx не собирался компилятором icc 9.0. nginx could not be built by the icc 9.0 compiler. если для статического файла нулевого размера был разрешён SSI, то ответ передавался неверно при кодировании chunk'ами. if the SSI was enabled for zero size static file, then the chunked response was encoded incorrectly. nginx считал небезопасными URI, в которых между двумя слэшами находилось два любых символа; ошибка появилась в 0.3.8. nginx considered URI as unsafe if two any symbols was between two slashes; the bug had appeared in 0.3.8. nginx теперь проверят URI, полученные от бэкенда в строке "X-Accel-Redirect" в заголовке ответа, или в SSI файле на наличие путей "/../" и нулей. nginx now checks URI got from a backend in "X-Accel-Redirect" header line or in SSI file for the "/../" paths and zeroes. nginx теперь не воспринимает пустое имя как правильное в строке "Authorization" в заголовке запроса. nginx now does not treat the empty user name in the "Authorization" header line as valid one. директива ssl_session_timeout модулей ngx_http_ssl_module и ngx_imap_ssl_module. the "ssl_session_timeout" directives of the ngx_http_ssl_module and ngx_imap_ssl_module. директива auth_http_header модуля ngx_imap_auth_http_module. the "auth_http_header" directive of the ngx_imap_auth_http_module. директива add_header. the "add_header" directive. модуль ngx_http_realip_module. the ngx_http_realip_module. новые переменные для использования в директиве 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" скоро будут упразднены. 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. в директиве "if" ложными значениями переменных теперь являются пустая строка "" и строки, начинающиеся на "0". now the false variable values in the "if" directive are the empty string "" and string starting with "0". при работает с проксированными или FastCGI-серверами nginx мог оставлять открытыми соединения и временные файлы с запросами клиентов. while using proxied or FastCGI-server nginx may leave connections and temporary files with client requests in open state. рабочие процессы не сбрасывали буферизированные логи при плавном выходе. the worker processes did not flush the buffered logs on graceful exit. если URI запроса изменялось с помощью rewrite, а затем запрос проксировался в location, заданном регулярным выражением, то бэкенду передавался неверный запрос; ошибка появилась в 0.2.6. 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. директива expires не удаляла уже установленную строку заголовка "Expires". the "expires" directive did not remove the previous "Expires" header. при использовании метода rtsig и нескольких рабочих процессах nginx мог перестать принимать запросы. nginx may stop to accept requests if the "rtsig" method and several worker processes were used. в SSI командах неверно обрабатывались строки "\"" и "\'". the "\"" and "\'" escape symbols were incorrectly handled in SSI commands. если ответ заканчивался сразу же после SSI команды, то при использовании сжатия ответ передавался не до конца или не передавался вообще. 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. директива access_log поддерживает параметр buffer=. the "access_log" supports the "buffer=" parameter. nginx не собирался на платформах, отличных от i386, amd64, sparc и ppc; ошибка появилась в 0.3.2. nginx could not be built on platforms different from i386, amd64, sparc, and ppc; the bug had appeared in 0.3.2. IMAP/POP3 прокси теперь не передаёт серверу авторизации пустой логин. now the IMAP/POP3 proxy do not send the empty login to authorization server. директива log_format поддерживает переменные в виде $name. the "log_format" supports the variables in the $name form. если хотя бы в одном сервере не было описано ни одной директивы listen, то nginx не слушал на 80 порту; ошибка появилась в 0.3.3. 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. если в директиве proxy_pass отсутствовал URI, то всегда использовался порт 80. if the URI part is omitted in "proxy_pass" directive, the 80 port was always used. если логин IMAP/POP3 менялся сервером авторизации, то мог произойти segmentation fault; ошибка появилась в 0.2.2. the segmentation fault may occurred if the IMAP/POP3 login was changed by authorization server; the bug had appeared in 0.2.2. accept mutex не работал, все соединения обрабатывались одним рабочим процессом; ошибка появилась в 0.3.3. the accept mutex did not work and all connections were handled by one process; the bug had appeared in 0.3.3. при использовании метода rtsig и директивы timer_resolution не работали таймауты. the timeout did not work if the "rtsig" method and the "timer_resolution" directive were used. nginx не собирался на Linux 2.4+ и MacOS X; ошибка появилась в 0.3.3. nginx could not be built on Linux 2.4+ and MacOS X; the bug had appeared in 0.3.3. параметры "bl" и "af" директивы listen переименованы в "backlog" и "accept_filter". the "bl" and "af" parameters of the "listen" directive was renamed to the "backlog" and "accept_filter". параметры "rcvbuf" и "sndbuf" в директиве listen. the "rcvbuf" and "sndbuf" parameters of the "listen" directive. параметр лога $msec теперь не требует дополнительного системного вызова gettimeofday(). the "$msec" log parameter does not require now the additional the gettimeofday() system call. ключ -t теперь проверяет директивы listen. the -t switch now tests the "listen" directives. если в директиве listen был указан неверный адрес, то nginx после сигнала -HUP оставлял открытый сокет в состоянии CLOSED. if the invalid address was specified in the "listen" directive, then after the -HUP signal nginx left an open socket in the CLOSED state. для индексных файлов, содержащих в имени переменную, мог неверно выставляться тип mime по умолчанию; ошибка появилась в 0.3.0. 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. директива timer_resolution. the "timer_resolution" directive. параметр лога $upstream_response_time в миллисекундах. the millisecond "$upstream_response_time" log parameter. временный файл с телом запроса клиента теперь удаляется сразу после того, как клиенту передан заголовок ответа. a temporary file with client request body now is removed just after the response header was transferred to a client. совместимость с OpenSSL 0.9.6. OpenSSL 0.9.6 compatibility. пути к файлам с SSL сертификатом и ключом не могли быть относительными. the SSL certificate and key file paths could not be relative. директива ssl_prefer_server_ciphers не работала для модуля ngx_imap_ssl_module. the "ssl_prefer_server_ciphers" directive did not work in the ngx_imap_ssl_module. директива ssl_protocols позволяла задать только один протокол. the "ssl_protocols" directive allowed to specify the single protocol only. поддержка Sun Studio 10 C compiler. the Sun Studio 10 C compiler support. директивы proxy_upstream_max_fails, proxy_upstream_fail_timeout, fastcgi_upstream_max_fails и fastcgi_upstream_fail_timeout. the "proxy_upstream_max_fails", "proxy_upstream_fail_timeout", "fastcgi_upstream_max_fails", and "fastcgi_upstream_fail_timeout" directives. во время переполнения очереди сигналов при использовании метода rtsig происходил segmentation fault; ошибка появилась в 0.2.0. the segmentation fault occurred when the signal queue overflowed if the "rtsig" method was used; the bug had appeared in 0.2.0. корректная обработка пар "\\", "\"", "\'" и "\$" в SSI. correct handling of the "\\", "\"", "\'", and "\$" pairs in SSI. убрано десятидневное ограничение времени работы рабочего процесса. Ограничение было введено из-за переполнения миллисекундных таймеров. the 10-days live time limit of worker process was eliminated. The limit was introduced because of millisecond timers overflow. с 60 до 10 секунд уменьшено время повторного обращения к бэкенду при использовании распределения нагрузки. while using load-balancing the time before the failed backend retry was decreased from 60 to 10 seconds. директива proxy_pass_unparsed_uri упразднена, оригинальный запрос теперь передаётся, если в директиве proxy_pass отсутствует URI. the "proxy_pass_unparsed_uri" was canceled, the original URI now passed, if the URI part is omitted in "proxy_pass" directive. директива error_page поддерживает редиректы и позволяет более гибко менять код ошибки. the "error_page" directive supports redirects and allows more flexible to change an error code. в проксированных подзапросах теперь игнорируется переданный charset. the charset in the "Content-Type" header line now is ignored in proxied subrequests. если после изменения URI в блоке if для запроса не находилась новая конфигурация, то правила модуля ngx_http_rewrite_module выполнялись снова. 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. если директива set устанавливала переменную модуля ngx_http_geo_module в какой-либо части конфигурации, то эта переменная не была доступна в других частях конфигурации и выдавалась ошибка "using uninitialized variable"; ошибка появилась в 0.2.2. 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. дублирующее значение переменной модуля ngx_http_geo_module теперь выдаёт предупреждение и изменяет старое значение. the duplicate value of the ngx_http_geo_module variable now causes the warning and changes old value. модуль ngx_http_ssi_module поддерживает команду set. the ngx_http_ssi_module supports the "set" command. модуль ngx_http_ssi_module поддерживает параметр file в команде include. the ngx_http_ssi_module supports the "file" parameter in the "include" command. модуль ngx_http_ssi_module поддерживает подстановку значений переменных в выражениях команды if. the ngx_http_ssi_module supports the variable value substitutions in expressions of the "if" command. модуль ngx_http_ssi_module поддерживает выражения "$var=text", "$var!=text", "$var=/text/" и "$var!=/text/" в команде if. the ngx_http_ssi_module supports "$var=text", "$var!=text", "$var=/text/", and "$var!=/text/" expressions in the "if" command. ошибки при проксировании location без слэша в конце; ошибка появилась в 0.1.44. in proxying location without trailing slash; the bug had appeared in 0.1.44. при использовании метода rtsig мог произойти segmentation fault; ошибка появилась в 0.2.0. the segmentation fault may occurred if the "rtsig" method was used; the bug had appeared in 0.2.0. nginx не собирался без параметра --with-debug; ошибка появилась в 0.2.2. nginx could not be built without the --with-debug option; the bug had appeared in 0.2.2. команда config errmsg в модуле ngx_http_ssi_module. the "config errmsg" command of the ngx_http_ssi_module. переменные модуля ngx_http_geo_module можно переопределять директивой set. the ngx_http_geo_module variables can be overridden by the "set" directive. директивы ssl_protocols и ssl_prefer_server_ciphers модулей ngx_http_ssl_module и ngx_imap_ssl_module. the "ssl_protocols" and "ssl_prefer_server_ciphers" directives of the ngx_http_ssl_module and ngx_imap_ssl_module. ошибка в модуле ngx_http_autoindex_module при показе длинных имён файлов; the ngx_http_autoindex_module did not show correctly the long file names; модуль ngx_http_autoindex_module теперь не показывает файлы, начинающиеся на точку. the ngx_http_autoindex_module now do not show the files starting by dot. если SSL handshake завершался с ошибкой, то это могло привести также к закрытию другого соединения.
Спасибо Rob Mueller.
if the SSL handshake failed then another connection may be closed too.
Thanks to Rob Mueller.
экспортные версии MSIE 5.x не могли соединиться по HTTPS. the export versions of MSIE 5.x could not connect via HTTPS.
если все бэкенды, используемые для балансировки нагрузки, оказывались в нерабочем состоянии после одной ошибки, то nginx мог зациклится; ошибка появилась в 0.2.0. 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. Изменились имена pid-файлов, используемые во время обновления исполняемого файла. Ручное переименование теперь не нужно. Старый основной процесс добавляет к своему pid-файл суффикс ".oldbin" и запускает новый исполняемый файл. Новый основной процесс создаёт обычный pid-файл без суффикса ".newbin". Если новый основной процесс выходит, то старый процесс переименовывает свой pid-файл c суффиксом ".oldbin" в pid-файл без суффикса. При обновлении с версии 0.1.х до 0.2.0 нужно учитывать, что оба процесса—старый 0.1.x и новый 0.2.0—используют pid-файл без суффиксов. 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. директива worker_connections, новое название директивы connections; директива теперь задаёт максимальное число соединений, а не максимально возможный номер дескриптора для сокета. the "worker_connections" directive, new name of the "connections" directive; now the directive specifies maximum number of connections, but not maximum socket descriptor number. SSL поддерживает кэширование сессий в пределах одного рабочего процесса. SSL supports the session cache inside one worker process. директива satisfy_any. the "satisfy_any" directive. модули ngx_http_access_module и ngx_http_auth_basic_module не работают для подзапросов. the ngx_http_access_module and ngx_http_auth_basic_module do not run for subrequests. директивы worker_rlimit_nofile и worker_rlimit_sigpending. the "worker_rlimit_nofile" and "worker_rlimit_sigpending" directives. если все бэкенды, используемые для балансировки нагрузки, оказывались в нерабочем состоянии после одной ошибки, то nginx не обращался к ним в течение 60 секунд. if all backend using in load-balancing failed after one error, then nginx did not try do connect to them during 60 seconds. в парсинге аргументов IMAP/POP3 команд.
Спасибо Rob Mueller.
in IMAP/POP3 command argument parsing.
Thanks to Rob Mueller.
ошибки при использовании SSL в IMAP/POP3 прокси. errors while using SSL in IMAP/POP3 proxy. ошибки при использовании SSI и сжатия. errors while using SSI and gzipping. в ответах 304 не добавлялись строки заголовка ответа "Expires" и "Cache-Control".
Спасибо Александру Кукушкину.
the "Expires" and "Cache-Control" header lines were omitted from the 304 responses.
Thanks to Alexandr Kukushkin.
директива ssl_engine упразднена в модуле ngx_http_ssl_module и перенесена на глобальный уровень. the "ssl_engine" directive was canceled in the ngx_http_ssl_module and now is introduced at global level. ответы с подзапросами, включённые с помощью SSI, не передавались через SSL соединение. the responses with SSI subrequests did not transferred via SSL connection. Разные исправления в IMAP/POP3 прокси. Various bug fixes in the IMAP/POP3 proxy. IMAP/POP3 прокси поддерживает SSL. the IMAP/POP3 proxy supports SSL. директива proxy_timeout модуля ngx_imap_proxy_module. the "proxy_timeout" directive of the ngx_imap_proxy_module. директива userid_mark. the "userid_mark" directive. значение переменной $remote_user определяется независимо от того, используется ли авторизация или нет. the $remote_user variable value is determined independently of authorization use. listen(2) backlog в директиве listen можно менять по сигналу -HUP. the listen(2) backlog in the "listen" directive can be changed using the -HUP signal. скрипт geo2nginx.pl добавлен в contrib. the geo2nginx.pl script was added to contrib. параметры FastCGI с пустым значениями теперь передаются серверу. the FastCGI parameters with the empty values now are passed to a server. если в ответе проксированного сервера или FastCGI сервера была строка "Cache-Control", то при использовании директивы expires происходил segmentation fault или рабочий процесс мог зациклится; в режиме прокси ошибка появилась в 0.1.29. 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. если URI запроса получался нулевой длины после обработки модулем ngx_http_rewrite_module, то в модуле ngx_http_proxy_module происходил segmentation fault или bus error. 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. директива limit_rate не работала внутри блока if; ошибка появилась в 0.1.38. the "limit_rate" directive did not work inside the "if" block; the bug had appeared in 0.1.38. если переменная использовалась в файле конфигурации, то она не могла использоваться в SSI. if the variable was used in the configuration file, then it can not be used in SSI. если клиент слал очень длинную строку заголовка, то в логе не помещалась информация, связанная с этим запросом. if a client sent too long header line, then the request information did not logged in the error log. при использовании "X-Accel-Redirect" не передавалась строка "Set-Cookie"; ошибка появилась в 0.1.39. the "Set-Cookie" header line was not transferred when the "X-Accel-Redirect" was used; the bug had appeared in 0.1.39. при использовании "X-Accel-Redirect" не передавалась строка "Content-Disposition". the "Content-Disposition" header line was not transferred when the "X-Accel-Redirect" was used. по сигналу SIGQUIT основной процесс не закрывал сокеты, на которых он слушал. the master process did not close the listen socket on the SIGQUIT signal. после обновления исполняемого файла на лету на Linux и Solaris название процесса в команде ps становилось короче. after on-line upgrade on Linux and Solaris the process name became shorter in the "ps" command. Изменения в модуле ngx_http_charset_module: директива default_charset упразднена; директива charset задаёт кодировку ответа; директива source_charset задаёт только исходную кодировку. 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. при перенаправлении ошибки 401, полученной от бэкенда, не передавалась строка заголовка "WWW-Authenticate". the backend "WWW-Authenticate" header line did not transferred while the 401 response code redirecting. модули ngx_http_proxy_module и ngx_http_fastcgi_module могли закрыть соединение до того, как что-нибудь было передано клиенту; ошибка появилась в 0.1.38. 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. обработка ошибки инициализации в crypt_r() в Linux glibc. the Linux glibc crypt_r() initialization bug. модуль ngx_http_ssi_module не поддерживал относительные URI в команде include virtual. the ngx_http_ssi_module did not support the relative URI in the "include virtual" command. если в строке заголовка ответа бэкенда была строка "Location", которую nginx не должен был изменять, то в ответе передавалось тело 500 ошибки; ошибка появилась в 0.1.29. 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. некоторые директивы модулей ngx_http_proxy_module и ngx_http_fastcgi_module не наследовались с уровня server на уровень location; ошибка появилась в 0.1.29. 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. модуль ngx_http_ssl_module не поддерживал цепочки сертификатов. the ngx_http_ssl_module did not support the certificate chain. ошибка в модуле ngx_http_autoindex_module при показе длинных имён файлов; ошибка появилась в 0.1.38. the ngx_http_autoindex_module did not show correctly the long file names; the bug had appeared in 0.1.38. Исправления в IMAP/POP3 прокси при взаимодействии с бэкендом на стадии login. Bugfixes in IMAP/POP3 proxy in interaction with a backend at the login state. директива limit_rate поддерживается в режиме прокси и FastCGI. the "limit_rate" directive is supported in proxy and FastCGI mode. в режиме прокси и FastCGI поддерживается строка заголовка "X-Accel-Limit-Rate" в ответе бэкенда. the "X-Accel-Limit-Rate" response header line is supported in proxy and FastCGI mode. директива break. the "break" directive. директива log_not_found. the "log_not_found" directive. при перенаправлении запроса с помощью строки заголовка "X-Accel-Redirect" не изменялся код ответа. the response status code was not changed when request was redirected by the ""X-Accel-Redirect" header line. переменные, установленные директивой set не могли использоваться в SSI. the variables set by the "set" directive could not be used in SSI. при включении в SSI более одного удалённого подзапроса мог произойти segmentation fault. the segmentation fault may occurred if the SSI page has more than one remote subrequest. если статусная строка в ответе бэкенда передавалась в двух пакетах, то nginx считал ответ неверным; ошибка появилась в 0.1.29. 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. директива ssi_types. the "ssi_types" directive. директива autoindex_exact_size. the "autoindex_exact_size" directive. модуль ngx_http_autoindex_module не поддерживал длинные имена файлов в UTF-8. the ngx_http_autoindex_module did not support the long file names in UTF-8. IMAP/POP3 прокси. the IMAP/POP3 proxy. в конце файла nginx.pid теперь добавляется "\n". now the "\n" is added to the end of the "nginx.pid" file. при включении большого количества вставок или нескольких больших вставок с помощью SSI ответ мог передаваться не полностью. the responses may be transferred not completely, if many parts or the big parts were included by SSI. если все бэкенды возвращали ответ 404, то при использовании параметра http_404 в директивах proxy_next_upstream или fastcgi_next_upstream, nginx начинал запрашивать все бэкенды снова. 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. если в заголовке запроса есть дублирующиеся строки "Host", "Connection", "Content-Length" и "Authorization", то nginx теперь выдаёт ошибку 400. if the request header has duplicate the "Host", "Connection", "Content-Length", or "Authorization" lines, then nginx now returns the 400 error. директива post_accept_timeout упразднена. the "post_accept_timeout" directive was canceled. параметры default, af=, bl=, deferred и bind в директиве listen. the "default", "af=", "bl=", "deferred", and "bind" parameters of the "listen" directive. поддержка accept фильтров во FreeBSD. the FreeBSD accept filters support. поддержка TCP_DEFER_ACCEPT в Linux. the Linux TCP_DEFER_ACCEPT support. модуль ngx_http_autoindex_module не поддерживал имена файлов в UTF-8. the ngx_http_autoindex_module did not support the file names in UTF-8. после добавления новый лог-файл ротация этого лога по сигналу -USR1 выполнялась, только если переконфигурировать nginx два раза по сигналу -HUP. the new log file can be rotated by the -USR1 signal only if the reconfiguration by the -HUP signal was made twice. директива working_directory. the "working_directory" directive. директива port_in_redirect. the "port_in_redirect" directive. если заголовок ответа бэкенда не помещался в один пакет, то происходил segmentation fault; ошибка появилась в 0.1.29. the segmentation fault was occurred if the backend response header was in several packets; the bug had appeared in 0.1.29. если было сконфигурировано более 10 серверов или в сервере не описана директива "listen", то при запуске мог произойти segmentation fault. 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. если ответ не помещался во временный файл, то мог произойти segmentation fault. the segmentation fault might occur if the response was bigger than the temporary file. nginx возвращал ошибку 400 на запросы вида "GET http://www.domain.com/uri HTTP/1.0"; ошибка появилась в 0.1.28. nginx returned the 400 response on requests like "GET http://www.domain.com/uri HTTP/1.0"; the bug had appeared in 0.1.28. при включении больших ответов с помощью SSI рабочий процесс мог зациклиться. the worker process may got caught in an endless loop if the big response part were include by SSI. переменные, устанавливаемые директивой "set", не были доступны в SSI. the variables set by the "set" directive were not available in SSI. директива autoindex_localtime. the "autoindex_localtime" directive. пустое значение в директиве proxy_set_header запрещает передачу заголовка. the empty value of the "proxy_set_header" directive forbids the client request header line passing. nginx не собирался с параметром --without-pcre; ошибка появилась в 0.1.29. nginx could not be built with the --without-pcre parameter; the bug had appeared in 0.1.29. 3, 5, 7 и 8 директив proxy_set_header на одном уровне вызывали bus fault при запуске. 3, 4, 7, and 8 the "proxy_set_header" directives in one level cause the bus fault on start up. в редиректах внутри HTTPS сервера был указан протокол HTTP. the HTTP protocol was specified in the HTTPS redirects. если директива rewrite использовала выделения внутри директивы if, то возвращалась ошибка 500. if the "rewrite" directive used the captures inside the "if" directive, then the 500 error code was returned. в редиректах, выдаваемых с помощью директивы rewrite, не передавались аргументы; ошибка появилась в 0.1.29. the arguments were omitted in the redirects, issued by the "rewrite" directive; the bug had appeared in 0.1.29. директива if поддерживает выделения в регулярных выражениях. the "if" directive supports the captures in regular expressions. директива set поддерживает переменные и выделения из регулярных выражений. the "set" directive supports the variables and the captures of regular expressions. в режиме прокси и FastCGI поддерживается строка заголовка "X-Accel-Redirect" в ответе бэкенда. the "X-Accel-Redirect" response header line is supported in proxy and FastCGI mode. при использовании SSL ответ мог передаваться не до конца. the response encrypted by SSL may not transferred complete. ошибки при обработке SSI в ответе, полученного от FastCGI-сервера. errors while processing FastCGI response by SSI. ошибки при использовании SSI и сжатия. errors while using SSI and gzipping. редирект с кодом 301 передавался без тела ответа; ошибка появилась в 0.1.30. the redirect with the 301 code was transferred without response body; the bug had appeared in 0.1.30. при использовании SSI рабочий процесс мог зациклиться. the worker process may got caught in an endless loop if the SSI was used. при использовании SSL ответ мог передаваться не до конца. the response encrypted by SSL may not transferred complete. если длина части ответа, полученного за один раз от проксируемого или FastCGI сервера была равна 500 байт, то nginx возвращал код ответа 500; в режиме прокси ошибка появилась только в 0.1.29. 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. nginx не считал неверными директивы с 8-ю или 9-ю параметрами. nginx did not consider the directives with 8 or 9 parameters as invalid. директива return может возвращать код ответа 204. the "return" directive can return the 204 response code. директива ignore_invalid_headers. the "ignore_invalid_headers" directive. модуль ngx_http_ssi_module поддерживает команду include virtual. the ngx_http_ssi_module supports "include virtual" command. модуль ngx_http_ssi_module поддерживает условную команду вида 'if expr="$NAME"' и команды else и endif. Допускается только один уровень вложенности. the ngx_http_ssi_module supports the condition command like 'if expr="$NAME"' and "else" and "endif" commands. Only one nested level is supported. модуль ngx_http_ssi_module поддерживает две переменные DATE_LOCAL и DATE_GMT и команду config timefmt. the ngx_http_ssi_module supports the DATE_LOCAL and DATE_GMT variables and "config timefmt" command. директива ssi_ignore_recycled_buffers. the "ssi_ignore_recycled_buffers" directive. если переменная QUERY_STRING не была определена, то в команде echo не ставилось значение по умолчанию. the "echo" command did not show the default value for the empty QUERY_STRING variable. модуль ngx_http_proxy_module полностью переписан. the ngx_http_proxy_module was rewritten. директивы proxy_redirect, proxy_pass_request_headers, proxy_pass_request_body и proxy_method. the "proxy_redirect", "proxy_pass_request_headers", "proxy_pass_request_body", and "proxy_method" directives. директива proxy_set_header. Директива proxy_x_var упразднена и должна быть заменена директивой proxy_set_header. the "proxy_set_header" directive. The "proxy_x_var" was canceled and must be replaced with the proxy_set_header directive. директива proxy_preserve_host упразднена и должна быть заменена директивами "proxy_set_header Host $host" и "proxy_redirect off" или директивой "proxy_set_header Host $host:$proxy_port" и соответствующими ей директивами proxy_redirect. the "proxy_preserve_host" is canceled and must be replaced with the "proxy_set_header Host $host" and the "proxy_redirect off" directives, the "proxy_set_header Host $host:$proxy_port" directive and the appropriate proxy_redirect directives. директива proxy_set_x_real_ip упразднена и должна быть заменена директивой "proxy_set_header X-Real-IP $remote_addr". the "proxy_set_x_real_ip" is canceled and must be replaced with the "proxy_set_header X-Real-IP $remote_addr" directive. директива proxy_add_x_forwarded_for упразднена и должна быть заменена директивой "proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for". the "proxy_add_x_forwarded_for" is canceled and must be replaced with the "proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for" directive. директива proxy_set_x_url упразднена и должна быть заменена директивой "proxy_set_header X-URL http://$host:$server_port$request_uri". 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. директива fastcgi_param. the "fastcgi_param" directive. директивы fastcgi_root, fastcgi_set_var и fastcgi_params упразднены и должны быть замены директивами fastcgi_param. the "fastcgi_root", "fastcgi_set_var" and "fastcgi_params" directive are canceled and must be replaced with the fastcgi_param directives. директива index может использовать переменные. the "index" directive can use the variables. директива index может быть указана на уровне http и server. the "index" directive can be used at http and server levels. только последний параметр в директиве index может быть абсолютным. the last index only in the "index" directive can be absolute. в директиве rewrite могут использоваться переменные. the "rewrite" directive can use the variables. директива internal. the "internal" directive. переменные CONTENT_LENGTH, CONTENT_TYPE, REMOTE_PORT, SERVER_ADDR, SERVER_PORT, SERVER_PROTOCOL, DOCUMENT_ROOT, SERVER_NAME, REQUEST_METHOD, REQUEST_URI и REMOTE_USER. 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. nginx теперь передаёт неверные строки в заголовках запроса клиента и ответа бэкенда. nginx now passes the invalid lines in a client request headers or a backend response header. если бэкенд долго не передавал ответ и send_timeout был меньше, чем proxy_read_timeout, то клиенту возвращался ответ 408. 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. если бэкенд передавал неверную строку в заголовке ответа, то происходил segmentation fault; ошибка появилась в 0.1.26. the segmentation fault was occurred if the backend sent an invalid line in response header; the bug had appeared in 0.1.26. при использовании отказоустойчивой конфигурации в FastCGI мог происходить segmentation fault. the segmentation fault may occurred in FastCGI fault tolerance configuration. директива expires не удаляла уже установленные строки заголовка "Expires" и "Cache-Control". the "expires" directive did not remove the previous "Expires" and "Cache-Control" headers. nginx не учитывал завершающую точку в строке заголовка запроса "Host". nginx did not take into account trailing dot in "Host" header line. модуль ngx_http_auth_module не работал на Linux. the ngx_http_auth_module did not work under Linux. директива rewrite неверно работала, если в запросе присутствовали аргументы. the rewrite directive worked incorrectly, if the arguments were in a request. nginx не собирался на MacOS X. nginx could not be built on MacOS X. при проксировании больших файлов nginx сильно нагружал процессор. nginx hogs CPU while proxying the huge files. nginx не собирался gcc 4.0 на Linux. nginx could not be built by gcc 4.0 on Linux. параметр blocked в директиве valid_referers. the "blocked" parameter of the "valid_referers" directive. ошибки обработки заголовка запроса теперь записываются на уровне info, в лог также записывается имя сервера и строки заголовка запроса "Host" и "Referer". the errors while handling the request header now logged at "info" level. The server name and the "Host" and "Referer" header lines also logged. при записи ошибок в лог записывается также строка заголовка запроса "Host". the "Host" header line is also logged in error log. директива proxy_pass_unparsed_uri. Специальная обработка символов "://" в URI, введённая в версии 0.1.11, теперь упразднена. the proxy_pass_unparsed_uri directive. The special handling of the "://" symbols in URI, appeared in 0.1.11 version, now is canceled. nginx не собирался на FreeBSD и Linux, если был указан параметр конфигурации --without-ngx_http_auth_basic_module. nginx could not be built on FreeBSD and Linux, if the --without-ngx_http_auth_basic_module configuration parameter was used. неверные строки заголовка, переданные клиентом, теперь игнорируется и записываются в error_log на уровне info. the invalid client header lines are now ignored and logged at the info level. при записи ошибок в лог записывается также имя сервера, при обращении к которому произошла ошибка. the server name is also logged in error log. модуль ngx_http_auth_basic_module и директивы auth_basic и auth_basic_user_file. the ngx_http_auth_basic_module module and the auth_basic and auth_basic_user_file directives. nginx не работал на Linux parisc. nginx did run on Linux parisc. nginx теперь не запускается под FreeBSD, если значение sysctl kern.ipc.somaxconn слишком большое. nginx now does not start under FreeBSD if the sysctl kern.ipc.somaxconn value is too big. если модуль ngx_http_index_module делал внутреннее перенаправление запроса в модули ngx_http_proxy_module или ngx_http_fastcgi_module, то файл индекса не закрывался после обслуживания запроса. 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. директива proxy_pass может использоваться в location, заданных регулярным выражением. the "proxy_pass" can be used in location with regular expression. модуль ngx_http_rewrite_filter_module поддерживает условия вида "if ($HTTP_USER_AGENT ~ MSIE)". the ngx_http_rewrite_filter_module module supports the condition like "if ($HTTP_USER_AGENT ~ MSIE)". nginx очень медленно запускался при большом количестве адресов и использовании текстовых значений в директиве geo. nginx started too slow if the large number of addresses and text values were used in the "geo" directive. имя переменной в директиве geo нужно указывать, как $name. Прежний вариант без "$" пока работает, но вскоре будет убран. a variable name must be declared as "$name" in the "geo" directive. The previous variant without "$" is still supported, but will be removed soon. параметр лога "%{VARIABLE}v". the "%{VARIABLE}v" logging parameter. директива "set $name value". the "set $name value" directive. совместимость с gcc 4.0. gcc 4.0 compatibility. параметр автоконфигурации --with-openssl-opt=OPTIONS. the --with-openssl-opt=OPTIONS autoconfiguration directive. модуль ngx_http_ssi_filter_module поддерживает переменные QUERY_STRING и DOCUMENT_URI. the ngx_http_ssi_filter_module supports the QUERY_STRING and DOCUMENT_URI variables. модуль ngx_http_autoindex_module мог выдавать ответ 404 на существующий каталог, если этот каталог был указан как alias. the ngx_http_autoindex_module may some times return the 404 response for existent directory, if this directory was used in "alias" directive. модуль ngx_http_ssi_filter_module неправильно работал при больших ответах. the ngx_http_ssi_filter_module ran incorrectly for large responses. отсутствие строки заголовка "Referer" всегда считалось правильным referrer'ом. the lack of the "Referer" header line was always accounted as valid referrer. модуль ngx_http_ssi_filter_module и директивы ssi, ssi_silent_errors и ssi_min_file_chunk. Поддерживаются команды 'echo var="HTTP_..." default=""' и 'echo var="REMOTE_ADDR"'. 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. параметр лога %request_time. the %request_time log parameter. если запрос пришёл без строки заголовка "Host", то директива proxy_preserve_host устанавливает в качестве этого заголовка первое имя сервера из директивы server_name. 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. nginx не собирался на платформах, отличных от i386, amd64, sparc и ppc; ошибка появилась в 0.1.22. nginx could not be built on platforms different from i386, amd64, sparc, and ppc; the bug had appeared in 0.1.22. модуль ngx_http_autoindex_module теперь показывает информацию не о символическом линке, а о файле или каталоге, на который он указывает. the ngx_http_autoindex_module now shows the information not about the symlink, but about file or directory it points to. если клиенту ничего не передавалось, то параметр %apache_length записывал в лог отрицательную длину заголовка ответа. the %apache_length parameter logged the negative length of the response header if the no response was transferred to a client. модуль ngx_http_stub_status_module показывал неверную статистику для обработанных соединений, если использовалось проксирование или FastCGI-сервер. the ngx_http_stub_status_module showed incorrect handled connections statistics if the proxying or FastCGI server were used. на Linux и Solaris установочные пути были неверно заключены в кавычки; ошибка появилась в 0.1.21. the installation paths were incorrectly quoted on Linux and Solaris; the bug had appeared in 0.1.21. модуль ngx_http_stub_status_module показывал неверную статистику при использовании метода rtsig или при использовании нескольких рабочих процессов на SMP машине. the ngx_http_stub_status_module showed incorrect statistics if "rtsig" method was used or if several worker process ran on SMP. nginx не собирался компилятором icc под Линуксом или если библиотека zlib-1.2.x собиралась из исходных текстов. nginx could not be built by the icc compiler on Linux or if the zlib-1.2.x library was building from sources. nginx не собирался под NetBSD 2.0. nginx could not be built on NetBSD 2.0. новые параметры script_filename и remote_port в директиве fastcgi_params. the new "script_filename" and "remote_port" parameters of the fastcgi_params directive. неправильно обрабатывался поток stderr от FastCGI-сервера. the FastCGI stderr stream was handled incorrectly. если в запросе есть нуль, то для локальных запросов теперь возвращается ошибка 404. now, if request contains the zero, then the 404 error is returned for the local requests. nginx не собирался под NetBSD 2.0. nginx could not be built on NetBSD 2.0. во время чтения тела запроса клиента в SSL соединении мог произойти таймаут. the timeout may occur while reading of the client request body via SSL connections. для совместимости с Solaris 10 в директивах devpoll_events и devpoll_changes значения по умолчанию уменьшены с 512 до 32. the default values of the devpoll_events and the devpoll_changes directives changed from 512 to 32 to be compatible with Solaris 10. директивы proxy_set_x_var и fastcgi_set_var не наследовались. the proxy_set_x_var and fastcgi_set_var directives were not inherited. в директиве rewrite, возвращающей редирект, аргументы присоединялись к URI через символ "&" вместо "?". in a redirect rewrite directive arguments were concatenated with URI by an "&" rather than a "?". строки для модуля ngx_http_geo_module без символа ";" во включённом файле игнорировались. the lines without trailing ";" in the file being included by the ngx_http_geo_module were silently ignored. модуль ngx_http_stub_status_module. the ngx_http_stub_status_module. неизвестный формат лог-файла в директиве access_log вызывал segmentation fault. the unknown log format in the access_log directive caused the segmentation fault. новый параметр document_root в директиве fastcgi_params. the new "document_root" parameter of the fastcgi_params directive. директива fastcgi_redirect_errors. the fastcgi_redirect_errors directive. новый модификатор break в директиве rewrite позволяет прекратить цикл rewrite/location и устанавливает текущую конфигурацию для запроса. the new "break" modifier of the "rewrite" directive allows to stop the rewrite/location cycle and sets the current configuration to the request. модуль ngx_http_rewrite_module полностью переписан. Теперь можно делать редиректы, возвращать коды ошибок и проверять переменные и рефереры. Эти директивы можно использовать внутри location. Директива redirect упразднена. 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. модуль ngx_http_geo_module. the ngx_http_geo_module. директивы proxy_set_x_var и fastcgi_set_var. the proxy_set_x_var and fastcgi_set_var directives. конфигурация location с модификатором "=" могла использоваться в другом location. the location configuration with "=" modifier may be used in another location. правильный тип ответа выставлялся только для запросов, у которых в расширении были только маленькие буквы. the correct content type was set only for requests that use small caps letters in extension. если для location установлен proxy_pass или fastcgi_pass, и доступ к нему запрещался, а ошибка перенаправлялась на статическую страницу, то происходил segmentation fault. 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. если в проксированном ответе в заголовке "Location" передавался относительный URL, то к нему добавлялось имя хоста и слэш; ошибка появилась в 0.1.14. 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. на Linux в лог не записывался текст системной ошибки. the system error message was not logged on Linux. если ответ передавался chunk'ами, то при запросе HEAD выдавался завершающий chunk. if the response were transferred by chunks, then on the HEAD request the final chunk was issued. заголовок "Connection: keep-alive" выдавался, даже если директива keepalive_timeout запрещала использование keep-alive. the "Connection: keep-alive" header were issued, even if the keepalive_timeout directive forbade the keep-alive use. ошибки в модуле ngx_http_fastcgi_module вызывали segmentation fault. the errors in the ngx_http_fastcgi_module caused the segmentation faults. при использовании SSL сжатый ответ мог передаваться не до конца. the compressed response encrypted by SSL may not transferred complete. опции TCP_NODELAY, TCP_NOPUSH и TCP_CORK, специфичные для TCP сокетов, не используются для unix domain сокетов. the TCP-specific TCP_NODELAY, TCP_NOPUSH, and TCP_CORK options, are not used for the unix domain sockets. директива rewrite поддерживает перезаписывание аргументов. the rewrite directive supports the arguments rewriting. на запрос POST с заголовком "Content-Length: 0" возвращался ответ 400; ошибка появилась в 0.1.14. the response code 400 was returned for the POST request with the "Content-Length: 0" header; the bug had appeared in 0.1.14. ошибка соединения с FastCGI-сервером вызывала segmentation fault. the error while the connecting to the FastCGI server caused segmentation fault. корректная обработка регулярного выражения, в котором число выделенных частей не совпадает с числом подстановок. the correct handling of the regular expression, that has different number of the captures and substitutions. location, который передаётся FastCGI-серверу, может быть задан с помощью регулярного выражения. the location, that is passed to the FastCGI server, can be regular expression. параметр FastCGI REQUEST_URI теперь передаётся вместе с аргументами и в том виде, в котором был получен от клиента. the FastCGI's parameter REQUEST_URI is now passed with the arguments and in the original state. для использования регулярных выражений в location нужно было собирать nginx вместе с ngx_http_rewrite_module. the ngx_http_rewrite_module module was required to be built to use the regular expressions in locations. если бэкенд слушал на 80-ом порту, то при использовании директивы "proxy_preserve_host on" в заголовке "Host" указывался также порт 80; ошибка появилась в 0.1.14. the directive "proxy_preserve_host on" adds port 80 to the "Host" headers, if upstream listen on port 80; the bug had appeared in 0.1.14. если задать одинаковые пути в параметрах автоконфигурации --http-client-body-temp-path=PATH и --http-proxy-temp-path=PATH или --http-client-body-temp-path=PATH и --http-fastcgi-temp-path=PATH, то происходил segmentation fault. 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. параметры автоконфигурации --http-client-body-temp-path=PATH, --http-proxy-temp-path=PATH и --http-fastcgi-temp-path=PATH the autoconfiguration directives: --http-client-body-temp-path=PATH, --http-proxy-temp-path=PATH, and --http-fastcgi-temp-path=PATH имя каталога с временными файлами, содержащие тело запроса клиента, задаётся директивой client_body_temp_path, по умолчанию <prefix>/client_body_temp. the directory name for the temporary files with the client request body is specified by directive client_body_temp_path, by default it is <prefix>/client_body_temp. модуль 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. 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. ошибка "[alert] zero size buf"; ошибка появилась в 0.1.3. the "[alert] zero size buf" error; the bug had appeared in 0.1.3. в директиве proxy_pass нужно обязательно указывать URI после имени хоста. the URI must be specified after the host name in the proxy_pass directive. если в URI встречался символ %3F, то он считался началом строки аргументов. the %3F symbol in the URI was considered as the argument string start. поддержка unix domain сокетов в модуле ngx_http_proxy_module. the unix domain sockets support in the ngx_http_proxy_module. директивы ssl_engine и ssl_ciphers.
Спасибо Сергею Скворцову за SSL-акселератор.
the ssl_engine and ssl_ciphers directives.
Thanks to Sergey Skvortsov for SSL-accelerator.
директивы server_names_hash и server_names_hash_threshold. the server_names_hash and server_names_hash_threshold directives. имена *.domain.tld в директиве server_name не работали. the *.domain.tld names in the "server_name" directive did not work. параметр лога %request_length записывал неверную длину. the %request_length log parameter logged the incorrect length. параметр лога %request_length. the %request_length log parameter. при использовании /dev/poll, select и poll на платформах, где возможны ложные срабатывания указанных методов, могли быть длительные задержки при обработке запроса по keep-alive соединению. Наблюдалось по крайней мере на Solaris с использованием /dev/poll. 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. директива send_lowat игнорируется на Linux, так как Linux не поддерживает опцию SO_SNDLOWAT. the send_lowat directive is ignored on Linux because Linux does not support the SO_SNDLOWAT option. директива worker_priority. the worker_priority directive. под FreeBSD директивы tcp_nopush и tcp_nodelay вместе влияют на передачу ответа. both tcp_nopush and tcp_nodelay directives affect the transferred response. nginx не вызывал initgroups().
Спасибо Андрею Ситникову и Андрею Нигматулину.
nginx did not call initgroups().
Thanks to Andrew Sitnikov and Andrei Nigmatulin.
ngx_http_auto_index_module теперь выдаёт размер файлов в байтах. now the ngx_http_autoindex_module shows the file size in the bytes. ngx_http_auto_index_module возвращал ошибку 500, если в каталоге есть битый symlink. the ngx_http_autoindex_module returned the 500 error if the broken symlink was in a directory. файлы больше 4G не передавались с использованием sendfile. the files bigger than 4G could not be transferred using sendfile. если бэкенд резолвился в несколько адресов и при ожидании от него ответа происходила ошибка, то процесс зацикливался. 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. при использовании метода /dev/poll рабочий процесс мог завершиться с сообщением "unknown cycle". the worker process may exit with the "unknown cycle" message when the /dev/poll method was used. ошибки "close() channel failed". "close() channel failed" errors. автоматическое определение групп nobody и nogroup. the autodetection of the "nobody" and "nogroup" groups. директива send_lowat не работала на Linux. the send_lowat directive did not work on Linux. если в конфигурации не было раздела events, то происходил segmentation fault. the segmentation fault occurred if there was no events section in configuration. nginx не собирался под OpenBSD. nginx could not be built on OpenBSD. двойные слэшы в "://" в URI превращались в ":/". the double slashes in "://" in the URI were converted to ":/".
если в запросе без аргументов есть "//", "/./", "/../" или "%XX", то терялся последний символ в строке запроса; ошибка появилась в 0.1.9. 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. исправление в версии 0.1.9 для файлов больше 2G на Linux не работало. the fix in 0.1.9 for the files bigger than 2G on Linux did not work. если в запросе есть "//", "/./", "/../" или "%XX", то проксируемый запрос передавался без аргументов. the proxied request was sent without arguments if the request contains "//", "/./", "/../" or "%XX". при сжатии больших ответов иногда они передавались не полностью. the large compressed responses may be transferred not completely. не передавались файлы больше 2G на Linux, неподдерживающем sendfile64(). the files bigger than 2G was not transferred on Linux that does not support sendfile64(). на Linux при конфигурации сборки нужно было обязательно использовать параметр --with-poll_module; ошибка появилась в 0.1.8. while the build configuration on Linux the --with-poll_module parameter was required; the bug had appeared in 0.1.8. ошибка в модуле ngx_http_autoindex_module при показе длинных имён файлов. in the ngx_http_autoindex_module if the long file names were in the listing. модификатор "^~" в директиве location. the "^~" modifier in the location directive. директива proxy_max_temp_file_size. the proxy_max_temp_file_size directive. при использовании sendfile, если передаваемый файл менялся, то мог произойти segmentation fault на FreeBSD; ошибка появилась в 0.1.5. on FreeBSD the segmentation fault may occur if the size of the transferred file was changed; the bug had appeared in 0.1.5. при некоторых комбинациях директив location c регулярными выражениями использовалась конфигурация не из того location. some location directive combinations with the regular expressions caused the wrong configuration choose. на Solaris и Linux могло быть очень много сообщений "recvmsg() returned not enough data". on Solaris and Linux there may be too many "recvmsg() returned not enough data" alerts. в режиме прокси без использования sendfile на Solaris возникала ошибка "writev() failed (22: Invalid argument)". На других платформах, не поддерживающих sendfile, процесс зацикливался. there were the "writev() failed (22: Invalid argument)" 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. при использовании sendfile в режиме прокси на Solaris возникал segmentation fault. segmentation fault on Solaris in proxy mode and using sendfile. segmentation fault на Solaris. segmentation fault on Solaris. обновление исполняемого файла на лету не работало на Linux. on-line upgrade did not work on Linux. в списке файлов, выдаваемом модулем ngx_http_autoindex_module, не перекодировались пробелы, кавычки и знаки процента. the ngx_http_autoindex_module module did not escape the spaces, the quotes, and the percent signs in the directory listing. уменьшение операций копирования. the decrease of the copy operations. директива userid_p3p. the userid_p3p directive. ошибка в модуле ngx_http_autoindex_module. in the ngx_http_autoindex_module. модуль ngx_http_autoindex_module и директива autoindex. the ngx_http_autoindex_module and the autoindex directive. директива proxy_set_x_url. the proxy_set_x_url directive. модуль проксировании мог привести к зацикливанию, если не использовался sendfile. proxy module may get caught in an endless loop when sendfile is not used. параметры --user=USER, --group=GROUP и --with-ld-opt=OPTIONS в configure. the --user=USER, --group=GROUP, and --with-ld-opt=OPTIONS options in configure. директива server_name поддерживает *.domain.tld. the server_name directive supports *.domain.tld. улучшена переносимость на неизвестные платформы. the portability improvements. нельзя переконфигурировать nginx, если конфигурационный файл указан в командной строке; ошибка появилась в 0.1.1. if configuration file was set in command line, the reconfiguration was impossible; the bug had appeared in 0.1.1. модуль проксировании мог привести к зацикливанию, если не использовался sendfile. proxy module may get caught in an endless loop when sendfile is not used. при использовании sendfile текст ответа не перекодировался согласно директивам модуля charset; ошибка появилась в 0.1.1. with sendfile the response was not recoded according to the charset module directives; the bug had appeared in 0.1.1. очень редкая ошибка при обработке kqueue. very seldom bug in the kqueue processing. модуль сжатия сжимал уже сжатые ответы, полученные при проксировании. the gzip module compressed the proxied responses that was already compressed. директива gzip_types. the gzip_types directive. директива tcp_nodelay. the tcp_nodelay directive. директива send_lowat работает не только на платформах, поддерживающих kqueue NOTE_LOWAT, но и на всех, поддерживающих SO_SNDLOWAT. the send_lowat directive is working not only on OSes that support kqueue NOTE_LOWAT, but also on OSes that support SO_SNDLOWAT. эмуляция setproctitle() для Linux и Solaris. the setproctitle() emulation for Linux and Solaris. ошибка при переписывании заголовка "Location" при проксировании. the "Location" header rewrite bug fixed while the proxying. ошибка в модуле ngx_http_chunked_module, приводившая к зацикливанию. the ngx_http_chunked_module module may get caught in an endless loop. ошибки в модуле /dev/poll. the /dev/poll module bugs fixed. при проксировании и использовании временных файлов ответы портились. the responses were corrupted when the temporary files were used while the proxying. бэкенду передавались запросы с неперекодированными символами. the unescaped requests were passed to the backend. на Linux 2.4 при конфигурации сборки нужно было обязательно использовать параметр --with-poll_module. while the build configuration on Linux 2.4 the --with-poll_module parameter was required. Первая публично доступная версия. The first public version.