# Обзор новых возможностей в 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 большая часть данной работы теперь делается сервером автоматически, а порядок следования модулей определяется отдельно в каждом хуке (hook), что делает процесс более гибким и конфигурируемым. Также были добавлены новые функции, которые предоставляют дополнительные возможности использования модулей, избавляя от необходимости внесения каких-либо изменений в ядро сервера.
Поддержка протокола IPv6
  В системах, где протокол IPv6 поддерживается нижележащей библиотекой Apache Portable Runtime, Apache по умолчанию получает возможность слушать IPv6 сокеты. В добавок к этому директивы 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.