Обзор новых возможностей в Apache 2.0

Этот документ описывает основные различия между версиями 1.3 и 2.0 HTTP сервера Apache

Переход от версии 1.3 к версии 2.0
Улучшения в ядре сервера
Многопоточность в 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 [fe80::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.