mod_accel не определял и не патчил EAPI, если собирался вместе с mod_ssl-2.8.13-1.3.27+. mod_accel did not detect and patch broken EAPI when built with mod_ssl-2.8.13-1.3.27+. при проксировании с помощью модуля mod_rewrite mod_accel поддерживает переписывание заголовков "Location" и "Refresh" с помощью этого же модуля и для этого указывает имя бэкенда в переменной среды "ACCEL_REWRITE". when request is proxied with the help of mod_rewrite module mod_accel set the backend name in the "ACCEL_RWRITE" enviroment variable and supports the rewriting of "Location" and "Refresh" headers with the help of mod_rewrite module. mod_accel переписывает содержимое заголовка "Destination", если имя хоста в этом заголовке совпадает с содержимым заголовка "Host", или же если URI не абсолютный. mod_accel now rewrites "Destination" header if the host name in this header is as in "Host" header or if the destination URI is not absolute. mod_accel зацикливался в случае, если клиент запрашивал byte range, а бэкенд не передавал кэшируемый ответ полностью. mod_accel went into an endless loop if the client requested the byte range and the backend did not send the full cachable response. сделана проверка и патч для EAPI из mod_ssl-2.8.13-1.3.27+. broken EAPI from mod_ssl-2.8.13-1.3.27+ now is checked and patched. директива AccelSetXURI не работала. AccelSetXURI directive did not work. бэкенды, использующие named-based вирутальные хосты, не были доступны через _the_same_host_. backends that use named-based virtual hosts can not be accessed via _the_same_host_. AccelReverse работает и для запросов, проксированных через AccelPass. AccelReverse works for AccelPass'ed requests too. action remove в accel-cachemgr не работал с URL, в которых символы кодировались в виде %XX. accel-cachemgr's remove action did not work with URLs with characters endcoded as %XX. флаги дополнительных модулей R, Q и F залипали в кэше до тех пор, пока файл не удалялся из кэша. additional modules R, Q and F flags were sticky until cache file was not removed from cache. не работал action remove в accel-cachemgr. accel-cachemgr's remove action did not work. давно неменяемые документы не кэшировались, если для кэширования использовался AccelLastModifiedFactor. long invariable documents were not cached if AccelLastModifiedFactor was used to choose cache time. если в URL, созданным модулем mod_rewrite, находились символы в виде %XX, то они передавались бэкенду в раскрытом виде. if mod_rewrite created URL contained characters encoded as %XX then they was passed to backend unescaped. ключ -DMOD_REWRITE_DISABLE_TO_PROXY_SUBREQ. -DMOD_REWRITE_DISABLE_TO_PROXY_SUBREQ switch was added. переменная среды ACCEL_NOCACHE. ACCEL_NOCACHE enviroment variable was added. в директиве FreezeStart. in FreezeStart directive. директива AccelCacheSetCookie. AccelCacheSetCookie directive. AccelCacheRoot не понимал параметры в кавычках. AccelCacheRoot did not understand quoted parameters. модуль mod_freeze не замораживал схемы, если они указаны в одинарных кавычках. mod_freeze did not freeze schemas if they was quoted in apostrophes. модуль mod_freeze не замораживал тэг style, параметр style и схему behavior:. mod_freeze did not freeze style tag, style parameter and behavior: schema. последовательность вида <<script не замораживалась модулем mod_freeze. <<script sequence was not frozen by mod_freeze. оптимизирован алгоритм поиска в модуле mod_freeze. mod_freeze's search algorithm was optimized. флаги дополнительных модулей R, Q и F не выставлялись, если запрос был некэшируемым. additional modules R, Q and F flags were not set if request was not cachable. директива AccelPassXAccel. AccelPassXAccel directive. модуль mod_freeze. mod_freeze module. директива "AccelPassServer off" в Apache-1.3.26 вообще не выдавала заголовок "Server". "AccelPassServer off" did not send any "Server" header in Apache-1.3.26. документация по mod_accel копируется в /manual/mod/mod_accel.html. mod_accel Russian documentation is copied in /manual/mod/mod_accel.html. параметр MP в директиве AccelPass работал некорректно, если также был задал параметр PH или использовалось специальное имя _the_same_host_. AccelPass MP parameter was worked incorrectly if used with PH parameter or with special _the_same_host_ host name. во время плавного (graceful) рестарта мог произойти segmentation fault в основном процессе, если все рабочие слоты были заняты. segmentation fault can occur in main process while graceful restart when all child slots were busy. директивы AccelRetry5XX и AccelSetXURI. AccelRetry5XX and AccelSetXURI directives were added. заметки accel_request_body и accel_rewrite_response. accel_request_body and accel_rewrite_response notes were added. mod_accel не собирался компилятором aCC на платформе HP-UX. Спасибо Marko Asplund, aspakronodoc.fi. mod_accel is not built by aCC on HP-UX.
Thanks to Marko Asplund, aspakronodoc.fi.
косметические правки. code clean up.
если в URL перед аргументами находились символы в виде %XX, то они передавались бэкенду в раскрытом виде. if URL before arguments contained characters encoded as %XX then they was passed to backend unescaped. в директиве AccelPass можно использовать специальное имя хоста _the_same_host_. special hostname _the_same_host_ can be used in AccelPass directive. не работало ограничение количества соединений и ждущих процессов при использовании флага PH в директиве AccelPass. limition of connections and waiting processes does not work if PH flag in AccelPass directive was used. директива AccelPassServer. AccelPassServer directive was added. если модули mod_quoted или mod_randban были собраны статически или подгружались с помощью LoadModule, но не были добавлены директивой AddModule после директивы ClearModuleList, то директивы этих модулей не воспринимались. Если же директивы этих модулей не использовались в конфигурационных файлах, то при любых запросах, обрабатываемых модулем mod_accel, происходил segmentation fault. if mod_quoted or mod_randban modules were statically build or were loaded with LoadModule directive and were not added with AddModule directive after ClearModuleList directive then their directives were unrecognized. If their directives were not used in configration files then any request handled by mod_accel caused segmentation fault. некорректно обрабатывались ответы бэкенда с большими заголовками. backend response with big header was incorrectly handled. игнорируются строки типа "HTTP/1.0 200 OK" в середине заголовка ответа бэкенда. Добавлена запись в ErrorLog некорректных заголовков в ответе бэкенда. lines like "HTTP/1.0 200 OK" are ignored in middle of backend response header. Incorrect backend header lines are logged in ErrorLog. директива AccelInvalidate, accel-cachemgr и заголовки типа "Pragma: no-cache" не обновляли кэш, если задана директива "AccelUnlinkNoCached off". AccelInvalidate directive, accel-cachemgr and headers like "Pragma: no-cache" did not refresh cache if AccelUnlinkNoCached directive was off. порядок наследования AccelPass изменён, сначала проверяются директивы из виртуального сервера, а затем из основного. merge order of AccelPass directive is changed. Virtual server direcitves are checked first. не корректировался порт в заголовках "Location" и "Refresh" если использовался флаг PH в директиве AccelPass и номера портов фронтенда и бэкенда отличались. port was not corrected in "Location" and "Refresh" headers if PH flag in AccelPass directive was used and frontend and backend port numbers were not the same. флаг PH в директиве AccelPass. PH flag was added in AccelPass directive. упразднена директива AccelContentTail. AccelContentTail directive was removed. если перезаписываемая строка попадала на границу буфера, mod_randban мог некорректно поменять случайное число. mod_randban can incorrectly change random value if string to rewrite was on buffer edge. Совместимость с Apache 1.3.23. Apache 1.3.23 compatibility. если в конфигурации AccelPass описан Location в виде /proxied/, то при запросе /proxied возвращается редирект на URL с добавленным слэшом - /proxied/. if Location is specified in AccelPass as /proxied/ then on request /proxied redirect is returned to URL with slash added - /proxied/. не возвращалась ошибка, если не удавалось создать временный файл для хранения тела запроса POST. error was not returned if POST request body temporary file creation was failed. директива AccelReverse. AccelReverse directive was added. на Solaris 7 и FreeBSD 2.x большие ответы передавались не до конца. big repsonses was truncated on Solaris 7 and FreeBSD 2.x. скорректированы некоторые сообщения об ошибках. some error messages was corrected. если клиент в запросе POST обрывал соединение, то бэкенду передавалось неполное тело запроса. Теперь mod_accel в такой ситуации не соединяется с бэкендом. if client aborted connection while POST then backend received incompleted request body. Now mod_accel doesn't connect to backend in this situation. mod_accel не собирался без библиотеки mm. mod_accel did not build without mm library. в сообщения об ошибках добавлен URL, который передаётся бэкенду. backend URL was added in error messages. третий параметр в директиве AccelBusyLock. third parameter was added in AccelBusyLock directory. порядок загрузки модулей mod_accel, mod_randban, mod_quoted и mod_ssl не важен. load order of mod_accel, mod_randban, mod_quoted and mod_ssl has no meaning now. добавлен параметр --with-patch в configure.
Упразднены параметры --without-mod_charset и --without-mod_ssl.
--with-patch directive was added in configure.
--without-mod_charset and --without-mod_ssl directives is removed.
улучшение портабильности. portability enhancement.
во флаге MP директивы AccelPass можно указывать тэг. MP flag of AccelPass directive can have tag. при использовании проксирования (флаг P) в директиве RewriteRule модуля mod_rewrite можно использовать флаг MP. MP flag can be used in mod_rewrite module RewriteRule directive when proxing is specified (P flag). при указании времени кэширования с помощью директив AccelDefaultExpire или AccelLastModifiedFactor ответ не сохранялся в кэш, если разница во времени между фронтендом и бэкендом была больше время кэширования. if time to cache is specified in AccelDefaultExpire or AccelLastModifiedFactor directive and time difference between frontend and backend is more then specified time then answer was not saved in cache. директива AccelIgnoreAuth. AccelIgnoreAuth directive was added. при использовании проксирования (флаг P) в директиве RewriteRule модуля mod_rewrite модуль mod_proxy дублировал строку аргументов. mod_proxy module duplicated argument string when proxing is specified in mod_rewrite module RewriteRule directive (P flag). если бэкендов несколько и с одним из них соединение не было установлено, то информация об этой попытке в заметки %{accel*}x не добавлялась. if there are several backends and connection with one of them was not established then %{accel*}x notes did not contain state of it. при получении от бэкенда большого заголовка происходил segmentation fault. backend big header caused segmentation fault. в accel-cachemgr добавлены два состояния - invalid и no_accelerated. two status codes - invalid and no_accelerated was added in accel-cachemgr. директива RewriteRule модуля mod_rewrite с флагом [P] работала только при использовании в SSI. mod_rewrite module RewriteRule directive with flag [P] worked in SSI enviroment only. Изменения в директиве AccelCacheCookie: Добавлены параметр "all", запрещающие параметры и регулярные выражения. В одной директиве может быть указано несколько параметров. Директивы из вложенных блоков не объединяются. Имена cookie сортируются в алфавитном порядке. Changes in AccelCacheCookie directive: "all" parameter, supressing parameters and regular expressions was added. There can be several parameters in one directive. Directives is not merged. Cookie names is sorted in alphabetical order. Изменения в директиве AccelNoPass: Регулярное выражение может быть нечуствительно к регистру. Между символом "~" и регулярным выражением не должно быть пробела. В одной директиве может быть указано несколько параметров. Changes in AccelNoPass directive: Regular expression can be case-insensitive. There should not be space between "~" symbol and regular expression. There can be several parameters in one directive. директива AccelCacheCookie. AccelCacheCookie directive was added. заметка accel_nocache. accel_nocache note was added. обработчик accel-cachemgr. accel-cachemgr handler was added. при запросе нескольких невозрастающих byteranges мог выдаваться неверный ответ. answer may be wrong if request contains several non-growing byteranges. заметка %{accel_r}x не записывалась в лог. %{accel_r}x note was not logged. если ответ некэшируемый, то при преждевременном обрыве соединения с клиентом соединение с бэкендом не закрывалось сразу. if response is not cachable and client prematurely closes connection then connection to backend was not closed at once. ошибка в accel_read_and_check_writable() вызывала нагрузку на процессор. bug in accel_read_and_check_writable() caused high CPU usage. Первая версия.
Тестировалась на Apache 1.3.14, 1.3.17, 1.3.19, 1.3.20 на FreeBSD 3.4, 4.2.
First release.
Tested with Apache 1.3.14, 1.3.17, 1.3.19, 1.3.20 on FreeBSD 3.4, 4.2.