Общая информация о модулях веб-сервера 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.

Статьи:

Домашняя страница: 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 ротация логов обрабатывается процессом сервера, поэтому вы сэкономите кучу процессов и дескрипторов файлов.

Домашняя страница: http://www.hexten.net/wiki/

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/

Похожие темы

Установка Apache, PHP, MySQL, phpMyAdmin Всё будет хорошо Митя Фомин Теперь доступна инструкция "Установка и настройка сервера Apache, PHP, MySQL, phpMyAdmin на Windows 10". Она заменяет ...
Руководство по использованию протокола Diffie-Hell... Наш опыт показывает, что современное использование протокола Diffie-Hellman не настолько надежное, как предполагалось ранее. В данной статье вы узнает...
Самые частые ошибки и вопросы при настройке и уста... Ошибка: Fatal error: Call to undefined function mb_detect_encoding() in C:serverdatahtdocsphpmyadminlibrariesphp-gettextgettext.inc on line 177 Реше...
Как установить PHP программу Сегодняшняя заметка рассчитана на совсем начинающих веб-мастеров. Что нужно, чтобы запустить PHP скрипт? Для этого нужен веб-сервер и интерп...
Настройка защищённого VPS (VDS) на Debian. Часть в... Первая часть здесь «Настройка защищённого VPS (VDS) на Debian. Часть первая: Установка Apache, PHP, MySQL». В первой части мы настро...