Релиз новой стабильной ветки http-сервера Apache 2.4
Несмотря на то, что в ветке 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.
Источник: http://www.opennet.ru/opennews/art.shtml?num=33138
|
0 | Tweet | Нравится |
|