Apache vs Nginx: выбираем оптимальный веб-сервер

Apache vs Nginx: выбираем оптимальный веб-сервер

Apache и Nginx – 2 самых популярных веб-сервера в мире. Оба используются для обработки HTTP-запросов, но каждый из них обладает собственным набором характеристик. В этой статье мы попробуем разобраться, чем именно отличаются эти веб-серверы и какой из них лучше подойдет в той или иной ситуации.

История создания

Apache был создан в далеком 1995 году, а уже через год стал самым популярным веб-сервером в мире. Основной идеей разработчика Роберта Маккула было создать гибкое и мощное ПО, которое хорошо интегрируется с другим софтом. Так и вышло – большинство сисдаминов выбирают именно динамичный Аpache, который можно дополнять функциональными модулями.

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

Принцип работы

Аpache в ответ на каждый пользовательский запрос создает отдельный процесс или поток. Технология очень проста в реализации, но абсолютно не подходит для многозадачных проектов. Любой процесс «съедает» память и ресурсы системы, и ладно, если процессов мало. А если их сто, тысяча, миллион? Все-таки Аpache создан для не очень больших проектов с низким уровнем загруженности.

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

Выдача контента

Аpache генерирует как статический, так и динамический контент, поэтому его выбирают пользователи, которые не хотят возиться с проксированием и настраивать дополнительные инструменты для работы с динамикой.

Nginx выдает только статический контент, а вот динамику генерировать не умеет. Но, как вариант, его можно использовать в связке с Apache, PHP-PFM и любым другим web-приложением такими как Python (Django), Ruby on Rails, nodejs и другими.

Возможности конфигурирования

Аpache дает возможность конфигурировать обработку запросов на уровне каталогов при помощи скрытого файла htaccess. В нем можно настраивать авторизацию и аутентификацию, кеширование и права доступа пользователей. При этом менять конфигурацию можно буквально на лету, не перезагружая сервер и не залезая в основные настройки.

В Nginx такой функции нет. На весь проект имеется только один конфигурационный файл, который обрабатывает мастер. Чтобы обновить конфигурацию, нужно отправить сигнал мастеру и перезагрузить сервер.

Наличие модулей

На данный момент у Аpache имеется 60 официальных модулей и еще больше любительских. Модули не требуют сборки, их можно сразу загружать в ленту.

У Nginx существует 130 официальных модулей, но все они требуют сборки. Такой подход более сложный, но зато и более безопасный.

Поддержка ОС

Аpache поддерживает все Unix-подобные ОС и всю линейку Windows, включая последние обновления.

Nginx поддерживает большинство Unix-подобных ОС и частично Windows.

Немного статистики

  • Аpache обслуживает около 69 миллионов веб-сайтов, Nginx – почти 44 миллиона.
  • Аpache идеально подходит для использования в 229 категориях веб-сайтов, включая «бизнес и промышленность», «искусство и развлечения», «торговля», «интернет и телекоммуникации». Nginx лидирует в 9 категориях, в том числе «человек и общество», «религия и духовность», «юмор», «форумы и чаты».
  • Аpache – основной веб-сервер в 207 странах мира, включая США, Японию, Германию и Францию. Nginx предпочитают в 10 странах, в том числе Украине, Китае, Индонезии и России.

И Apache, и Nginx – высоконадежное и безопасное ПО, пользующееся популярностью во всем мире. Делая выбор между ними, отталкивайтесь от загруженности проекта и требований к обработке HTTP-запросов. И не забывайте, что веб-серверы могут работать и в связке – так вы сможете использовать преимущества обеих систем.