Релиз новой стабильной ветки http-сервера Apache 2.4Доступен релиз http-сервера Apache 2.4.1, первый выпуск новой стабильной ветки 2.4.x, последние годы развиваемой в рамках экспериментальной ветки 2.3.x (прошлая стабильная ветка Apache 2.2 вышла в 2005 году, а первая альфа-версия 2.3.0 была представлена в 2008 году). В составе ветки 2.4.x развивались новые возможности, которые невозможно было интегрировать в стабильную ветку 2.2.x в силу большого размера вносимого кода, необходимости значительной переработки подсистем или из-за нарушения совместимости. Несмотря на то, что в ветке 2.4 заметно расширен API, он остаётся обратно совместимым с API Apache 2.2. Написанные для Apache 2.2.x модули потребуют перекомпиляции, но будут работать в Apache 2.4 без изменений кода или потребуют минимальных изменений. В отличие от прошлых выпусков, из состава пакета с исходными текстами Apache 2.4 исключены компоненты Apache Portable Runtime (APR) и APR-Util, которые теперь распространяются отдельно и имеют свою нумерацию версий. Для сборки Apache 2.4 следует установить APR 1.4.x и APR-Util 1.4.x. Ключевые новшества: Несколько MPM могут быть одновременно собраны в виде динамически загружаемых модулей, которые можно активировать в конфигурации без последующей пересборки; С модуля Event MPM снят гриф экспериментальной разработки. Event MPM основан на коде модуля Worker и реализует гибридную модель обработки соединений, сочетающую многопоточность с пулом ожидающих соединения процессов; Возможность определения через оператор "If" блоков конфигурации, привязанных к отдельным запросам (Per-request configuration). Например, можно использовать If "$req{Host} = ''", внутри выражения можно ссылаться на HTTP-заголовки запроса ($req), заголовки ответа ($resp) и переменные окружения ($env); Реализована поддержка асинхронных операций чтения и записи; Возможность определения через директиву LogLevel разных форматов ведения лога для отдельных модулей и директорий; Возможность указания значения параметра KeepAliveTimeout в миллисекундах; Новые модули: mod_lua - позволяет интегрировать в httpd интерпретатор языка Lua; mod_proxy_fcgi - модуль с поддержкой проксирования протокола FastCGI (поддержка схемы "fcgi:" в директиве "ProxyPass"); mod_proxy_scgi - модуль с поддержкой проксирования протокола SCGI (поддержка схемы "scgi:" в директиве "ProxyPass"); mod_ratelimit - позволяет организовать ограничение пропускной способности клиентов (например, суммарно для всех можно ограничить общую пропускную способность только для страницы загрузки файлов); mod_remoteip - заменяет значение IP-клиента на содержимое из определенного HTTP-заголовка (например, X-Client-IP или X-Forwarded-For). Обычно модуль используется при работе apache в роли бэкенда; mod_reflector - позволяет возвращать клиенту тело запроса, применив к нему определенный фильтр; mod_reqtimeout - позволяет установить таймаут и минимальную интенсивность потока данных при обработке входящих запросов (например, "RequestReadTimeout body=10,MinRate=1000" ограничивает время загрузки тела запроса 10 секундами, плюс прибавляет по 1 секунде на каждые 1000 байт полученных данных); mod_request - позволяет определить фильтр для обработки и распространения тела запроса; mod_slotmem_shm - система доступа к разделяемой памяти на основе слотов (scoreboard); mod_allowmethods - позволяет ограничить некоторые HTTP-методы не мешая авторизации и аутентификации (например, "AllowMethods GET HEAD OPTIONS"); mod_buffer - позволяет организовать буферизацию для входящих и исходящих фильтров. Измененные модули: В mod_ssl добавлена поддержка проверки статуса клиентского сертификата на OCSP серверах. Также добавлена возможность совместного использования данных SSL сессии на нескольких http-серверах, через задействование memcached; В mod_cache добавлена поддержка кэширования HEAD-запросов. Директивы mod_cache теперь можно указывать в привязке к отдельным директориям, а не только для отдельного сервера. Добавлена возможность выводить устаревшие данные из кэша в случае недоступности рабочего бэкенда. В заголовок X-Cache можно подставлять значения HIT/MISS/REVALIDATE; В mod_include в элемент 'include' добавлена поддержка атрибута 'onerror', позволяющего вывести свой документ при ошибке вместо вывода используемого по умолчанию текста ошибки (например, include virtual="/not-exist.html" onerror="/error.html"); В mod_proxy значительно увеличена производительность работы директивы ProxyPass в блоках Location и LocationMatch, что значительно быстрее, чем использование традиционного синтаксиса "ProxyPass путь URL"; В mod_proxy_balancer расширено число параметров BalancerMembers, которые можно менять через balancer-manager. Добавлена возможность добавления новых параметров BalancerMembers через balancer-manager. Поддержка изменения во время исполнения подмножества параметров директивы Balancer; В модулях mod_cgi, mod_include, mod_isapi и т.п. преобразование заголовков в переменные окружения осуществляется по более строгим правилам, например, блокируются попытки осуществления XSS-атак через подстановку скриптов в заголовки. Все заголовки в которых используются специальные символы теперь молча удаляются. Для проброса некорректных с точки зрения новых правил переменных окружения в устаревшие скрипты предусмотрено несколько обходных путей; В модуле mod_authz_core расширенная логика авторизации может быть задана при помощи Require и связанных директив, таких как RequireAll; Дополнительные компоненты: В поставку Apache включен скрипт fcgistarter, предназначенный для запуска серверных FastCGI процессов. В утилиту htcacheclean - добавлены функции просмотра и удаления отдельных прокэшированных URL и связанных с ними мета-данных; Средства для разработчиков модулей: Интерфейс для кэширование небольших объектов, основанный на ранее созданном для mod_ssl кэше сессионных данных. В качестве хранилища можно использовать цикличный буфер в разделяемой памяти, dbm-базу на диске и memcached; Добавлен парсер выражений общего назначения, API которого основан на ap_expr.h. Код парсера основан на ранее реализованном парсере для mod_include; Добавлен hook check_config для проверки конфигурации на ранней стадии загрузки, позволяя независимо проанализировать параметры определенных директив и при необходимости откорректировать их; Для оценки статуса mod_cache добавлен hook cache_status, вызываемый после принятия решения о кэшировании. Реализация по умолчанию добавляет при ответе опциональные заголовки X-Cache в X-Cache-Detail.
Распечатано с HostDB.ru.
|