Nginx против Apache: что выбрать под задачу
Nginx и Apache решают похожую задачу, но по-разному расходуют ресурсы и работают с приложением. Сравниваем архитектуру, конфигурацию, PHP, проксирование и сценарии, где каждый сервер оказывается практичнее.

Nginx и Apache могут обслуживать один и тот же сайт, но цена ошибки проявляется по-разному: Nginx чаще выигрывает на роли прокси и раздаче большого числа соединений, а Apache удобнее там, где проект зависит от .htaccess и модулей. Ниже — сравнение Nginx 1.27.x и Apache HTTP Server 2.4.x по конкретным задачам, а не абстрактный рейтинг быстродействия.
Главное различие — не в названии сервера
Nginx строится вокруг событийной модели: один процесс может обслуживать множество соединений, пока операции не блокируют его ожиданием. Поэтому сервер хорошо подходит для статических файлов, TLS-терминации и обратного прокси перед приложением.
Apache использует модульную архитектуру и несколько моделей обработки запросов. В Apache 2.4 за это отвечают MPM — модули многопоточной или многопроцессной обработки. Конкретное поведение зависит от выбранного MPM, ОС и подключённых модулей.
Это не означает, что Nginx всегда быстрее, а Apache всегда тяжелее. На результат влияют размер ответа, кеширование, PHP или другой рантайм, база данных, TLS, число одновременных соединений и настройки операционной системы.
Выбирайте сервер по месту, где он будет работать в цепочке запросов: на границе инфраструктуры и внутри приложения требования различаются.
MPM — от англ. Multi-Processing Module, модуль Apache, который определяет, как сервер создаёт процессы и потоки для обработки запросов. В Apache 2.4 выбор MPM влияет на совместимость модулей и расход памяти.
Сравнение по задачам
| Задача | Nginx 1.27.x | Apache 2.4.x | Практический выбор |
|---|---|---|---|
| Статический сайт | Простая модель конфигурации, эффективная раздача файлов и кеширование на границе | Тоже подходит, особенно если проект уже использует Apache-модули | Nginx для нового сервера; Apache — если инфраструктура уже на нём |
| Обратный прокси | Одна из сильных сторон: маршрутизация к нескольким приложениям, TLS и контроль соединений | Поддерживает проксирование через модули, но конфигурация зависит от набора модулей | Nginx, если прокси — основная роль |
| PHP-приложение | Обычно работает через отдельный PHP-FPM, между сервером и рантаймом появляется дополнительный слой | Может использовать PHP-FPM или иной способ запуска, а экосистема хостинга часто уже настроена под Apache | Apache для совместимости с готовым проектом; Nginx для контролируемого стека |
| Проект с .htaccess | Формат не поддерживается; правила нужно переносить в основную конфигурацию | Поддержка .htaccess — важное преимущество для shared hosting и CMS | Apache, если правила принадлежат владельцу сайта и меняются без доступа к серверу |
| Много сайтов на одном сервере | Удобен при централизованной конфигурации и единых правилах деплоя | Проще для окружений, где сайты сами управляют локальными правилами | Зависит от модели администрирования |
| Нестандартные модули | Нужно проверять доступность модуля и совместимость со сборкой | Большой набор модулей, но каждый добавляет сложность и расходы ресурсов | Сервер с нужным официальным или проверенным модулем |
Когда выбирать Nginx
Публичный вход для нескольких сервисов
Если на одном домене работают веб-приложение, API, админка и отдельный сервис статических файлов, Nginx удобно поставить перед ними. Он принимает HTTPS-соединения, выбирает upstream по домену или пути и не заставляет каждый сервис отдельно решать задачи внешнего трафика.
Цена такого решения — ещё один слой, который нужно наблюдать. Ошибка маршрутизации, лимит размера тела запроса или короткий таймаут может выглядеть для приложения как случайный обрыв соединения. Логи Nginx и приложения должны связываться по идентификатору запроса или хотя бы по времени и адресу клиента.
Сайт с большим числом долгих соединений
Для потоковой выдачи, Server-Sent Events, WebSocket-проксирования и долгих HTTP-запросов важны таймауты, буферизация и корректная передача заголовков. Nginx часто выбирают именно за предсказуемую роль внешнего прокси, но само наличие Nginx не исправляет блокирующее приложение и медленную базу.
Централизованная конфигурация
Nginx подходит, когда только команда инфраструктуры меняет конфигурацию, а все правила проходят через репозиторий и деплой. Это снижает риск, что отдельный сайт незаметно изменит поведение сервера через локальный файл.
Когда Apache оказывается разумнее
CMS и хостинг с .htaccess
Apache удобнее, если приложение ожидает правила в .htaccess: перенаправления, ограничения доступа и настройки поведения каталогов. В среде, где владелец сайта не имеет доступа к основной конфигурации, это не мелочь, а рабочий способ управления сервером.
При переносе такого сайта на Nginx правила нельзя просто скопировать. Их нужно перевести в синтаксис Nginx, проверить порядок location-блоков и убедиться, что запреты, редиректы и обработка PHP сохранили смысл.
Готовая Apache-экосистема
Если дистрибутив, панель управления, инструкции хостинга и мониторинг уже рассчитаны на Apache 2.4, миграция ради предполагаемой экономии ресурсов может не окупиться. Вы получите новый формат конфигурации, другой процесс отладки и риск сломать поведение старых сайтов.
Модульная логика проекта
Apache стоит рассматривать, когда нужная функция уже реализована проверенным модулем и команда понимает его жизненный цикл. Но список подключённых модулей нужно фиксировать: несовместимое обновление или лишний модуль может изменить обработку запросов и расход памяти.
PHP: где чаще всего ошибаются
Популярная схема для Nginx — Nginx принимает запрос, а PHP-FPM исполняет PHP-код отдельно. Это даёт ясное разделение ролей, но добавляет параметры соединения между веб-сервером и пулом PHP: число рабочих процессов, таймауты, очередь и лимит одновременных запросов.
Apache также может работать с PHP-FPM. Поэтому сравнивать серверы только по формуле «Apache запускает PHP, Nginx — нет» неправильно. Нужно смотреть на фактический способ запуска PHP в конкретной установке и на то, где образуется очередь.
Если сайт медленно отвечает из-за SQL-запроса, смена Apache на Nginx не устранит причину. Сначала измерьте время до PHP, время выполнения приложения и время ответа базы отдельно.
Что проверить до выбора
- Опишите цепочку запроса. Запишите, кто принимает TLS, где находится CDN, какой сервер запускает PHP или другое приложение и где завершается соединение. Проверка: для каждого запроса понятен его маршрут от клиента до обработчика.
- Найдите зависимость от .htaccess. Просмотрите корень сайта, каталоги CMS и инструкции проекта. Проверка: у каждого правила есть решение для выбранного сервера или подтверждение, что правило больше не нужно.
- Составьте список обязательных модулей. Укажите прокси, HTTP/2, сжатие, авторизацию, WebSocket или интеграцию с рантаймом. Проверка: каждый модуль подтверждён документацией и доступен в вашей сборке.
- Проверьте профиль нагрузки. Разделите статические файлы, короткие динамические запросы, загрузки и долгие соединения. Проверка: вы знаете не только среднее время ответа, но и долю ошибок и задержку на высоких перцентилях.
- Соберите тестовый стенд. Воспроизведите конфигурацию, версию ОС, приложение и размер данных. Проверка: тест запускается повторно после изменения сервера, а результаты сохраняются.
Что ломается первым
- Редиректы после миграции. Правило Apache переписано в Nginx неточно, и запрос попадает в цикл или получает другой код ответа.
- Скрытые правила .htaccess. В Apache они могли находиться не в корне, а в каталоге загрузок или отдельном модуле CMS.
- Буферизация прокси. Для потоковых ответов неподходящие буферы и таймауты создают задержку или обрыв.
- Лимиты загрузки. Ограничение размера тела запроса может быть задано на сервере, прокси и в приложении одновременно.
- Наблюдаемость. После добавления прокси в логах приложения может исчезнуть реальный адрес клиента, если не настроена передача и обработка соответствующих заголовков.
Проверяйте каждую ошибку на конкретной версии: Nginx 1.27.x и Apache 2.4.x могут получать изменения в модулях, пакетах дистрибутива и рекомендуемых настройках. Не переносите конфигурацию из чужого примера без проверки документации своей сборки.
Когда что выбирать
Берите Nginx, если главным требованием являются обратное проксирование, единая конфигурация для нескольких приложений, TLS на внешнем контуре и большое количество одновременных соединений. Это особенно логично для контейнерной или сервисной архитектуры, где приложение не должно самостоятельно принимать весь внешний трафик.
Берите Apache, если проект уже зависит от .htaccess, панель хостинга управляет Apache, а необходимые функции доступны как проверенные модули. Для одного классического сайта миграция ради теоретического выигрыша часто создаёт больше работы, чем пользы.
Ставьте оба сервера только при чётком разделении ролей. Например, Nginx может быть внешним прокси, а Apache — обработчиком legacy-приложения. Такая схема оправдана совместимостью, но требует двух конфигураций, двух наборов логов и ясного плана диагностики.
Что делать дальше
Выберите один реальный сценарий: главную страницу, запрос к API, загрузку файла и долгий ответ. Зафиксируйте для него код ответа, время до первого байта, полное время, число ошибок и потребление памяти. Затем сравните Apache 2.4.x и Nginx 1.27.x на одинаковом приложении и железе, а после выбора настройте ротацию логов, мониторинг таймаутов и проверку конфигурации в CI.
Задачи: математика, физика, химия: Разбор задачи по шагам с проверкой и похожей задачей
Спросить за 10 ₽Источники: Nginx Documentation, Apache HTTP Server 2.4 Documentation
Частые вопросы
Nginx всегда быстрее Apache?
Можно ли перенести сайт с Apache на Nginx без изменений?
Что выбрать для WordPress или другой CMS?
Нужен ли Apache, если приложение работает на PHP-FPM?
Стоит ли ставить Nginx перед Apache?
Какие версии брать для нового проекта?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.