Обзор новых возможностей в Apache 2.0
Этот документ описывает основные различия между версиями 1.3 и 2.0 HTTP сервера Apache
- Многопоточность в UNIX
- На UNIX системах, которые поддерживают потоки (нити) стандарта POSIX,
Apache теперь может выполняться в гибридном многопроцессово -
многопоточном режиме. Это способствует расширяемости
системы для многих, но не для всех способов конфигурирования.
- Новая система сборки
- Система сборки была полностью изменена, и теперь основывается на autoconf и libtool.
Это делает процесс конфигурирования Apache более похожим на подобный процесс в других программных
продуктах.
- Поддержка различных протоколов
- Apache теперь имеет специальную инфраструктуру,
способную обслуживать различные протоколы.
Модуль
mod_echo
был написан в качестве
примера этому.
- Улучшенная поддержка отличных от UNIX
платформ
- Apache 2.0 стал работать быстрее и надежнее
на отличных от UNIX платформах, таких как: BeOS,
OS/2 и Windows. С введением новых специфичных
для каждой платформы мульти-процессных модулей (MPMs) и
библиотеки Apache Portable Runtime (APR), эти платформы
теперь поддерживаются с помощью их собственных API, что
позволяется избежать введения зачастую неправильно работающих
из-за большого количества ошибок POSIX - эмулирующих слоев.
- Новый API для Apache
- API для написания модулей значительно изменился в версии 2.0
Многие из проблем версии 1.3, связанные с порядком следования
модулей и их приоритетами, должны исчезнуть. В версии 2.0
многие из подобных вещей делаются автоматически, и теперь
порядок следования модулей определяется посредством специальных
программных крючков (hooks), отчего настройка сервера становится
более гибкой. Также были добавлены новые функции, которые
предоставляют дополнительные возможности использования модулей,
избавляя от необходимости внесения каких - либо изменений в ядро
сервера.
- Поддержка протокола IPv6
- На системах, где протокол IPv6 поддерживается
базовой библиотекой Apache Portable Runtime, Apache
по умолчанию получает возможность слушать IPv6 сокеты
(sockets). В добавок к этому директивы
Listen
, NameVirtualHost
и VirtualHost
могут работать с адресными строками,
заданными в формате IPv6 (т.е. например "Listen [2001:db8::1]:8080").
- Использование фильтров
- Модули Apache теперь могут быть написаны как фильтры,
обрабатывающие потоки данных, которые приходят или уходят
из сервера. Это позволяет, к примеру, данным, являющимся
результатом работы CGI-скрипта, быть обработанными SSI
фильтром INCLUDES, предоставляемым модулем
mod_include
. Модуль mod_ext_filter
позволяет внешним программам исполнять роль фильтров точно так же
как и CGI программам позволяется действовать в качестве
обработчиков (handlers).
- Сообщения об ошибках на разных языках
- Сообщения об ошибках, посылаемые браузеру, теперь
представлены на нескольких языках и используют SSI
технологию. Они могут быть легко отредактированы
администратором под свои нужды.
- Упрощенная конфигурация
- Многие запутанные директивы были упрощены. Наиболее
сбивающие с толку Port и BindAddress были убраны;
для привязки к IP адресу используется только директива
Listen
; директива
ServerName
определяет имя сервера и номер порта
теперь только для перенаправлений и работы с виртуальными хостами.
- Поддержка юникода Windows NT
- Apache 2.0 на Windows NT теперь использует кодировку utf-8
для работы с именами файлов. Это позволяет использовать
нижележащую файловую систему, работающую в формате Unicode,
что предоставляет поддержку сервером многоязычности для всех NT-
систем, включая Windows 2000 и Windows XP.
Это не распространяется на такие операционные системы, как
Windows 95, 98 или ME, которые для обращения к файловой системе
используют локальные машинные кодовые страницы.
- Новая библиотека для работы с регулярными выраженями
- В состав Apache 2.0 была включена
библиотека для работы с Perl-совместимыми регулярными выраженями (PCRE).
Все регулярные выражения теперь используют более мощный синтаксис Perl 5.
mod_ssl
- Новый модуль в Apache 2.0. Этот модуль является интерфейсом
к протоколам шифрования SSL/TLS, предоставляемыми OpenSSL.
mod_dav
- Новый модуль в Apache 2.0. Этот модуль внедряет спецификацию
Distributed Authoring and Versioning (DAV), позволяющую управлять
содержимым сайта посредством расширенного протокола HTTP.
mod_deflate
- Новый модуль в Apache 2.0. Этот модуль позволяет браузерам, поддерживающим
данную технологию, запрашивать данные в сжатом виде, что сокращает нагрузку на
сеть.
mod_auth_ldap
- Новый модуль в Apache 2.0.41. Этот модуль позволяет использовать базу данных LDAP
для хранения имен и паролей пользователей, необходимых при аутентификации по методу
Basic. Сопутствующий ему модуль
mod_ldap
обеспечивает возможность
создания очередей подключений (connection pools) и кэширования результатов.
mod_auth_digest
- Включает дополнительную поддержку кэширования сессий
процессами, благодаря использованию общей области памяти (разделению
памяти).
mod_charset_lite
- Новый модуль в Apache 2.0. Этот экспериментальный модуль позволяет
осуществлять перевод из одного набора символов (character set) в другой и из одной
кодировки в другую.
mod_file_cache
- Новый модуль в Apache 2.0. Этот модуль включает в себя
функциональность модуля mod_mmap_static из Apache 1.3
плюс новые возможности кэширования.
mod_headers
- Этот модуль стал более гибким в Apache 2.0. Он позволяет
модифицировать заголовки запросов, используемых модулем
mod_proxy
, и может включать в ответ сервера заголовки в
зависимости от различных условий.
mod_proxy
- Прокси модуль был полностью переписан, и теперь включает
в себя преимущества новой фильтровой инфраструктуры и использует
более надежную, совместимую с HTTP/1.1 прокси-технологию. В добавок
к этому была введена новая секция
<Proxy>
, которую можно использовать в конфигурационных файлах, что
обеспечивает более удобный (и более быстрый для ядра сервера) контроль над сайтами,
использующими proxy-технологию. Перегруженная конфигурация <Directory "proxy:...">
более не поддерживается. Модуль теперь разделен на отдельные специфичные модули,
поддерживающие различные протоколы. Эти модули включают в себя proxy_connect, proxy_ftp
и proxy_http.
mod_negotiation
- Добавлена новая директива
ForceLanguagePriority
, для того чтобы вместо ответов сервера
NOT ACCEPTABLE или MULTIPLE CHOICES всегда предоставлять пользователю
определенный документ. В дополнение к этому алгоритмы
негоциации (negotiation) и MultiViews были вычищены и исправлены, для
обеспечения более последовательного результата, а также появилась возможность
включения непосредственного содержимого документов в карту типов (type map).
mod_autoindex
- Листинги автоиндексируемых каталогов теперь могут выдаваться в виде
HTML-таблиц. Появилась возможность более гибкой сортировки, включая сортировку по версиям и
сортировку с использованием универсальных символов (wildcard).
mod_include
- Введены новые директивы, которые позволяют изменить начальный и конечный
теги SSI элементов, задаваемые по умолчанию, а также предоставляют возможность
конфигурирования формата сообщений об ошибках и времени непосредственно
в главном конфигурационном файле, а не в SSI документе. Результаты
обработки регулярных выражений (теперь основывающихся на синтаксисе
регулярных выражений языка Perl) могут быть получены при помощи переменных
$0 .. $9 модуля mod_include.
mod_auth_dbm
- Теперь поддерживает многочисленные типы DBM-подобных баз данных посредством
директивы
AuthDBMType
.