Общая информация о модулях веб-сервера Apache
Модули веб-сервера Apache (или как их ещё называют Dynamic Shared Object (DSO), т. е. динамические общие объекты), предназначены для добавления новой функциональности веб-серверу. Этих модулей много. Официальная информация о них размещена на странице http://httpd.apache.org/docs/2.4/mod/
Зачастую эти модули могут творить удивительные вещи, значительно расширяют функциональность сервера. Именно поэтому о них нужно знать. В этом коротеньком цикле статей (всего три статьи) я собираюсь перечислить модули и очень кратко их охарактеризовать. Изучение этой информации может дать следующее:
- расширение кругозора, вы узнаете о таких возможностях Apache о которых даже не догадывались;
- если возникнет необходимость реализовать какой-либо нестандартный функционал сервера, вы быстро сможете подобрать нужный модуль;
- зная роль каждого модуля можно отключать те, которые не используются. Это положительно скажется на безопасности и производительности веб-сервера.
Узнать какие модули в данный момент подключены можно посмотрев конфигурационный файл Apache — httpd.conf. Те модули, которые начинаются со строки LoadModule, в данный момент подключены. Те же, чья строка закомменирована (#LoadModule) в данный момент отключены, но могут быть задействованы.
Чтобы не получилась слишком большая статья, я разделил модули на три условных группы:
- модули, которые по умолчанию не поставляются с Apache (т. е. вы не найдёте их в каталоге include пока сами не установите).
- модули, которые поставляются с Apache и по умолчанию подключены.
- модули, которые поставляются с Apache, но по умолчанию отключены.
Я буду рассматривать на примере Windows версии Apache, но вся информации (по крайней мере, описания модулей) применимы и к другим платформам, на которых работает Apache.
Статически скомпилированные модули (те, которые выводятся командой httpd -l) здесь не рассматриваются.
Модули, которые не поставляются с Apache
Для Windows эти модули могут быть скачены с этой страницы. Там предусмотрены версии для 64-битного веб-сервера Apache и для 32-битного. Особенностью всех этих модулей является то, что они не работают с Apache 2.0 и 2.2. А ещё для их работы обязательно нужен Visual C++ Redistributable for Visual Studio 2012 соответствующей битности. Если у вас его ещё нет, то скачайте с официального сайта по этой ссылке.
mod_log_dbd
Данный модуль ведёт лог (записывает) веб запросы к SQL базе данных. Это хорошая и полезная функция. Этот модуль будет рассмотрен подробно в отдельной статье на codeby.net.
Официальный сайт: https://code.google.com/p/dbd-modules/wiki/mod_log_dbd
mod_vhost_dbd
Этот модуль перезаписывает директорию document root из SQL базы данных
Официальный сайт: https://code.google.com/p/dbd-modules/wiki/mod_vhost_dbd
mod_bw (Bandwidth Mod)
Этот модуль:
- Ограничивает количество одновременных соединений на виртуальный хост/каталог
- Ограничивает полосу пропускания для файлов на виртуальном хосте/каталоге
- Получает некоторую базовую статистику
Официальная страница: http://ivn.cl/category/apache/
mod_security
Мой любимый модуль и, пожалуй, после mod_rewrite самый востребованный.
ModSecurity — это WAF — web application firewall, т.е. файервол для веб-приложений. Его смысл заключается в том, что он проверяет все приходящие на веб-сервер запросы и отфильтровывает те из них, которые соответствуют правилам безопасности. WAF (файервол для веб-приложений) может предотвратить атаки самого разного рода — инъекции (инжекты) в базы данных, межсайтовый скриптинг, на известные уязвимости популярных движков и очень многое другое, даже, например, в случае с Shellshock может помочь ModSecurity.
Статьи:
- Как установить ModSecurity (mod_security) на Apache (на Windows)
- Как усилить веб-сервер Apache с помощью mod_security и mod_evasive на CentOS
Домашняя страница: http://www.modsecurity.org/
mod_fcgid
Это высокопроизводительная альтернатива для mod_cgi или mod_cgid, которая запускает достаточное количество экземпляров CGI программы, чтобы обрабатывать одновременные запросы, и эта программа продолжает работать для обработки последующих входящих запросов. Это нравится, например, PHP разработчикам, которые предпочитают его как альтернативу запуска mod_php для каждого процесса, при этом достигается схожая производительность.
Домашняя страница: http://httpd.apache.org/mod_fcgid/
mod_jk
Коннектор сервера Tomcat. Чтобы понимать, зачем он нужен, сначала нужно объяснить что такое Tomcat, а также что такое сервлеты Java и технологии JavaServer Pages.
Домашняя страница: http://tomcat.apache.org/
mod_line_edit
Это фильтр общего назначения для перезаписи исходящего текста. Говоря чуть проще, этот модуль работает как простой редактор строк, делает это на-лету. Он ищет и заменяет текст в соответствии с правилами, заданными в конфигурационном файле или в файле .htaccess
Рекомендуется для работы с простым текстом, в том числе с Javascript и таблицами стилей. Не рекомендуется для HTML или XML, но может быть использован и для них при должной степени умелости.
Домашняя страница: http://apache.webthing.com/mod_line_edit/
mod_log_rotate
Если у вас много виртуальных серверов на одном Apache и вы используете поставляемую вместе с ним программу rotatelogs.exe для ротации логов, вы заметите, что ваша таблица процессов загромождена экземплярами rotatelogs для каждого виртуального сервера. С mod_log_rotate ротация логов обрабатывается процессом сервера, поэтому вы сэкономите кучу процессов и дескрипторов файлов.
Домашняя страница:
mod_view
Отображает заголовок, хвост или всё содержимое файла. Для удалённого просмотра (лог) файлов. Поддерживает egrep.
Домашняя страница: http://www.apachelounge.com/
mod_watch
Этот модуль будет наблюдать и собирать байты, запросы и документы входящие и выходящие по виртуальным хостам, по владельцам файла, по удалённым IP адресам, по каталогам или расположениям и по всему серверу в целом.
Может использоваться в паре с программами для визуализации этих данных.
Домашняя страница: http://www.apachelounge.com/
mod_websockect
Позволяет веб-страницам использовать протокол WebSocket для двухсторонней связи.
Если статья в Википедии, на которую дана ссылка, вас заинтересовала, то подробности и пример использования данного плагина и самой технологии WebSocket вы найдёте в каталоге с модулем.
Домашняя страница: https://github.com/disconnect/apache-websocket/
mod_xsendfile
Этот модуль обрабатывает X-SENDFILE заголовки, которые зерегестрированы оригинальным обработчиком вывода.
Если он вычисляет присутствие таких заголовков, то он отбрасывает весь процесс и отправляет заданный файл для этого заголовка, вместо использования внутренних задач Apache вроде всех видов оптимизации (таких как кэширование заголовков и sendfile или mmap, если они настроены).
Может быть полезен для обработки вывода скриптов вроде php, perl или любых cgi.
Домашняя страница: https://tn123.org/mod_xsendfile/