Что такое Apache веб-сервер и как он работает
Когда вы заходите на сайт, ваш браузер обращается к веб-серверу — например, к Apache, — чтобы получить тексты, картинки и другую информацию и показать их вам. В статье мы расскажем, как же работает Apache, какая у него архитектура и функции.

Что такое веб-сервер
Веб-сервер — это программа, которая работает на сервере в интернете. Она выступает посредником между файлами сайта, которые хранятся на файловой системе сервера, и пользователями, которые хотят на сайт зайти. Задача веб-сервера — «отдавать» пользователям сайты и приложения.
Когда вы заходите на страницу, браузер отправляет запрос на веб-сервер. Тот получает запрос, находит нужные файлы (HTML-страницы, изображения, тексты) и отправляет их обратно вашему браузеру.
Apache веб-сервер (Apache HTTP Server) — одна из таких программ. Вы устанавливаете ее на удаленный компьютер (сервер), где физически хранятся файлы сайта, настраиваете конфигурационные файлы, дополнительно указываете, где лежат файлы сайта. А дальше Apache обслуживает запросы пользователей.
Основные функции веб-сервера:
принимать соединения от браузеров, мобильных приложений, умных устройств и других клиентов;
обрабатывать запросы: искать файлы, запускать скрипты;
отправлять ответы: страницы, файлы или ошибки, если что-то не найдено;
работать с протоколами HTTP и HTTPS.
История и развитие Apache
Apache появился в 1990-х — тогда, когда интернет стал общедоступным и появилась Всемирная паутина (WWW). Пользователей сети становилось все больше, а существующие веб-серверы не могли справиться с их наплывом.
Разработчики будущего Apache взяли за основу популярный тогда NCSA HTTPd и создали более устойчивый к нагрузкам веб-сервер. Так родилось название «Apache» — от словосочетания «a patchy server», или «сервер с патчами».
Первую версию выкатили в 1995 году, а через четыре года создали Apache Software Foundation — организацию, которая до сих пор координирует проект.

Как работает Apache
В этом разделе мы опишем, по какому принципу работает веб-сервер, поговорим об архитектуре Apache и пошагово расскажем, как программа принимает и обрабатывает запросы.
Принципы работы Apache
Веб-сервер работает по модели «запрос-ответ». Его задача — постоянно ждать входящие HTTP-запросы, обрабатывать их по установленным правилам и возвращать клиенту результат.
Вот как Apache обрабатывает HTTP-запрос:
Шаг 1. Прием соединения
Apache запускается и начинает постоянно ожидать подключения на сетевом порту, обычно это 80 для HTTP или 443 для HTTPS. Когда браузер или другое приложение пытается загрузить страницу, оно устанавливает сетевое соединение с Apache.
Шаг 2. Анализ запроса
После установки соединения Apache получает HTTP-запрос. Программа анализирует его заголовки и определяет, какой конкретно ресурс запрошен, какой метод используется (например GET или POST), какие переданы параметры и заголовки.
Шаг 3. Поиск ресурса
Apache обращается к файловой системе сервера, чтобы найти запрошенный ресурс. То, как будет действовать Apache, зависит от конфигурационных файлов. Например, директивы в файлах httpd.conf или .htaccess указывают Apache, в какой корневой папке искать файлы, нужно ли перенаправить пользователя на другой URL.
Шаг 4. Формирование ответа
Когда ресурс найден, Apache формирует HTTP-ответ. Что в нем есть:
Статусный код. 200 OK — успешно, 404 Not Found — файл не найден, 500 Internal Server Error — ошибка в скрипте.
Заголовки ответа. Они, например, описывают содержимое сайта и управляют кешированием.
Тело ответа. Это сами данные, которые запросил пользователь. Ими могут быть HTML-страницы, изображения, результат работы скрипта.
Шаг 5. Отправка ответа и закрытие соединения
Apache отправляет собранный HTTP-ответ обратно клиенту. После этого соединение закрывается, чтобы освободить ресурсы для новых запросов.

Архитектура Apache
Архитектура Apache построена на трех ключевых компонентах: ядро, система многопроцессорной обработки (MPM) и модули. Такая структура делает сервер гибким и производительным.
Ядро Apache отвечает за базовые функции веб-сервера:
управление конфигурацией и настройками;
обработку основных протоколов HTTP;
организацию работы модулей;
реализацию API для взаимодействия между компонентами.
Ядро включает в себя базовый функционал, но его недостаточно, чтобы обеспечить полноценную работу. Для этого понадобятся модули.
Модули — элементы, каждый из которых добавляет конкретную функцию. К примеру, есть такие модули:
аутентификации — mod_auth_basic, mod_authn_dbd;
безопасности — mod_ssl, mod_security;
обработки контента — mod_php, mod_proxy;
оптимизации — mod_cache, mod_deflate.
Чтобы подключить модуль, используйте следующую директиву:
Система многопроцессорной обработки (MPM) в Apache нужна, чтобы обрабатывать одновременно сразу множество запросов. Есть три основные модели:
Prefork MPM создает несколько независимых процессов, каждый из которых обрабатывает одно соединение. Хорошо подходит для обеспечения работы модулей, но не поддерживает многопоточность.
Worker MPM используется для процессов и потоков. Потребляет меньше памяти и эффективнее обрабатывает множество одновременных соединений.
Event MPM нужен, чтобы одновременно обслуживать большое число запросов. Для этого он передает часть вычислительной работы потокам прослушивателей — так освобождаются рабочие потоки для новых запросов.
Процесс инициализации и обработки запросов
Представьте, что сайт — это папка с файлами на удаленном сервере. Вот примеры файлов, которые могут там лежать:
main.page.html — текст и разметка главной страницы;
style.css — файл со стилями, то есть шрифтами и цветами;
photo.jpg — картинки;
app.js — скрипты для интерактивности.
Теперь пошагово расскажем, как Apache принимает запросы от пользователей и помогает открывать страницы:
Вы находите сайт www.example.com и кликаете по ссылке, чтобы на него зайти.
Браузер отправляет на сервер example.com интернет-запрос с просьбой открыть главную страницу, main.page.html.
Apache принимает запрос. Он не сканирует весь сайт, а идет в конкретную папку, которую ему указали при настройке, и ищет там запрошенный файл main.page.html.
Сервер находит файл main.page.html и отправляет содержимое обратно вашему браузеру. Он отправляет именно файлы, а не готовую страницу.
Браузер получает код main.page.html, читает его и видит, что там есть ссылки на другие файлы. Чтобы отобразить страницу правильно, пригодятся файлы со стилями и изображениями: style.css и photo.jpg.
Браузер отправляет Apache новые запросы: «Пришли style.css», «Отправь photo.jpg».
Apache находит каждый из этих файлов и отправляет браузеру.
После того как Apache все отправил, браузер собирает из разных файлов готовую страницу. Ее вы и увидите на мониторе или экране.
Основные модули Apache и их функции
Apache веб-сервер построен на модульной архитектуре, что позволяет гибко настраивать его функциональность и расширять возможности. Приведем примеры полезных модулей, которые пригодятся в работе, а еще дадим ссылки на официальную документацию. Там есть больше информации о том, как установить нужные модули, для каких версий Apache они доступны и как с ними работать.
mod_auth_basic организует базовую HTTP-аутентификацию через логин и пароль.
mod_authn_dbd проверяет учетные данные пользователя через SQL-базу данных, например, MySQL или PostgreSQL.
mod_ssl — критически важный модуль для любого современного сайта. Шифрует соединение по протоколам SSL/TLS, что нужно для работы HTTPS. А еще модуль дает информацию о SSL-соединении.
mod_security — межсетевой экран для веб-приложений (WAF). Модуль проверяет, нет ли во входящих запросах вредоносных данных. Также блокирует запросы, если находит в них что-то подозрительное, например SQL-инъекции или XSS-атаки.
mod_proxy — ключевой модуль для построения сложной архитектуры. Может работать как обратный прокси и балансировщик нагрузки. Это позволяет перенаправлять запросы на другие серверы (бэкенды), что полезно для развертывания приложений на Python, Node.js или организации кластера из нескольких серверов.
mod_cache хранит в памяти или на диске готовые ответы сервера. При повторном запросе того же ресурса Apache отдаст кешированную копию, что разгрузит бэкенд приложения. Это значительно ускорит загрузку страниц.
mod_deflate с помощью алгоритма gzip сжимает текст перед тем, как отправить его пользователю. Так объем передаваемых данных становится меньше, и сайт грузится быстрее.
На сайте разработчиков веб-сервера Apache есть раздел документации, который посвящен модулям. Там вы сможете ознакомиться с их полным списком и подобрать те, что подходят под ваши задачи.
Страница со всеми модулями, которые входят в дистрибутив Apache HTTP Server. Для удобства все отсортировано в алфавитном порядкеПреимущества и недостатки Apache
Apache удобно настраивать под себя: можно комбинировать разные модули, удалять ненужные и тем самым настраивать задачи, которые будет решать веб-сервер. А еще у программы обширная официальная документация, понятный синтаксис и частые обновления.
Детально рассмотрим плюсы и минусы Apache, с чем они связаны и как влияют на работу.
Плюсы Apache
Модульная архитектура — этото главное преимущество Apache. Из разных модулей вы можете собрать функционал веб-сервера как конструктор, например: добавить поддержку PHP через mod_php, включить кеш через mod_cache, настроить балансировку через mod_proxy.
Безопасность. У Apache регулярно выходят обновления, в которых закрываются уязвимости, а модули вроде mod_security и mod_ssl дают дополнительную защиту. Еще вы можете тонко настроить права доступа к критическим разделам сайта через .htaccess.
Кроссплатформенность. Apache работает на Linux, Windows, macOS и даже на FreeBSD. Это важно при разработке и переносе проектов между средами. Вы можете настроить сервер на Windows и быть уверенными, что он заработает на сервере с Linux.
Обширная документация, в которой подробно рассказано, как работать с Apache. Там подробно описаны директивы, модули и методы настройки.
Низкий порог входа. Синтаксис файлов конфигурации Apache (.conf, .htaccess) интуитивно понятен, а директивы вроде DocumentRoot, Directory или LoadModule легко читаются даже новичками.
Большое сообщество. По данным компании Web3 Tech, Apache — второй по популярности веб-сервер после nginx. На Stack Overflow разобрано много ситуаций и проблем, а еще относительно несложно найти специалистов с опытом работы именно с Apache.
Минусы Apache
Проблемы производительности при высоких нагрузках. Этот недостаток есть у Prefork MPM, где Apache создает отдельный процесс для каждого соединения. Тогда, если одновременно подключены тысячи пользователей, сервер потребляет много оперативной памяти и процессорного времени. Особенно заметна разница по сравнению с более современными серверами вроде nginx — он использует асинхронную модель обработки соединений.
Высокое потребление памяти. По сравнению с тем же nginx, Apache тратит больше памяти на поддержание работы одного соединения. Из-за этого платить за инфраструктуру приходится больше.
Сложность тонкой настройки. Чтобы выжать из Apache максимум, нужна глубокая настройка параметров MPM, а возможности этой настройки сильно зависят от железа и нагрузки на сайт. nginx в этом плане проще — его асинхронная архитектура хорошо масштабируется по умолчанию.
Как установить Apache
Расскажем, как установить веб-сервер на Windows и поделимся пакетными менеджерами, откуда можно скачать Apache на серверы других операционных систем.
Итак, что нужно сделать для установки Apache на Windows:
1. Убедитесь, что на вашем компьютере установлен пакет Visual C++ Redistributable for Visual Studio 2015-2022.
2. Найдите бинарные сборки от сторонних разработчиков — именно их используют, чтобы установить Apache на Windows. Один из официально рекомендованных ресурсов — Apache Lounge.
3. Скачайте ZIP-архив с Apache Lounge или другого проверенного портала и извлеките содержимое архива. Папку Apache24 со всеми файлами сервера часто советуют разместить в корне диска C:\, но можно в любом удобном месте.
4. Отредактируйте файл конфигурации C:\Apache24\conf\httpd.conf. Если нужно — укажите правильный путь к папке сервера в директиве Define SRVROOT. Найдите и раскомментируйте строку #ServerName www.example.com:80, измените ее на ServerName localhost:80.
5. От имени администратора откройте командную строку, перейдите в C:\Apache24\bin\ и выполните команду для установки службы Windows:
6. Запустите сервер командой:
7. Откройте браузер и перейдите по http://localhost. Если все прошло хорошо, вы увидите сообщение «It works!»
В дополнение поделимся источниками о том, как установить Apache:
Cтраница разработчиков об использовании веб-сервера для Windows.
Официальная страница о компиляции и установке Apache в Unix и Unix-подобных системах: Fedora, CentOS, Ubuntu, Debian.
