Поиск наиболее производительного и надежного веб-сервера является краеугольным камнем любого успешного онлайн-бизнеса. Итак, сегодня мы собираемся помочь с подробным сравнением двух лидеров рынка — Nginx и Apache.
Содержание
ToggleApache — это серверный компонент стека LAMP ( Linux, Apache, MySQL и PHP ), известный набор программного обеспечения с открытым исходным кодом для создания веб-приложений и различных типов веб-сайтов.
Серверы Apache используют многопроцессорные модули ( MPM ), которые позволяют ему работать в трех разных режимах:
• Процесс – плохо масштабируется, подходит для небольших сайтов.
• Worker — использует сеть потоков, лучше масштабируется, но не подходит для веб-сайтов с высокой посещаемостью.
• Событие — эффективно обрабатывает более длительные соединения, настройка по умолчанию для большинства серверов, работающих под управлением Apache.
Платформа обладает богатым набором функций. Такие вещи, как балансировка нагрузки, кэширование обратного прокси -сервера и регулирование полосы пропускания, являются одними из самых популярных функций веб-разработчиков и администраторов серверов по всему миру.
Nginx вышел на сцену относительно поздно, почти через десять лет после Apache, но быстро завоевал рынок штурмом. Настолько, что сегодня на нем размещено около 500 миллионов веб-сайтов.
Некоторые говорят, что веб-сервер Nginx был разработан с единственной целью — превзойти Apache. На самом деле это было предложенное решение проблемы C10k — как веб-сервер может обрабатывать 10 000 одновременных подключений?
Nginx использует асинхронную архитектуру для выполнения своей работы — вместо потоков здесь у нас есть система, которая отслеживает, обнаруживает и анализирует события. На основе этих событий он применяет прогнозирующие меры для обработки нагрузки.
С точки зрения непрофессионала, у вас есть платформа, которая использует свои ресурсы гораздо эффективнее и соответствует текущему потреблению трафика.
Посмотрите на результаты теста:
источник: Неткрафт
Давайте совершим путешествие по переулку памяти и посмотрим, как выглядел рынок веб-серверов двадцать лет назад:
• Апачи – 60%
• Майкрософт – 27%
• Sun Technologies – 3%
Nginx вышел на сцену примерно в 2007 году. В то время Apache все еще уверенно занимал первое место с долей рынка 49%. Тем не менее, разработчики Nginx не теряли времени даром. Постоянное стремление к инновациям и оптимизации продуктов произвело впечатление на многих людей, и вскоре клиенты начали прибывать. Sun, Google, Microsoft — все популярные веб-серверы отставали и в конечном итоге были обойдены Nginx.
Лидерство Apache также было шатким вплоть до ноября 2018 года. Согласно отчетам веб-опросов, именно тогда Nginx наконец занял первое место. Так что сегодня конкурс популярности выглядит намного иначе, чем раньше:
• Nginx — 36%
• Апачи – 25%
• Майкрософт – 14%
Справедливости ради следует отметить, что серверы Apache по-прежнему размещают более активные веб-сайты, чем Nginx, но тенденция показывает, что это только вопрос времени, когда это изменится.
Если вы посмотрите на лучший рейтинг и самые популярные веб-сайты, вы найдете (по крайней мере) один общий знаменатель — они загружаются очень быстро. Скорость сайта в наше время вредна, и каждая секунда, потраченная на ожидание, равна потерянным посетителям и меньшему количеству продаж.
Nginx работает почти в два раза быстрее для статического контента, чем Apache с 512 одновременными подключениями, и в 2,4 раза быстрее с удвоением запросов. При этом потребление оперативной памяти ниже — чтобы справиться с нагрузкой, Nginx использовал на 5-6% меньше системной памяти.
Это различие связано в основном с архитектурой сервера.
Nginx не требует подключения к PHP при обслуживании статических файлов. Это делает запрос намного легче и проще в обработке.
Nginx здесь явный победитель, но имейте в виду, что эти результаты производительности относятся только к статическим страницам. В настоящее время большинство веб-сайтов обслуживают различные типы динамического контента, и веб-серверы должны быть соответствующим образом оптимизированы.
Сегодня почти 8 из 10 веб-сайтов так или иначе используют PHP в своем коде. Неважно, создаете ли вы веб-сайт на WordPress, Joomla, Magento или Drupal — запросы вашего сайта будут запускать среду выполнения PHP.
В отличие от статического содержимого, Apache гораздо лучше справляется с динамическими веб-страницами. Оптимизированная производительность зависит от конфигурации сервера, такой как активация модулей PHP-FPM и FastCGI.
Как только ваш Apache правильно настроен, динамические веб-сайты начинают работать. Серверы на базе Apache работают так же быстро, как Nginx. Тесты производительности не показали разницы между двумя соперниками ни во времени загрузки страницы, ни в потреблении памяти.
Apache (с небольшой настройкой) работает так же быстро, как Nginx для веб-сайтов на PHP.
Для эффективной работы разных проектов требуются разные операционные системы, поэтому мы должны учитывать широкий спектр поддерживаемых типов ОС.
Какой веб-сервер более универсален?
Что касается дистрибутивов Linux, Apache и Nginx безупречны. Обе платформы могут легко работать с любой Unix-подобной системой, включая AIS и BSD.
То же самое касается пользователей macOS — любой из двух веб-серверов может легко запустить такой проект.
Переломным моментом в этом разделе нашего сравнения Nginx и Apache стала поддержка Windows. Хотя вы можете успешно запустить веб-сайт или приложение на базе Win с помощью Nginx, существуют определенные ограничения и отсутствующие функции.
Apache просто покрывает все это, позволяя вам больше сосредоточиться на разработке вашего проекта и меньше на преодолении ограничений сервера.
Веб-мастера могут нести ответственность за защиту своих веб-сайтов от хакеров, но все начинается с аппаратной безопасности. Допустим, вы настраиваете и управляете собственным веб-сервером.
Apache использует код на основе C, который всегда соответствует последним стандартам безопасности. Вы можете найти обширную информацию о том, как защитить свой сервер от DDoS-атак, одной из самых серьезных угроз кибербезопасности в настоящее время.
Это хорошая база, но усиление вашей безопасности не должно останавливаться на достигнутом. Взять, к примеру, модули. Активировав функцию mod_evasive с Apache, вы гарантируете своему проекту полную безопасность от всевозможных HTTP-, DoS -атак и атак методом перебора.
Веб-сервер Nginx также очень серьезно относится к безопасности.
Платформа предоставляет достаточно возможностей для снижения рисков хакерских атак и обеспечения надежной защиты клиентских веб-сайтов.
Так что же делает Apache или Nginx лучше?
Как выясняется — огромный размер кодовой базы. Nginx имеет меньший и более оптимизированный код, что дает ему небольшое преимущество в отделе безопасности.
Модули помогают нам расширять функциональные возможности нашего сервера и оптимизировать наш онлайн-проект. Будь то обновление рабочей нагрузки, плагин для потоковой передачи мультимедиа или решение для фильтрации контента — мы сильно зависим от множества модов.
Так какой же из Nginx или Apache более гибкий и восприимчивый к настройкам?
На самом деле это не так уж и сложно, так как обе платформы по умолчанию поддерживают более 150 модулей. И это только дополнения собственной разработки. Если принять во внимание множество сторонних плагинов, цифры становятся еще более впечатляющими.
Что касается основных функций, оба веб-сервера поддерживают самое необходимое — балансировщики нагрузки, кэширование, прокси и т. д.
Есть определенные области, где одно или другое немного лучше (например, решения для потоковой передачи мультимедиа на Nginx), но в целом ничья — самый честный результат.
Apache и Nginx в настоящее время являются самыми популярными серверами, поэтому вы можете легко найти множество документации по поддержке обеих платформ.
Официальные сайты компаний скорее ориентированы на разработчиков. Никаких причудливых дизайнов или функций, никаких ненужных мультимедиа — основное внимание уделяется контенту и обучению пользователей тому, как лучше всего управлять своим сервером. Документация Nginx кажется немного более удобной для новичков, но недостаточно, чтобы иметь существенное значение.
Кроме того, вы никоим образом не ограничены только официальными источниками.
Платформы с открытым исходным кодом и довольно популярны, а это означает, что многие люди могут внести свой вклад и добавить полезные ресурсы. Немного погуглив, можно найти конфигурационный файл, туториалы со скриншотами, видео, пошаговые руководства.
В конце концов, нет никакой видимой разницы, если сравнивать веб-сервер Apache и Nginx с точки зрения документации поддержки. Здесь ничья была бы самым справедливым вердиктом.
Изучение управления сервером из хорошо написанного туториала — это хорошо, но оперативная помощь реального человека, когда она вам нужна, — еще лучше.
К сожалению, в отличие от услуг хостинга или создания сайтов, у разработчиков веб-серверов редко есть собственный персонал, занимающийся исключительно поддержкой клиентов. И снова мы говорим о платформах с открытым исходным кодом, так что не стоит возлагать слишком большие надежды.
Вы можете получить помощь по вопросам, касающимся Apache, на различных сторонних веб-сайтах. Такие места, как CodeMentor, не только связывают вас с опытными профессионалами, но также могут помочь вам нанять опытных разработчиков, которые полностью избавят вас от сложных задач администрирования сервера.
Nginx предлагает аналогичный опыт. Его популярность растет как на дрожжах, а фан-база — это сплоченная группа, всегда готовая приветствовать новых членов сообщества. Одна вещь склонила чашу весов в пользу Nginx — внутренняя поддержка.
Несмотря на то, что это платная услуга, лучшая помощь всегда приходит прямо из источника. В конце концов, кто может лучше знать все тонкости технологии, чем те самые люди, которые помогали ее разрабатывать?
Существует несколько пакетов, разделенных по типу необходимой вам помощи:
Nginx явно имеет более практичный подход к помощи в реальном времени, принимая во внимание этот момент.
Это был близкий вызов, но в конце концов Nginx с небольшим перевесом выиграл. Мы считаем, что производительность и безопасность являются ключевыми факторами при выборе сервера, и в данном случае эти факторы имеют наибольшее значение.
Каковы ваши впечатления от Apache и Nginx ? Что быстрее и надежнее?
О : Существует множество онлайн-инструментов, с помощью которых вы можете проверить, какой веб-сервер работает на веб-сайте. Более того, если конфигурация не слишком индивидуальна, вы также можете определить, какое программное обеспечение он использует, а также его плагины.
NetCraft и BuiltWith — две популярные сторонние платформы для оценки технологий. Вы просто вводите URL-адрес веб-сайта в строку поиска, и инструмент разбирает его за считанные секунды.
О: Несмотря на то, что технически Nginx и Apache являются веб-серверами, между ними есть несколько существенных отличий. Возможно, самый большой из них — это то, как они обрабатывают запросы пользователей. Nginx использует асинхронную и управляемую событиями архитектуру, поэтому он может быстрее и эффективнее обрабатывать несколько подключений.
Apache имеет многопоточную структуру, которой не хватает масштабируемости его конкурента. Кроме того, в то время как Apache разработан только как веб-сервер, Nginx может работать как веб-сервер, так и прокси-сервер.
A: Архитектура Apache основана на потоках. Каждый поток потребляет часть вашей системной памяти при обработке одного соединения. Каждое новое соединение увеличивает эту нагрузку, что в конечном итоге замедляет работу.
Для сравнения, Nginx обслуживает запросы асинхронно и многозадачно намного лучше. Вы можете поставить все соединения в очередь в один поток и потреблять гораздо меньше системных ресурсов для их обработки.
Nginx против Apache не имеет явного победителя по тестам скорости для динамического контента, но когда дело доходит до статических веб-сайтов, Nginx быстрее в 2-3 раза.