Skip to content
EN
← Все статьи

Что такое Apache: веб-сервер простыми словами и отличия от nginx

Серверная стойка веб-сервера и ноутбук с конфигурацией в терминале

Если коротко, что такое Apache: это бесплатный веб-сервер с открытым кодом (полное название Apache HTTP Server), который принимает HTTP-запросы браузеров и возвращает страницы, файлы и результаты работы PHP или другого бэкенда. Его развивает фонд Apache Software Foundation, работает он на Linux, Windows и macOS и обслуживает огромное число сайтов.

Что такое Apache простыми словами

Браузер просит: «дай /catalog/index.php с сайта example.ru». Apache понимает, к какому сайту относится запрос, находит файл на диске, при необходимости передаёт его интерпретатору PHP и возвращает ответ с кодом состояния — 200, 301, 404 и так далее. Работает по HTTP, а с модулем mod_ssl — по HTTPS.

По-русски название часто пишут «апач» или «апачи», в поиске встречается и опечатка apatch — речь в любом случае об одном и том же сервере. Исполняемый файл называется httpd (в Debian и Ubuntu — apache2), поэтому в документации и конфигурации встречаются оба имени.

Путаницу добавляет то, что Apache — это ещё и название организации. Apache Software Foundation (сайт apache.org) курирует сотни проектов: Kafka, Spark, Superset, Airflow, Tomcat и другие. К веб-серверу они отношения не имеют, кроме общего «зонтика». Отдельно стоит лицензия Apache 2.0 — это разрешительная open-source лицензия фонда, под которой выпускают и чужие проекты; сам веб-сервер распространяется под ней же. Велосипеды, часы и вертолёт AH-64 с этим именем — другая история.

Актуальная ветка сервера — 2.4. Ветка 2.2 давно не поддерживается: увидели Apache/2.2 — планируйте обновление.

Как работает веб-сервер Apache

При запуске главный процесс Apache запускается от root, открывает порты 80 и 443, читает конфигурацию и порождает рабочие процессы уже от непривилегированного пользователя — www-data в Debian/Ubuntu или apache в RHEL-подобных системах. Дальше путь запроса выглядит так:

  1. Рабочий процесс или поток принимает соединение и читает HTTP-запрос.
  2. По заголовку Host (а для HTTPS — по SNI) Apache выбирает виртуальный хост, то есть блок <VirtualHost> конкретного сайта.
  3. URL сопоставляется с файлом внутри DocumentRoot; по пути применяются правила из <Directory>, <Location> и файлов .htaccess.
  4. Модули делают свою часть работы: mod_rewrite переписывает адрес, mod_auth проверяет доступ, mod_proxy_fcgi передаёт PHP-скрипт в PHP-FPM, mod_deflate сжимает ответ.
  5. Ответ уходит клиенту, а строка о запросе записывается в access-лог, ошибки — в error-лог.

MPM: prefork, worker и event

То, как Apache распределяет соединения между процессами и потоками, определяет модуль мультипроцессной обработки — MPM (Multi-Processing Module). Одновременно работает только один, и от выбора сильно зависит потребление памяти.

MPMКак устроенКогда нужен
preforkОтдельный процесс на каждое соединение, без потоковТолько если используется не потокобезопасный модуль, прежде всего классический mod_php. Самый прожорливый по памяти
workerНесколько процессов, в каждом — пул потоковКомпромисс: меньше памяти, но поток занят всё время keep-alive-соединения
eventКак worker, плюс отдельный поток-слушатель держит простаивающие keep-alive-соединенияВыбор по умолчанию для современных установок, особенно в связке с PHP-FPM

Узнать, какой MPM активен, можно командой apachectl -V | grep -i mpm (в Debian — apache2ctl -V). Если в выводе prefork, а PHP давно работает через PHP-FPM, переход на event обычно заметно снижает расход памяти. Подробности — в официальной документации по MPM.

Модули

Сила Apache — в модульности. Ядро умеет немного, остальное подключается директивой LoadModule. Самые востребованные модули:

  • mod_rewrite — перезапись URL и редиректы, основа «человекопонятных» адресов в CMS;
  • mod_ssl — поддержка HTTPS и TLS;
  • mod_headers — добавление и удаление заголовков ответа, в том числе заголовков безопасности;
  • mod_proxy, mod_proxy_fcgi, mod_proxy_http — проксирование запросов в PHP-FPM или другой бэкенд;
  • mod_deflate и mod_expires — сжатие и управление кэшированием;
  • mod_remoteip — подстановка реального IP клиента, когда перед Apache стоит прокси;

Список загруженных модулей показывает apachectl -M. В Debian и Ubuntu модули включают и выключают утилитами a2enmod и a2dismod, в RHEL, AlmaLinux и Rocky — правкой файлов в /etc/httpd/conf.modules.d/.

Файл .htaccess

Одна из причин популярности Apache на виртуальном хостинге — файлы .htaccess. Это кусочки конфигурации, которые лежат прямо в папках сайта и применяются без перезапуска сервера: редиректы, запрет доступа, правила кэширования, ЧПУ для WordPress или Битрикса. Владелец сайта может менять поведение сервера, не имея root-доступа.

Цена удобства — производительность: при AllowOverride, отличном от None, Apache на каждом запросе ищет .htaccess во всех каталогах по пути к файлу. Поэтому на своём VPS правила лучше переносить в основной конфиг, а .htaccess оставлять там, где без него не обойтись. Как писать правила и не сломать сайт, разобрано в руководстве по .htaccess; позицию разработчиков сервера можно прочитать в документации Apache о .htaccess.

Apache и nginx: в чём разница

Вопрос «что такое nginx и Apache и что выбрать» задают постоянно. Оба — веб-серверы, оба бесплатны и умеют работать обратным прокси, но устроены по-разному.

КритерийApachenginx
Модель обработкиПроцессы и потоки, выбор через MPM (prefork, worker, event)Асинхронная событийная модель: несколько воркеров обслуживают тысячи соединений
Статические файлыОтдаёт нормально, но тратит больше ресурсов на соединениеСильная сторона: быстро и с минимумом памяти
PHPЧерез mod_php внутри процесса или через PHP-FPMТолько внешним процессом, обычно PHP-FPM по FastCGI
Конфигурация на уровне папокЕсть: .htaccessНет, все правила в центральном конфиге
МодулиПодгружаются динамически через LoadModuleДинамические модули есть, но часть функций требует сборки
Типичная рольБэкенд для PHP-сайтов, виртуальный хостингФронтенд: TLS, статика, балансировка, обратный прокси

nginx выигрывает на множестве одновременных соединений и статике, Apache — на гибкости и совместимости с проектами, рассчитанными на .htaccess.

Связка nginx + Apache

Классическая схема, которую до сих пор используют панели ISPmanager и многие хостинги: nginx слушает порты 80 и 443, терминирует TLS, сам отдаёт картинки, CSS и JS, а запросы к PHP проксирует на Apache, который слушает, например, 127.0.0.1:8080. Сайт при этом продолжает пользоваться .htaccess, а нагрузка от медленных клиентов ложится на nginx. Как работает такая схема в целом, объяснено в материале про обратный прокси.

Главная ловушка связки — IP клиента. Без настройки Apache видит все запросы как пришедшие с 127.0.0.1, ломаются логи, ограничения по IP и антиспам. Лечится модулем mod_remoteip:

RemoteIPHeader X-Real-IP
RemoteIPTrustedProxy 127.0.0.1

При этом nginx должен передавать заголовок: proxy_set_header X-Real-IP $remote_addr;. Доверять заголовку можно только от своего прокси — иначе любой клиент подставит себе чужой адрес.

Где лежат конфиги Apache

Расположение файлов зависит от дистрибутива — это первое, что сбивает с толку при переходе между серверами.

ЧтоDebian / UbuntuRHEL / AlmaLinux / Rocky
Главный конфиг/etc/apache2/apache2.conf/etc/httpd/conf/httpd.conf
Порты/etc/apache2/ports.confдиректива Listen в httpd.conf
Сайтыsites-available/ + ссылки в sites-enabled/файлы *.conf в /etc/httpd/conf.d/
Модулиmods-available/ и mods-enabled//etc/httpd/conf.modules.d/
Логи/var/log/apache2/access.log, error.log/var/log/httpd/access_log, error_log
Имя службыapache2httpd
Пользовательwww-dataapache

На Windows проект не выпускает собственных сборок — сайт httpd.apache.org отсылает к сторонним дистрибутивам, самый известный из которых Apache Lounge. Там конфиг обычно лежит в C:\Apache24\conf\httpd.conf, а служба регистрируется командой httpd.exe -k install из консоли администратора.

Минимальный виртуальный хост в Debian выглядит так (файл /etc/apache2/sites-available/example.ru.conf):

<VirtualHost *:80>
    ServerName example.ru
    ServerAlias www.example.ru
    DocumentRoot /var/www/example.ru/public

    <Directory /var/www/example.ru/public>
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/example.ru-error.log
    CustomLog ${APACHE_LOG_DIR}/example.ru-access.log combined
</VirtualHost>

Основные команды Apache

Установка и запуск в Debian и Ubuntu:

sudo apt update
sudo apt install apache2
sudo systemctl enable --now apache2
sudo ufw allow 'Apache Full'

В RHEL, AlmaLinux и Rocky Linux:

sudo dnf install httpd
sudo systemctl enable --now httpd
sudo firewall-cmd --permanent --add-service=http --add-service=https
sudo firewall-cmd --reload

Команды, которые пригодятся каждый день:

  • sudo apachectl configtest (то же, что apachectl -t) — проверка синтаксиса. Запускайте перед каждой перезагрузкой: ответ Syntax OK значит, что сервер поднимется.
  • sudo systemctl reload apache2 или sudo systemctl reload httpd — перечитать конфигурацию без обрыва текущих соединений.
  • sudo systemctl restart apache2 — полный перезапуск, нужен, например, после смены MPM.
  • sudo apachectl -S — какие виртуальные хосты загружены, какой из них используется по умолчанию для каждого порта.
  • apache2 -v или httpd -v — версия сервера.
  • sudo a2ensite example.ru и sudo a2dissite 000-default — включить сайт и выключить заглушку (Debian/Ubuntu).
  • sudo a2enmod rewrite headers ssl — включить модули (Debian/Ubuntu).

Частые ошибки Apache и что они значат

Большинство проблем Apache честно описывает в error-логе — код с префиксом AH помогает быстро найти причину.

  • 403 и AH01630: client denied by server configuration — доступ запрещён директивой Require в конфиге или .htaccess.
  • 403 и AH00035: ... because search permissions are missing on a component of the path — у пользователя www-data или apache нет права x на одну из папок по пути к сайту. Проверьте командой namei -l /var/www/example.ru/public/index.php.
  • 403 и AH01276: Cannot serve directory — в каталоге нет index-файла, а листинг выключен. Все варианты разобраны в статье об ошибке 403 Forbidden.
  • 500 и Invalid command 'RewriteEngine' — в .htaccess есть правила mod_rewrite, а сам модуль не включён. Лечится a2enmod rewrite и reload.
  • 500 и AH00124: Request exceeded the limit of 10 internal redirects — правила переписывания зациклились. Про остальные причины 500-й читайте в разборе Internal Server Error.
  • Сервер не стартует: AH00072: make_sock: could not bind to address [::]:80 — порт 80 уже занят, часто вторым веб-сервером. Кто его держит, покажет sudo ss -ltnp | grep ':80 '.
  • Предупреждение AH00558: Could not reliably determine the server's fully qualified domain name — не критично: задайте глобально ServerName, и сообщение исчезнет.
  • 503 и AH01114: failed to make connection to backend — Apache работает прокси, а бэкенд (PHP-FPM, приложение) не отвечает или слушает другой адрес.

Безопасность Apache: базовый минимум

Установка по умолчанию рассчитана на то, чтобы всё работало, а не на закрытость. Минимум правок:

  • ServerTokens Prod и ServerSignature Off — сервер перестанет сообщать точную версию и ОС в заголовке Server и на страницах ошибок (см. описание ServerTokens). Это не защита само по себе, но сканерам станет сложнее подбирать эксплойты под версию.
  • Options -Indexes — запрет на листинг каталогов, чтобы не светить бэкапы и служебные файлы.
  • TraceEnable Off — отключение метода TRACE.
  • Выключите неиспользуемые модули и закройте mod_status и server-info правилом Require ip.
  • Через mod_headers добавьте заголовки безопасности: HSTS, X-Content-Type-Options, Content-Security-Policy.
  • Своевременно обновляйте пакет: уязвимости в самом httpd находят регулярно, и дистрибутивы выпускают исправления.

Полный чек-лист для обоих серверов — в статье о безопасности веб-сервера.

Как проверить, что сайт работает на Apache

Самый быстрый способ — посмотреть заголовок Server в ответе. В Linux и macOS:

curl -sI https://example.ru | grep -i '^server'

В Windows 10 и 11 curl уже встроен, в cmd используйте curl.exe -sI https://example.ru, а в PowerShell:

(Invoke-WebRequest -Uri https://example.ru -Method Head).Headers.Server

Ответ вида Server: Apache/2.4.x (Ubuntu) говорит сам за себя. Но важно понимать ограничения: при ServerTokens Prod будет просто Apache, а если перед сервером стоит nginx или CDN, заголовок покажет nginx или cloudflare, хотя PHP по-прежнему обрабатывает Apache. Косвенные признаки — стандартные страницы ошибок с подписью «Apache Server at … Port 443» и поддержка .htaccess.

Без консоли то же самое можно сделать онлайн: проверка HTTP-заголовков покажет заголовок Server, код ответа и цепочку редиректов, а определение технологий сайта соберёт вместе веб-сервер, CMS, язык бэкенда и CDN. Чтобы оценить, не выдаёт ли сервер лишнего о себе и хватает ли защитных заголовков, запустите сканер безопасности.

Частые вопросы

Apache и Apache Tomcat — одно и то же?

Нет. Apache HTTP Server — веб-сервер общего назначения на C. Tomcat — отдельный проект того же фонда, контейнер для Java-приложений (сервлеты, JSP). Их часто ставят вместе: Apache принимает запросы и проксирует их в Tomcat.

Что значит Apache 2.0?

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

Можно ли держать Apache и nginx на одном сервере?

Да, это распространённая схема. Главное — развести порты: nginx на 80/443, Apache на локальном адресе вроде 127.0.0.1:8080, и настроить mod_remoteip, чтобы видеть реальные IP посетителей.

Нужен ли Apache для WordPress или Битрикса?

Не обязательно: обе CMS работают и на nginx с PHP-FPM. Но из коробки они рассчитаны на .htaccess, поэтому с Apache меньше ручной настройки правил ЧПУ и защиты служебных папок.

Как перезапустить Apache без простоя сайта?

Сначала проверьте конфиг командой apachectl configtest, затем выполните systemctl reload apache2 (или httpd). Reload перечитывает настройки, не разрывая текущие соединения, в отличие от restart.

Проверьте ваш сайт прямо сейчас

Следить за своим сервером →
Другие статьи: Инфраструктура
Инфраструктура
Настройка nginx с нуля: конфиги, контексты и server-блок
06.08.2026 · 736 просм.
Инфраструктура
Логи nginx: где лежат, как читать и как настроить ротацию
06.08.2026 · 645 просм.
Инфраструктура
Почта на своём домене: Яндекс 360, VK WorkSpace или свой
21.07.2026 · 575 просм.
Инфраструктура
Версионирование API: URL, заголовки и параметры запроса
16.03.2026 · 424 просм.