Изменения в nginx 0.3.15 07.12.2005 *) Добавление: новой код 444 в директиве return для закрытия соединения. *) Добавление: директива so_keepalive в IMAP/POP3 прокси. *) Исправление: nginx теперь вызывает abort() при обнаружении незакрытых соединений только при планом выходе и включённой директиве debug_points. Изменения в nginx 0.3.14 05.12.2005 *) Исправление: в ответе 304 передавалось тело ответа; ошибка появилась в 0.3.13. Изменения в nginx 0.3.13 05.12.2005 *) Добавление: IMAP/POP3 прокси поддерживает STARTTLS и STLS. *) Исправление: IMAP/POP3 прокси не работала с методами select, poll и /dev/poll. *) Исправление: ошибки в обработке SSI. *) Исправление: sendfilev() в Solaris теперь не используется при передаче тела запроса FastCGI-серверу через unix domain сокет. *) Исправление: директива auth_basic не запрещала аутентификацию; ошибка появилась в 0.3.11. Изменения в nginx 0.3.12 26.11.2005 *) Безопасность: если nginx был собран с модулем ngx_http_realip_module, то при использовании директивы "satisfy_any on" директивы доступа и аутентификации не работали. Модуль ngx_http_realip_module не собирался и не собирается по умолчанию. *) Изменение: имя переменной "$time_gmt" изменено на "$time_local". *) Изменение: директивы proxy_header_buffer_size и fastcgi_header_buffer_size переименованы соответственно в proxy_buffer_size и fastcgi_buffer_size. *) Добавление: модуль ngx_http_memcached_module. *) Добавление: директива proxy_buffering. *) Исправление: изменение в работе с accept mutex при использовании метода rtsig; ошибка появилась в 0.3.0. *) Исправление: если клиент передал строку "Transfer-Encoding: chunked" в заголовке запроса, то nginx теперь выдаёт ошибку 411. *) Исправление: при наследовании директивы auth_basic с уровня http в строке "WWW-Authenticate" заголовка ответа выводился realm без текста "Basic realm". *) Исправление: если в директиве access_log был явно указан формат combined, то в лог записывались пустые строки; ошибка появилась в 0.3.8. *) Исправление: nginx не работал на платформе sparc под любыми OS, кроме Solaris. *) Исправление: в директиве if теперь не нужно разделять пробелом строку в кавычках и закрывающую скобку. Изменения в nginx 0.3.11 15.11.2005 *) Исправление: nginx не передавал при проксировании тело запроса и строки заголовка клиента; ошибка появилась в 0.3.10. Изменения в nginx 0.3.10 15.11.2005 *) Изменение: директива valid_referers и переменная $invalid_referer перенесены из модуля ngx_http_rewrite_module в новый модуль ngx_http_referer_module. *) Изменение: имя переменной "$apache_bytes_sent" изменено на "$body_bytes_sent". *) Добавление: переменные "$sent_http_...". *) Добавление: директива if поддерживает операции "=" и "!=". *) Добавление: директива proxy_pass поддерживает протокол HTTPS. *) Добавление: директива proxy_set_body. *) Добавление: директива post_action. *) Добавление: модуль ngx_http_empty_gif_module. *) Добавление: директива worker_cpu_affinity для Linux. *) Исправление: директива rewrite не раскодировала символы в редиректах в URI, теперь символы раскодируются, кроме символов %00-%25 и %7F-%FF. *) Исправление: nginx не собирался компилятором icc 9.0. *) Исправление: если для статического файла нулевого размера был разрешён SSI, то ответ передавался неверно при кодировании chunk'ами. Изменения в nginx 0.3.9 10.11.2005 *) Исправление: nginx считал небезопасными URI, в которых между двумя слэшами находилось два любых символа; ошибка появилась в 0.3.8. Изменения в nginx 0.3.8 09.11.2005 *) Безопасность: nginx теперь проверят URI, полученные от бэкенда в строке "X-Accel-Redirect" в заголовке ответа, или в SSI файле на наличие путей "/../" и нулей. *) Изменение: nginx теперь не воспринимает пустое имя как правильное в строке "Authorization" в заголовке запроса. *) Добавление: директива ssl_session_timeout модулей ngx_http_ssl_module и ngx_imap_ssl_module. *) Добавление: директива auth_http_header модуля ngx_imap_auth_http_module. *) Добавление: директива add_header. *) Добавление: модуль 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" скоро будут упразднены. *) Изменение: в директиве "if" ложными значениями переменных теперь являются пустая строка "" и строки, начинающиеся на "0". *) Исправление: при работает с проксированными или FastCGI-серверами nginx мог оставлять открытыми соединения и временные файлы с запросами клиентов. *) Исправление: рабочие процессы не сбрасывали буферизированные логи при плавном выходе. *) Исправление: если URI запроса изменялось с помощью rewrite, а затем запрос проксировался в location, заданном регулярным выражением, то бэкенду передавался неверный запрос; ошибка появилась в 0.2.6. *) Исправление: директива expires не удаляла уже установленную строку заголовка "Expires". *) Исправление: при использовании метода rtsig и нескольких рабочих процессах nginx мог перестать принимать запросы. *) Исправление: в SSI командах неверно обрабатывались строки "\"" и "\'". *) Исправление: если ответ заканчивался сразу же после SSI команды, то при использовании сжатия ответ передавался не до конца или не передавался вообще. Изменения в nginx 0.3.7 27.10.2005 *) Добавление: директива access_log поддерживает параметр buffer=. *) Исправление: nginx не собирался на платформах, отличных от i386, amd64, sparc и ppc; ошибка появилась в 0.3.2. Изменения в nginx 0.3.6 24.10.2005 *) Изменение: IMAP/POP3 прокси теперь не передаёт серверу авторизации пустой логин. *) Добавление: директива log_format поддерживает переменные в виде $name. *) Исправление: если хотя бы в одном сервере не было описано ни одной директивы listen, то nginx не слушал на 80 порту; ошибка появилась в 0.3.3. *) Исправление: если в директиве proxy_pass отсутствовал URI, то всегда использовался порт 80. Изменения в nginx 0.3.5 21.10.2005 *) Исправление: если логин IMAP/POP3 менялся сервером авторизации, то мог произойти segmentation fault; ошибка появилась в 0.2.2. *) Исправление: accept mutex не работал, все соединения обрабатывались одним рабочим процессом; ошибка появилась в 0.3.3. *) Исправление: при использовании метода rtsig и директивы timer_resolution не работали таймауты. Изменения в nginx 0.3.4 19.10.2005 *) Исправление: nginx не собирался на Linux 2.4+ и MacOS X; ошибка появилась в 0.3.3. Изменения в nginx 0.3.3 19.10.2005 *) Изменение: параметры "bl" и "af" директивы listen переименованы в "backlog" и "accept_filter". *) Добавление: параметры "rcvbuf" и "sndbuf" в директиве listen. *) Изменение: параметр лога $msec теперь не требует дополнительного системного вызова gettimeofday(). *) Добавление: ключ -t теперь проверяет директивы listen. *) Исправление: если в директиве listen был указан неверный адрес, то nginx после сигнала -HUP оставлял открытый сокет в состоянии CLOSED. *) Исправление: для индексных файлов, содержащих в имени переменную, мог неверно выставляться тип mime по умолчанию; ошибка появилась в 0.3.0. *) Добавление: директива timer_resolution. *) Добавление: параметр лога $upstream_response_time в миллисекундах. *) Исправление: временный файл с телом запроса клиента теперь удаляется сразу после того, как клиенту передан заголовок ответа. *) Исправление: совместимость с OpenSSL 0.9.6. *) Исправление: пути к файлам с SSL сертификатом и ключом не могли быть относительными. *) Исправление: директива ssl_prefer_server_ciphers не работала для модуля ngx_imap_ssl_module. *) Исправление: директива ssl_protocols позволяла задать только один протокол. Изменения в nginx 0.3.2 12.10.2005 *) Добавление: поддержка Sun Studio 10 C compiler. *) Добавление: директивы proxy_upstream_max_fails, proxy_upstream_fail_timeout, fastcgi_upstream_max_fails и fastcgi_upstream_fail_timeout. Изменения в nginx 0.3.1 10.10.2005 *) Исправление: во время переполнения очереди сигналов при использовании метода rtsig происходил segmentation fault; ошибка появилась в 0.2.0. *) Изменение: корректная обработка пар "\\", "\"", "\'" и "\$" в SSI. Изменения в nginx 0.3.0 07.10.2005 *) Изменение: убрано десятидневное ограничение времени работы рабочего процесса. Ограничение было введено из-за переполнения миллисекундных таймеров. Изменения в nginx 0.2.6 05.10.2005 *) Изменение: с 60 до 10 секунд уменьшено время повторного обращения к бэкенду при использовании распределения нагрузки. *) Изменение: директива proxy_pass_unparsed_uri упразднена, оригинальный запрос теперь передаётся, если в директиве proxy_pass отсутствует URI. *) Добавление: директива error_page поддерживает редиректы и позволяет более гибко менять код ошибки. *) Изменение: в проксированных подзапросах теперь игнорируется переданный charset. *) Исправление: если после изменения URI в блоке if для запроса не находилась новая конфигурация, то правила модуля ngx_http_rewrite_module выполнялись снова. *) Исправление: если директива set устанавливала переменную модуля ngx_http_geo_module в какой-либо части конфигурации, то эта переменная не была доступна в других частях конфигурации и выдавалась ошибка "using uninitialized variable"; ошибка появилась в 0.2.2. Изменения в nginx 0.2.5 04.10.2005 *) Изменение: дублирующее значение переменной модуля ngx_http_geo_module теперь выдаёт предупреждение и изменяет старое значение. *) Добавление: модуль ngx_http_ssi_module поддерживает команду set. *) Добавление: модуль ngx_http_ssi_module поддерживает параметр file в команде include. *) Добавление: модуль ngx_http_ssi_module поддерживает подстановку значений переменных в выражениях команды if. Изменения в nginx 0.2.4 03.10.2005 *) Добавление: модуль ngx_http_ssi_module поддерживает выражения "$var=text", "$var!=text", "$var=/text/" и "$var!=/text/" в команде if. *) Исправление: ошибки при проксировании location без слэша в конце; ошибка появилась в 0.1.44. *) Исправление: при использовании метода rtsig мог произойти segmentation fault; ошибка появилась в 0.2.0. Изменения в nginx 0.2.3 30.09.2005 *) Исправление: nginx не собирался без параметра --with-debug; ошибка появилась в 0.2.2. Изменения в nginx 0.2.2 30.09.2005 *) Добавление: команда config errmsg в модуле ngx_http_ssi_module. *) Изменение: переменные модуля ngx_http_geo_module можно переопределять директивой set. *) Добавление: директивы ssl_protocols и ssl_prefer_server_ciphers модулей ngx_http_ssl_module и ngx_imap_ssl_module. *) Исправление: ошибка в модуле ngx_http_autoindex_module при показе длинных имён файлов; *) Исправление: модуль ngx_http_autoindex_module теперь не показывает файлы, начинающиеся на точку. *) Исправление: если SSL handshake завершался с ошибкой, то это могло привести также к закрытию другого соединения. Спасибо Rob Mueller. *) Исправление: экспортные версии MSIE 5.x не могли соединиться по HTTPS. Изменения в nginx 0.2.1 23.09.2005 *) Исправление: если все бэкенды, используемые для балансировки нагрузки, оказывались в нерабочем состоянии после одной ошибки, то nginx мог зациклится; ошибка появилась в 0.2.0. Изменения в nginx 0.2.0 23.09.2005 *) Изменились имена pid-файлов, используемые во время обновления исполняемого файла. Ручное переименование теперь не нужно. Старый основной процесс добавляет к своему pid-файл суффикс ".oldbin" и запускает новый исполняемый файл. Новый основной процесс создаёт обычный pid-файл без суффикса ".newbin". Если новый основной процесс выходит, то старый процесс переименовывает свой pid-файл c суффиксом ".oldbin" в pid-файл без суффикса. При обновлении с версии 0.1.х до 0.2.0 нужно учитывать, что оба процесса - старый 0.1.x и новый 0.2.0 - используют pid-файл без суффиксов. *) Изменение: директива worker_connections, новое название директивы connections; директива теперь задаёт максимальное число соединений, а не максимально возможный номер дескриптора для сокета. *) Добавление: SSL поддерживает кэширование сессий в пределах одного рабочего процесса. *) Добавление: директива satisfy_any. *) Изменение: модули ngx_http_access_module и ngx_http_auth_basic_module не работают для подзапросов. *) Добавление: директивы worker_rlimit_nofile и worker_rlimit_sigpending. *) Исправление: если все бэкенды, используемые для балансировки нагрузки, оказывались в нерабочем состоянии после одной ошибки, то nginx не обращался к ним в течение 60 секунд. *) Исправление: в парсинге аргументов IMAP/POP3 команд. Спасибо Rob Mueller. *) Исправление: ошибки при использовании SSL в IMAP/POP3 прокси. *) Исправление: ошибки при использовании SSI и сжатия. *) Исправление: в ответах 304 не добавлялись строки заголовка ответа "Expires" и "Cache-Control". Спасибо Александру Кукушкину. Изменения в nginx 0.1.45 08.09.2005 *) Изменение: директива ssl_engine упразднена в модуле ngx_http_ssl_module и перенесена на глобальный уровень. *) Исправление: ответы с подзапросами, включённые с помощью SSI, не передавались через SSL соединение. *) Разные исправления в IMAP/POP3 прокси. Изменения в nginx 0.1.44 06.09.2005 *) Добавление: IMAP/POP3 прокси поддерживает SSL. *) Добавление: директива proxy_timeout модуля ngx_imap_proxy_module. *) Добавление: директива userid_mark. *) Добавление: значение переменной $remote_user определяется независимо от того, используется ли авторизация или нет. Изменения в nginx 0.1.43 30.08.2005 *) Добавление: listen(2) backlog в директиве listen можно менять по сигналу -HUP. *) Добавление: скрипт geo2nginx.pl добавлен в contrib. *) Изменение: параметры FastCGI с пустым значениями теперь передаются серверу. *) Исправление: если в ответе проксированного сервера или FastCGI сервера была строка "Cache-Control", то при использовании директивы expires происходил segmentation fault или рабочий процесс мог зациклится; в режиме прокси ошибка появилась в 0.1.29. Изменения в nginx 0.1.42 23.08.2005 *) Исправление: если URI запроса получался нулевой длины после обработки модулем ngx_http_rewrite_module, то в модуле ngx_http_proxy_module происходил segmentation fault или bus error. *) Исправление: директива limit_rate не работала внутри блока if; ошибка появилась в 0.1.38. Изменения в nginx 0.1.41 25.07.2005 *) Исправление: если переменная использовалась в файле конфигурации, то она не могла использоваться в SSI. Изменения в nginx 0.1.40 22.07.2005 *) Исправление: если клиент слал очень длинную строку заголовка, то в логе не помещалась информация, связанная с этим запросом. *) Исправление: при использовании "X-Accel-Redirect" не передавалась строка "Set-Cookie"; ошибка появилась в 0.1.39. *) Исправление: при использовании "X-Accel-Redirect" не передавалась строка "Content-Disposition". *) Исправление: по сигналу SIGQUIT основной процесс не закрывал сокеты, на которых он слушал. *) Исправление: после обновления исполняемого файла на лету на Linux и Solaris название процесса в команде ps становилось короче. Изменения в nginx 0.1.39 14.07.2005 *) Изменения в модуле ngx_http_charset_module: директива default_charset упразднена; директива charset задаёт кодировку ответа; директива source_charset задаёт только исходную кодировку. *) Исправление: при перенаправлении ошибки 401, полученной от бэкенда, не передавалась строка заголовка "WWW-Authenticate". *) Исправление: модули ngx_http_proxy_module и ngx_http_fastcgi_module могли закрыть соединение до того, как что-нибудь было передано клиенту; ошибка появилась в 0.1.38. *) Изменение: обработка ошибки инициализации в crypt_r() в Linux glibc. *) Исправление: модуль ngx_http_ssi_module не поддерживал относительные URI в команде include virtual. *) Исправление: если в строке заголовка ответа бэкенда была строка "Location", которую nginx не должен был изменять, то в ответе передавалось тело 500 ошибки; ошибка появилась в 0.1.29. *) Исправление: некоторые директивы модулей ngx_http_proxy_module и ngx_http_fastcgi_module не наследовались с уровня server на уровень location; ошибка появилась в 0.1.29. *) Исправление: модуль ngx_http_ssl_module не поддерживал цепочки сертификатов. *) Исправление: ошибка в модуле ngx_http_autoindex_module при показе длинных имён файлов; ошибка появилась в 0.1.38. *) Исправления в IMAP/POP3 прокси при взаимодействии с бэкендом на стадии login. Изменения в nginx 0.1.38 08.07.2005 *) Добавление: директива limit_rate поддерживается в режиме прокси и FastCGI. *) Добавление: в режиме прокси и FastCGI поддерживается строка заголовка "X-Accel-Limit-Rate" в ответе бэкенда. *) Добавление: директива break. *) Добавление: директива log_not_found. *) Исправление: при перенаправлении запроса с помощью строки заголовка "X-Accel-Redirect" не изменялся код ответа. *) Исправление: переменные, установленные директивой set не могли использоваться в SSI. *) Исправление: при включении в SSI более одного удалённого подзапроса мог произойти segmentation fault. *) Исправление: если статусная строка в ответе бэкенда передавалась в двух пакетах, то nginx считал ответ неверным; ошибка появилась в 0.1.29. *) Добавление: директива ssi_types. *) Добавление: директива autoindex_exact_size. *) Исправление: модуль ngx_http_autoindex_module не поддерживал длинные имена файлов в UTF-8. *) Добавление: IMAP/POP3 прокси. Изменения в nginx 0.1.37 23.06.2005 *) Изменение: в конце файла nginx.pid теперь добавляется "\n". *) Исправление: при включении большого количества вставок или нескольких больших вставок с помощью SSI ответ мог передаваться не полностью. *) Исправление: если все бэкенды возвращали ответ 404, то при использовании параметра http_404 в директивах proxy_next_upstream или fastcgi_next_upstream, nginx начинал запрашивать все бэкенды снова. Изменения в nginx 0.1.36 15.06.2005 *) Изменение: если в заголовке запросе есть дублирующиеся строки "Host", "Connection", "Content-Length" и "Authorization", то nginx теперь выдаёт ошибку 400. *) Изменение: директива post_accept_timeout упразднена. *) Добавление: параметры default, af=, bl=, deferred и bind в директиве listen. *) Добавление: поддержка accept фильтров во FreeBSD. *) Добавление: поддержка TCP_DEFER_ACCEPT в Linux. *) Исправление: модуль ngx_http_autoindex_module не поддерживал имена файлов в UTF-8. *) Исправление: после добавления новый лог-файл ротация этого лога по сигналу -USR1 выполнялась, только если переконфигурировать nginx два раза по сигналу -HUP. Изменения в nginx 0.1.35 07.06.2005 *) Добавление: директива working_directory. *) Добавление: директива port_in_redirect. *) Исправление: если заголовок ответа бэкенда не помещался в один пакет, то происходил segmentation fault; ошибка появилась в 0.1.29. *) Исправление: если было сконфигурировано более 10 серверов или в сервере не описана директива "listen", то при запуске мог произойти segmentation fault. *) Исправление: если ответ не помещался во временный файл, то мог произойти segmentation fault. *) Исправление: nginx возвращал ошибку 400 на запросы вида "GET http://www.domain.com/uri HTTP/1.0"; ошибка появилась в 0.1.28. Изменения в nginx 0.1.34 26.05.2005 *) Исправление: при включении больших ответов с помощью SSI рабочий процесс мог зациклиться. *) Исправление: переменные, устанавливаемые директивой "set", не были доступны в SSI. *) Добавление: директива autoindex_localtime. *) Исправление: пустое значение в директиве proxy_set_header запрещает передачу заголовка. Изменения в nginx 0.1.33 23.05.2005 *) Исправление: nginx не собирался с параметром --without-pcre; ошибка появилась в 0.1.29. *) Исправление: 3, 5, 7 и 8 директив proxy_set_header на одном уровне вызывали bus fault при запуске. *) Исправление: в редиректах внутри HTTPS сервера был указан протокол HTTP. *) Исправление: если директива rewrite использовала выделения внутри директивы if, то возвращалась ошибка 500. Изменения в nginx 0.1.32 19.05.2005 *) Исправление: в редиректах, выдаваемых с помощью директивы rewrite, не передавались аргументы; ошибка появилась в 0.1.29. *) Добавление: директива if поддерживает выделения в регулярных выражениях. *) Добавление: директива set поддерживает переменные и выделения из регулярных выражений. *) Добавление: в режиме прокси и FastCGI поддерживается строка заголовка "X-Accel-Redirect" в ответе бэкенда. Изменения в nginx 0.1.31 16.05.2005 *) Исправление: при использовании SSL ответ мог передаваться не до конца. *) Исправление: ошибки при обработке SSI в ответе, полученного от FastCGI-сервера. *) Исправление: ошибки при использовании SSI и сжатия. *) Исправление: редирект с кодом 301 передавался без тела ответа; ошибка появилась в 0.1.30. Изменения в nginx 0.1.30 14.05.2005 *) Исправление: при использовании SSI рабочий процесс мог зациклиться. *) Исправление: при использовании SSL ответ мог передаваться не до конца. *) Исправление: если длина части ответа, полученного за один раз от проксируемого или FastCGI сервера была равна 500 байт, то nginx возвращал код ответа 500; в режиме прокси ошибка появилась только в 0.1.29. *) Исправление: nginx не считал неверными директивы с 8-ю или 9-ю параметрами. *) Добавление: директива return может возвращать код ответа 204. *) Добавление: директива ignore_invalid_headers. Изменения в nginx 0.1.29 12.05.2005 *) Добавление: модуль ngx_http_ssi_module поддерживает команду include virtual. *) Добавление: модуль ngx_http_ssi_module поддерживает условную команду вида 'if expr="$NAME"' и команды else и endif. Допускается только один уровень вложенности. *) Добавление: модуль ngx_http_ssi_module поддерживает две переменные DATE_LOCAL и DATE_GMT и команду config timefmt. *) Добавление: директива ssi_ignore_recycled_buffers. *) Исправление: если переменная QUERY_STRING не была определена, то в команде echo не ставилось значение по умолчанию. *) Изменение: модуль ngx_http_proxy_module полностью переписан. *) Добавление: директивы proxy_redirect, proxy_pass_request_headers, proxy_pass_request_body и proxy_method. *) Добавление: директива proxy_set_header. Директива proxy_x_var упразднена и должна быть заменена директивой proxy_set_header. *) Изменение: директива proxy_preserve_host упразднена и должна быть заменена директивами "proxy_set_header Host $host" и "proxy_redirect off" или директивой "proxy_set_header Host $host:$proxy_port" и соответствующими ей директивами proxy_redirect. *) Изменение: директива proxy_set_x_real_ip упразднена и должна быть заменена директивой "proxy_set_header X-Real-IP $remote_addr". *) Изменение: директива proxy_add_x_forwarded_for упразднена и должна быть заменена директивой "proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for". *) Изменение: директива proxy_set_x_url упразднена и должна быть заменена директивой "proxy_set_header X-URL http://$host:$server_port$request_uri". *) Добавление: директива fastcgi_param. *) Изменение: директивы fastcgi_root, fastcgi_set_var и fastcgi_params упразднены и должны быть замены директивами fastcgi_param. *) Добавление: директива index может использовать переменные. *) Добавление: директива index может быть указана на уровне http и server. *) Изменение: только последний параметр в директиве index может быть абсолютным. *) Добавление: в директиве rewrite могут использоваться переменные. *) Добавление: директива internal. *) Добавление: переменные CONTENT_LENGTH, CONTENT_TYPE, REMOTE_PORT, SERVER_ADDR, SERVER_PORT, SERVER_PROTOCOL, DOCUMENT_ROOT, SERVER_NAME, REQUEST_METHOD, REQUEST_URI и REMOTE_USER. *) Изменение: nginx теперь передаёт неверные строки в заголовках запроса клиента и ответа бэкенда. *) Исправление: если бэкенд долго не передавал ответ и send_timeout был меньше, чем proxy_read_timeout, то клиенту возвращался ответ 408. *) Исправление: если бэкенд передавал неверную строку в заголовке ответа, то происходил segmentation fault; ошибка появилась в 0.1.26. *) Исправление: при использовании отказоустойчивой конфигурации в FastCGI мог происходить segmentation fault. *) Исправление: директива expires не удаляла уже установленные строки заголовка "Expires" и "Cache-Control". *) Исправление: nginx не учитывал завершающую точку в строке заголовка запроса "Host". *) Исправление: модуль ngx_http_auth_module не работал на Linux. *) Исправление: директива rewrite неверно работала, если в запросе присутствовали аргументы. *) Исправление: nginx не собирался на MacOS X. Изменения в nginx 0.1.28 08.04.2005 *) Исправление: при проксировании больших файлов nginx сильно нагружал процессор. *) Исправление: nginx не собирался gcc 4.0 на Linux. Изменения в nginx 0.1.27 28.03.2005 *) Добавление: параметр blocked в директиве valid_referers. *) Изменение: ошибки обработки заголовка запроса теперь записываются на уровне info, в лог также записывается имя сервера и строки заголовка запроса "Host" и "Referer". *) Изменение: при записи ошибок в лог записывается также строка заголовка запроса "Host". *) Добавление: директива proxy_pass_unparsed_uri. Специальная обработка символов "://" в URI, введённая в версии 0.1.11, теперь упразднена. *) Исправление: nginx не собирался на FreeBSD и Linux, если был указан параметр конфигурации --without-ngx_http_auth_basic_module. Изменения в nginx 0.1.26 22.03.2005 *) Изменение: неверные строки заголовка, переданные клиентом, теперь игнорируется и записываются в error_log на уровне info. *) Изменение: при записи ошибок в лог записывается также имя сервера, при обращении к которому произошла ошибка. *) Добавление: модуль ngx_http_auth_basic_module и директивы auth_basic и auth_basic_user_file. Изменения в nginx 0.1.25 19.03.2005 *) Исправление: nginx не работал на Linux parisc. *) Добавление: nginx теперь не запускается под FreeBSD, если значение sysctl kern.ipc.somaxconn слишком большое. *) Исправление: если модуль ngx_http_index_module делал внутреннее перенаправление запроса в модули ngx_http_proxy_module или ngx_http_fastcgi_module, то файл индекса не закрывался после обслуживания запроса. *) Добавление: директива proxy_pass может использоваться в location, заданных регулярным выражением. *) Добавление: модуль ngx_http_rewrite_filter_module поддерживает условия вида "if ($HTTP_USER_AGENT ~ MSIE)". *) Исправление: nginx очень медленно запускался при большом количестве адресов и использовании текстовых значений в директиве geo. *) Изменение: имя переменной в директиве geo нужно указывать, как $name. Прежний вариант без "$" пока работает, но вскоре будет убран. *) Добавление: параметр лога "%{VARIABLE}v". *) Добавление: директива "set $name value". *) Исправление: совместимость с gcc 4.0. *) Добавление: параметр автоконфигурации --with-openssl-opt=OPTIONS. Изменения в nginx 0.1.24 04.03.2005 *) Добавление: модуль ngx_http_ssi_filter_module поддерживает переменные QUERY_STRING и DOCUMENT_URI. *) Исправление: модуль ngx_http_autoindex_module мог выдавать ответ 404 на существующий каталог, если этот каталог был указан как alias. *) Исправление: модуль ngx_http_ssi_filter_module неправильно работал при больших ответах. *) Исправление: отсутствие строки заголовка "Referer" всегда считалось правильным referrer'ом. Изменения в nginx 0.1.23 01.03.2005 *) Добавление: модуль ngx_http_ssi_filter_module и директивы ssi, ssi_silent_errors и ssi_min_file_chunk. Поддерживаются команды 'echo var="HTTP_..." default=""' и 'echo var="REMOTE_ADDR"'. *) Добавление: параметр лога %request_time. *) Добавление: если запрос пришёл без строки заголовка "Host", то директива proxy_preserve_host устанавливает в качестве этого заголовка первое имя сервера из директивы server_name. *) Исправление: nginx не собирался на платформах, отличных от i386, amd64, sparc и ppc; ошибка появилась в 0.1.22. *) Исправление: модуль ngx_http_autoindex_module теперь показывает информацию не о символическом линке, а о файле или каталоге, на который он указывает. *) Исправление: если клиенту ничего не передавалось, то параметр %apache_length записывал в лог отрицательную длину заголовка ответа. Изменения в nginx 0.1.22 22.02.2005 *) Исправление: модуль ngx_http_stub_status_module показывал неверную статистику для обработанных соединений, если использовалось проксирование или FastCGI-сервер. *) Исправление: на Linux и Solaris установочные пути были неверно заключены в кавычки; ошибка появилась в 0.1.21. Изменения в nginx 0.1.21 22.02.2005 *) Исправление: модуль ngx_http_stub_status_module показывал неверную статистику при использовании метода rtsig или при использовании нескольких рабочих процессов на SMP машине. *) Исправление: nginx не собирался компилятором icc под Линуксом или если библиотека zlib-1.2.x собиралась из исходных текстов. *) Исправление: nginx не собирался под NetBSD 2.0. Изменения в nginx 0.1.20 17.02.2005 *) Добавление: новые параметры script_filename и remote_port в директиве fastcgi_params. *) Исправление: неправильно обрабатывался поток stderr от FastCGI-сервера. Изменения в nginx 0.1.19 16.02.2005 *) Исправление: если в запросе есть нуль, то для локальных запросов теперь возвращается ошибка 404. *) Исправление: nginx не собирался под NetBSD 2.0. *) Исправление: во время чтения тела запроса клиента в SSL соединении мог произойти таймаут. Изменения в nginx 0.1.18 09.02.2005 *) Изменение: для совместимости с Solaris 10 в директивах devpoll_events и devpoll_changes значения по умолчанию уменьшены с 512 до 32. *) Исправление: директивы proxy_set_x_var и fastcgi_set_var не наследовались. *) Исправление: в директиве rewrite, возвращающей редирект, аргументы присоединялись к URI через символ "&" вместо "?". *) Исправление: строки для модуля ngx_http_geo_module без символа ";" во включённом файле игнорировались. *) Добавление: модуль ngx_http_stub_status_module. *) Исправление: неизвестный формат лог-файла в директиве access_log вызывал segmentation fault. *) Добавление: новый параметр document_root в директиве fastcgi_params. *) Добавление: директива fastcgi_redirect_errors. *) Добавление: новый модификатор break в директиве rewrite позволяет прекратить цикл rewrite/location и устанавливает текущую конфигурацию для запроса. Изменения в nginx 0.1.17 03.02.2005 *) Изменение: модуль ngx_http_rewrite_module полностью переписан. Теперь можно делать редиректы, возвращать коды ошибок и проверять переменные и рефереры. Эти директивы можно использовать внутри location. Директива redirect упразднена. *) Добавление: модуль ngx_http_geo_module. *) Добавление: директивы proxy_set_x_var и fastcgi_set_var. *) Исправление: конфигурация location с модификатором "=" могла использоваться в другом location. *) Исправление: правильный тип ответа выставлялся только для запросов, у которых в расширении были только маленькие буквы. *) Исправление: если для location установлен proxy_pass или fastcgi_pass, и доступ к нему запрещался, а ошибка перенаправлялась на статическую страницу, то происходил segmentation fault. *) Исправление: если в проксированном ответе в заголовке "Location" передавался относительный URL, то к нему добавлялось имя хоста и слэш; ошибка появилась в 0.1.14. *) Исправление: на Linux в лог не записывался текст системной ошибки. Изменения в nginx 0.1.16 25.01.2005 *) Исправление: если ответ передавался chunk'ами, то при запросе HEAD выдавался завершающий chunk. *) Исправление: заголовок "Connection: keep-alive" выдавался, даже если директива keepalive_timeout запрещала использование keep-alive. *) Исправление: ошибки в модуле ngx_http_fastcgi_module вызывали segmentation fault. *) Исправление: при использовании SSL сжатый ответ мог передаваться не до конца. *) Исправление: опции TCP_NODELAY, TCP_NOPSUH и TCP_CORK, специфичные для TCP сокетов, не используются для unix domain сокетов. *) Добавление: директива rewrite поддерживает перезаписывание аргументов. *) Исправление: на запрос POST с заголовком "Content-Length: 0" возвращался ответ 400; ошибка появилась в 0.1.14. Изменения в nginx 0.1.15 19.01.2005 *) Исправление: ошибка соединения с FastCGI-сервером вызывала segmentation fault. *) Исправление: корректная обработка регулярного выражения, в котором число выделенных частей не совпадает с числом подстановок. *) Добавление: location, который передаётся FastCGI-серверу, может быть задан с помощью регулярного выражения. *) Исправление: параметр FastCGI REQUEST_URI теперь передаётся вместе с аргументами и в том виде, в котором был получен от клиента. *) Исправление: для использования регулярных выражений в location нужно было собирать nginx вместе с ngx_http_rewrite_module. *) Исправление: если бэкенд слушал на 80-ом порту, то при использовании директивы "proxy_preserve_host on" в заголовке "Host" указывался также порт 80; ошибка появилась в 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. Изменения в nginx 0.1.14 18.01.2005 *) Добавление: параметры автоконфигурации --http-client-body-temp-path=PATH, --http-proxy-temp-path=PATH и --http-fastcgi-temp-path=PATH *) Изменение: имя каталога с временными файлами, содержащие тело запроса клиента, задаётся директивой client_body_temp_path, по умолчанию /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. *) Исправление: ошибка "[alert] zero size buf"; ошибка появилась в 0.1.3. *) Изменение: в директиве proxy_pass нужно обязательно указывать URI после имени хоста. *) Изменение: если в URI встречался символ %3F, то он считался началом строки аргументов. *) Добавление: поддержка unix domain сoкетов в модуле ngx_http_proxy_module. *) Добавление: директивы ssl_engine и ssl_ciphers. Спасибо Сергею Скворцову за SSL-акселератор. Изменения в nginx 0.1.13 21.12.2004 *) Добавление: директивы server_names_hash и server_names_hash_threshold. *) Исправление: имена *.domain.tld в директиве server_name не работали. *) Исправление: параметр лога %request_length записывал неверную длину. Изменения в nginx 0.1.12 06.12.2004 *) Добавление: параметр лога %request_length. *) Исправление: при использовании /dev/poll, select и poll на платформах, где возможны ложные срабатывания указанных методов, могли быть длительные задержки при обработке запроса по keep-alive соединению. Наблюдалось по крайней мере на Solaris с использованием /dev/poll. *) Исправление: директива send_lowat игнорируется на Linux, так как Linux не поддерживает опцию SO_SNDLOWAT. Изменения в nginx 0.1.11 02.12.2004 *) Добавление: директива worker_priority. *) Изменение: под FreeBSD директивы tcp_nopush и tcp_nodelay вместе влияют на передачу ответа. *) Исправление: nginx не вызывал initgroups(). Спасибо Андрею Ситникову и Андрею Нигматулину. *) Изменение: ngx_http_auto_index_module теперь выдаёт размер файлов в байтах. *) Исправление: ngx_http_auto_index_module возвращал ошибку 500, если в каталоге есть битый symlink. *) Исправление: файлы больше 4G не передавались с использованием sendfile. *) Исправление: если бэкенд резолвился в несколько адресов и при ожидании от него ответа происходила ошибка, то процесс зацикливался. *) Исправление: при использовании метода /dev/poll рабочий процесс мог завершиться с сообщением "unknown cycle". *) Исправление: ошибки "close() channel failed". *) Исправление: автоматическое определение групп nobody и nogroup. *) Исправление: директива send_lowat не работала на Linux. *) Исправление: если в конфигурации не было раздела events, то происходил segmentation fault. *) Исправление: nginx не собирался под OpenBSD. *) Исправление: двойные слэшы в "://" в URI превращались в ":/". Изменения в nginx 0.1.10 26.11.2004 *) Исправление: если в запросе без аргументов есть "//", "/./", "/../" или "%XX", то терялся последний символ в строке запроса; ошибка появилась в 0.1.9. *) Исправление: исправление в версии 0.1.9 для файлов больше 2G на Linux не работало. Изменения в nginx 0.1.9 25.11.2004 *) Исправление: если в запросе есть "//", "/./", "/../" или "%XX", то проксируемый запрос передавался без аргументов. *) Исправление: при сжатии больших ответов иногда они передавались не полностью. *) Исправление: не передавались файлы больше 2G на Linux, неподдерживающем sendfile64(). *) Исправление: на Linux при конфигурации сборки нужно было обязательно использовать параметр --with-poll_module; ошибка появилась в 0.1.8. Изменения в nginx 0.1.8 20.11.2004 *) Исправление: ошибка в модуле ngx_http_autoindex_module при показе длинных имён файлов. *) Добавление: модификатор "^~" в директиве location. *) Добавление: директива proxy_max_temp_file_size. Изменения в nginx 0.1.7 12.11.2004 *) Исправление: при использовании sendfile, если передаваемый файл менялся, то мог произойти segmentation fault на FreeBSD; ошибка появилась в 0.1.5. Изменения в nginx 0.1.6 11.11.2004 *) Исправление: при некоторых комбинациях директив location c регулярными выражениями использовалась конфигурация не из того location. Изменения в nginx 0.1.5 11.11.2004 *) Исправление: на Solaris и Linux могло быть очень много сообщений "recvmsg() returned not enough data". *) Исправление: в режиме прокси без использования sendfile на Solaris возникала ошибка "writev() failed (22: Invalid argument)". На других платформах, не поддерживающих sendfile, процесс зацикливался. *) Исправление: при использовании sendfile в режиме прокси на Solaris возникал segmentation fault. *) Исправление: segmentation fault на Solaris. *) Исправление: обновление исполняемого файла на лету не работало на Linux. *) Исправление: в списке файлов, выдаваемом модулем ngx_http_autoindex_module, не перекодировались пробелы, кавычки и знаки процента. *) Изменение: уменьшение операций копирования. *) Добавление: директива userid_p3p. Изменения в nginx 0.1.4 26.10.2004 *) Исправление: ошибка в модуле ngx_http_autoindex_module. Изменения в nginx 0.1.3 25.10.2004 *) Добавление: модуль ngx_http_autoindex_module и директива autoindex. *) Добавление: директива proxy_set_x_url. *) Исправление: модуль проксировании мог привести к зацикливанию, если не использовался sendfile. Изменения в nginx 0.1.2 21.10.2004 *) Добавление: параметры --user=USER, --group=GROUP и --with-ld-opt=OPTIONS в configure. *) Добавление: директива server_name поддерживает *.domain.tld. *) Исправление: улучшена переносимость на неизвестные платформы. *) Исправление: нельзя переконфигурировать nginx, если конфигурационный файл указан в командной строке; ошибка появилась в 0.1.1. *) Исправление: модуль проксировании мог привести к зацикливанию, если не использовался sendfile. *) Исправление: при использовании sendfile текст ответа не перекодировался согласно директивам модуля charset; ошибка появилась в 0.1.1. *) Исправление: очень редкая ошибка при обработке kqueue. *) Исправление: модуль сжатия сжимал уже сжатые ответы, полученные при проксировании. Изменения в nginx 0.1.1 11.10.2004 *) Добавление: директива gzip_types. *) Добавление: директива tcp_nodelay. *) Добавление: директива send_lowat работает не только на платформах, поддерживающих kqueue NOTE_LOWAT, но и на всех, поддерживающих SO_SNDLOWAT. *) Добавление: эмуляция setproctitle() для Linux и Solaris. *) Исправление: ошибка при переписывании заголовка "Location" при проксировании. *) Исправление: ошибка в модуле ngx_http_chunked_module, приводившая к зацикливанию. *) Исправление: ошибки в модуле /dev/poll. *) Исправление: при проксировании и использовании временных файлов ответы портились. *) Исправление: бэкенду передавались запросы с неперекодированными символами. *) Исправление: на Linux 2.4 при конфигурации сборки нужно было обязательно использовать параметр --with-poll_module. Изменения в nginx 0.1.0 04.10.2004 *) Первая публично доступная версия.