Apache – это мультиплатформенное, свободно распространяемое программное обеспечение с открытыми кодами для веб-серверов. Оно появилось на рынке в 1995 году, а с весны следующего года и до сегодняшнего дня относится к числу наиболее популярных серверных программ в интернете. Такое ПО применяется примерно в 46 % от всего количества веб-проектов. Первоначально «Апачи» проектировался как усовершенствованная версия NCSA HTTPd 1.3 – другого известного ПО для серверов. Проект развивается за счет усилий сообщества независимых программистов. Среди причин высокого спроса на Apache можно указать его надежность, простое управление, модульную организацию, адаптивность и масштабируемость. У этой программы есть свой официальный веб-сайт – httpd.apache.org. Однако у Apache имеются и слабые стороны. Среди них множество файлов конфигурации и доступных характеристик, снижающих безопасность, и ощутимое сокращение производительности при скачке трафика.
Назначение Apache
Разобравшись с тем, что представляет собой Apache, можно подробнее изучить специфику его применения и понять, что делает программа. На данном ПО обрабатываются запросы к содержимому, которое размещено на серверах. Хрестоматийный пример его применения – обработка обращений пользователей сайтов. С помощью своего браузера они заходят на веб-сайт и просматривают его страницы. При совершении пользователями действий с содержимым (клика по ссылке, навигации в меню и т. д.) браузерная программа создает соответствующий запрос и транслирует его на серверный компьютер. Apache анализирует его, находит требуемый контент, записывает ответ в HTML и отправляет его на браузер клиента. Он, в свою очередь, трансформирует полученный код в визуально воспринимаемую страницу.
Структура Apache
Это серверное ПО включает ядро на языке C и функциональные модули, увеличивающие его возможности. Выбор этих дополнительных блоков зависит от специфики содержащегося на сервере контента. Модифицируя файлы конфигурации, можно настраивать следующие характеристики ядра:
- httpd.conf – серверные уровни;
- extra/httpd-vhosts.conf – виртуальный хост;
- .htaccess – уровни каталога. Они позволяют децентрализовано настроить веб-сервер. Интерпретируя «на лету», эти файлы изменяют конфигурации серверного ПК без перезагрузки. Также htaccess позволяет контролировать некоторые возможности интернет-приложений для отдельных групп пользователей, не имеющих прав администраторов.
Изменять конфигурацию модулей можно следующими методами:
- модифицируя собственные файлы настройки модулей;
- меняя характеристики конфигурации операционной системы;
- внося изменения через командную строку.
Мультипроцессинговые модули
Анализ обращений пользователей осуществляется с помощью набора модулей:
- mpm_prefork – создает 1 поток для каждого обращения пользователя;
- mpm_worker – формирует несколько потоков, при этом каждый из них анализирует только 1 соединение (отличается повышенной масштабируемостью);
- mpm_event – аналогичен предыдущему, но приспособленный для обработки соединений вида keep-alive.
Использование того или иного модуля зависит от параметров веб-проекта и пользовательской аудитории.
Дополнительные модули
Функциональные возможности веб-сервера Apache увеличиваются за счет модулей – их общее число превышает 500. Некоторые из них разработаны создателями самого ПО, а остальные созданы сторонними разработчиками. Хотя имеется возможность сборки ядра и модулей во время компиляции программного обеспечения, также предусмотрена функция динамического подключения последних. Модули разрабатываются для решения следующих задач:
- поддержки добавляемых языков программирования;
- увеличения числа функций;
- модификации основных функции, исправления ошибок;
- повышения безопасности.
Интеграция с разными ЯП осуществляется с помощью модулей CGI и FastCGI. Для самых популярных языков разработаны специализированные модули, в частности apache_asp, mod_php и т. д.
Менеджмент URL и иные возможности mod_rewrite
Это эффективный инструмент, с помощью которого можно фильтровать и модифицировать URL. Он применяется для сокрытия определенных участков адреса, в частности расширения файла .php на сайтах, разработанных на PHP. Управлять модулем можно через ввод директив в .htaccess-файлах. К примеру, чтобы заменить расширения файлов .aspx на .php, нужно написать:
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)\.php$ $1.aspx {QSA,L]
Из примера очевидно, что директивы создаются с помощью регулярных знаков и знаковых конструкций: к примеру, символ «^» обозначает начало строки, запись «(.*)» – неограниченное число любых символов. Приведенное выше правило помогает скрыть факт создания сайта по технологии ASP.NET. Само название файла не изменяется. Apache анализирует запись в режиме real-time, обратно заменяет .php на .aspx и открывает соответствующий файл скрипта. К иным функциям этого модуля относятся:
- предварительная фильтрация, повышающая безопасность;
- сохранение информации в кэше файловой системы за счет переадресации обращений;
- лимиты на загрузку некоторых файлов.
Виртуальные хосты
Этот механизм нужен для поддержки нескольких разных сайтов на едином физическом сервере (с одним IP-адресом). Его основной функционал включает:
- независимую настройку модулей;
- управление доступом к конкретному содержимому сайта;
- независимый запуск httpd-процесса для каждого виртуал-хоста с предоставлением своих guid и uid;
- управление расходом системных ресурсов и трафика.
Часто этот блок применяется для предоставления хостингового сервиса.
Совмещение Apache с Nginx
Помимо «Апачи», используется и ряд других распространенных серверных ПО. Его основным аналогом и конкурирующим продуктом является Nginx, выпущенный на рынок в 2004 году как программное обеспечение, позволяющее решить c10k-проблему (в то время наблюдались определенные трудности с обработкой множества единовременно подаваемых запросов). Nginx отличается событийно-ориентированной структурой, обеспечивающей однопотоковую обработку новых запросов. Это ПО отличается высокой скоростью работы (в чем существенно превосходит «Апачи») со статическим содержимым. Благодаря этой его специфике можно эффективно использовать оба пакета ПО в связке. В ней на Nginx возлагается фильтрация обращений к серверу, самостоятельный анализ запросов на статическое содержимое и перенаправление остальных на «Апачи».
Все термины SEO-Википедии