Nginx против Apache: какой веб-сервер лучше?

Опубликовано: 2021-12-30

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

Тем не менее, вы все равно захотите рассмотреть, какой из них больше подходит для ваших нужд. Есть несколько различных категорий, на которые стоит обратить внимание, таких как поддержка операционной системы (ОС), безопасность, документация и (конечно) производительность.

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

Знакомство с Nginx и Apache

Прежде чем мы углубимся в детали каждого типа сервера, давайте дадим вам краткое изложение как Nginx, так и Apache. Как только мы перейдем к следующему разделу, вы узнаете о некоторых вариантах использования обоих и о том, где вы можете увидеть их «в дикой природе».

#Nginx против #Apache: какой веб-сервер вам подходит?
Нажмите, чтобы твитнуть

Nginx

Логотип Nginx.

По сравнению с Apache, Nginx ( произносится как «движок X» ) является относительным новичком в мире серверных технологий. Однако команда разработчиков взяла на себя задачу расширить ограничения систем Apache.

Это решение с открытым исходным кодом, которое многие пользователи ценят за его стабильность и масштабируемость. Это (частично) связано с его архитектурой, управляемой событиями — подробнее об этом позже. Фактически, часть цели первоначального выпуска Nginx заключалась в том, чтобы иметь возможность обрабатывать 10 000 подключений одновременно. Это было необходимо еще в 2004 году из-за быстрорастущей сети в то время.

В целом, системным администраторам и владельцам сайтов нравится Nginx, потому что он производительный, отлично работает со статическими файлами и выполняет функции балансировщика нагрузки и «обратного прокси». Все они имеют отношение к времени безотказной работы, скорости и безопасности.

Апачи

Логотип HTTPS-сервера Apache.

Apache — это своего рода «старичок» технологии веб-серверов. Он почти такой же старый, как и сам Интернет: с 1995 года Apache является программным обеспечением, лежащим в основе тысяч, если не миллионов серверов.

Долгое время Apache был доминирующей технологией среди «сисадминов». На это есть множество причин — некоторые из них связаны с производительностью, а другие — по привычке. Несмотря на это, серверы Apache широко используются там, где важна конфигурация.

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

Многим системным администраторам также нравится настраиваемый характер Apache и то, как вы можете создать свой собственный сервер, загружая различные модули.

Общие варианты использования Nginx против Apache

Будет справедливо сказать, что Apache — «мастер на все руки», когда дело доходит до обслуживания веб-сайтов. Однако это смешанное благословение. Да, серверы Apache могут делать почти все, что может делать Nginx, но за счет менее производительного кода. Здесь играет роль возраст.

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

Таким образом, вы обнаружите, что Apache является фантастическим простым в настройке сервером для таких приложений, как виртуальный хостинг. Его интеграции также позволяют использовать его в качестве локального серверного программного обеспечения для разработки, как часть стека Linux, Apache, MySQL и PHP (LAMP).

Логотипы для всех частей стека LAMP: Linux, Apache, MySQL и PHP.

Напротив, Nginx имеет более зрелую программную базу с большей оптимизацией по сравнению с Apache. Хорошо, когда стабильность и безопасность являются ключевыми, основополагающими элементами. Вы обнаружите, что сервер Nginx не так настраивается, как другие типы, и это означает, что вы будете реже обращаться к его ядру.

Более того, он не является модульным, как Apache, что делает его менее подходящим для ситуации, когда вам нужно выполнить настройку сервера.

Nginx против Apache: насколько популярен каждый тип сервера

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

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

Забегая вперед, мы предположили бы, что со временем Apache будет использоваться меньше, потому что Nginx предоставляет многое из того, что нужно системным администраторам в веб-сервере. Тем не менее, LiteSpeed ​​Web Server и Cloudflare Server находятся на горизонте и имеют растущую базу пользователей и мощную поддержку. Через несколько лет это сравнение могло бы сравнить Nginx с одним из этих более молодых выскочек.

Nginx против Apache: техническая разбивка функций и возможностей

В следующих нескольких разделах будет рассмотрен ряд технических аспектов Nginx и Apache. Хотя мы не можем охватить все, мы уделим основным областям достаточно времени. В любом случае, поскольку они представляют собой основные элементы обоих типов серверов, у вас будет более чем достаточно, чтобы выбрать подходящее для вас программное обеспечение.

1. Подключение и обработка запросов

Очень важно знать, как сервер обрабатывает соединения, потому что это его «основная валюта». Это спорно, но когда люди пытаются обсудить относительные достоинства Nginx по сравнению с Apache, обработка соединений играет большую роль в восприятии.

Nginx

Nginx является «асинхронным» и «управляемым событиями», что означает, что он может обрабатывать несколько запросов одновременно и обрабатывать их, пока есть доступные ресурсы. Он порождает «рабочие процессы» для обработки входящих подключений, которых он ожидает тысячи одновременно. Это «водоносы» для остальной части сервера.

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

Апачи

Напротив, Apache обрабатывает события по одному через несколько многопроцессорных модулей (MPM). Системный администратор выберет архитектуру подключения, наиболее подходящую для задачи, которых существует несколько.

Модуль mpm_prefork является распространенным. Это порождает дочерние процессы для каждого события и будет обрабатывать только одно соединение за раз. Если количество процессов превышает количество запросов, вам будет сложно определить разницу между Nginx и Apache в отношении производительности.

Однако такие ситуации случаются редко, и во многих случаях сервер Apache будет получать больше запросов, чем процессов. Более того, этот MPM плохо масштабируется из-за использования памяти.

Для тех, кто работает с PHP, mpm_prefork — единственный безопасный способ работы с модулем интерпретатора mod_php . Несмотря на недостатки, это будет MPM, который выберет разработчик WordPress, если им нужно развернуть его на сервере Apache.

Вы также увидите mpm_worker и mpm_event . Они выполняют аналогичную операцию и лучше масштабируются из-за того, что могут создавать несколько процессов для каждого набора потоков.

Эта партия MPM показывает, насколько гибким может быть Apache, несмотря на недостатки производительности в некоторых случаях.

Обработка запросов для статического и динамического контента

Прежде чем мы двинемся дальше, мы должны упомянуть статический и динамический контент для каждого серверного программного обеспечения. Вы прочтете, что Nginx не может обрабатывать динамический контент, что может вызвать у вас беспокойство. На самом деле, Nginx не будет обрабатывать этот тип контента нативным способом. Вместо этого он отправит его внешнему процессору (например, кешу), а затем дождется его возврата, прежде чем переместить содержимое.

Для разработки системный администратор настроит для этого решение, такое как Memcached. У этого подхода есть недостатки, а именно на производительность. Однако преимущества снижения производительности для каждой части цепочки сводят на нет это. Nginx не нужно беспокоиться об обработке этих запросов, поэтому он может сосредоточиться на своих областях ответственности с большей эффективностью.

Система Apache MPM позволяет обрабатывать как статический, так и динамический контент без необходимости использования других модулей. Для динамического контента Apache встраивает языковой процессор в каждый рабочий процесс. Это простой подход, который хорошо работает. Вы также можете заменить модули, если вам нужно внести изменения.

2. Настройка сервера

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

  • Администратор сервера отвечает за глобальную безопасность, что ужесточает доступ к серверу в целом.
  • Централизованный сервер имеет большую производительность, чем другие типы. Это связано с тем, что Nginx не нужно будет обрабатывать запросы на проверку файлов конфигурации в каждом каталоге.
  • Здесь есть эффект домино, так как не будет никаких переопределений для сервера из нескольких областей, что еще больше сократит время запросов.

Один из способов, по которому неспециалист узнает, что он использует сервер Apache, — это наличие файлов .htaccess . Это файлы конфигурации, которые вы можете добавить практически в любое место на вашем сервере. Apache будет проверять каждый элемент пути на наличие файла .htaccess при выполнении запроса.

Файл .htaccess, показывающий некоторые правила перезаписи — сравнение Nginx и Apache

Это замечательно для пользователей, которые хотят персонализировать свою часть сервера, но могут столкнуться с катастрофой, если одна из директив вызовет проблемы с производительностью или безопасностью. Этот децентрализованный подход является одной из причин, по которой Apache используется на виртуальном хостинге. Это также причина, по которой система управления контентом (CMS), такая как WordPress, обеспечивает хорошую производительность на серверах Apache.

3. Запросить перевод

Одно важное отличие Nginx от Apache, которое не кажется очевидным, заключается в том, как он интерпретирует запросы. В двух словах:

  • Nginx интерпретирует и отображает запросы, используя универсальный идентификатор ресурса (URI) для каждого компонента.
  • Apache также может использовать URI для интерпретации запросов, но чаще используется файловая структура пути.

Поскольку Apache в первую очередь является веб-сервером, он будет использовать блоки <Directory> , <Files> или <Location> для определения ресурсов. Ключевой концепцией здесь является то, что все, что Apache «видит», связано с веб-сервером, поэтому в пути к ресурсу нет двусмысленности. Подумайте о дереве документов, и именно так Apache «визуализирует» файловую систему сервера.

Файл конфигурации Apache, показывающий защиту файловой системы для определенных каталогов — сравнение Nginx и Apache

Напротив, Nginx имеет множество вариантов использования, таких как балансировщик нагрузки, прокси-сервер и веб-сервер. Из-за этого запросы должны поступать в виде URI для Nginx для их обработки. Например, Nginx использует блоки server и location : первый интерпретирует запрошенный хост, а второй впоследствии сопоставляет части URI. Весь запрос становится URI.

Файл конфигурации Nginx — сравнение Nginx и Apache

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

Nginx против Apache: что выбрать для своего сервера в 2022 году

Универсальный ответ на вопрос: какое серверное программное обеспечение выбрать? прост: это тот, который предлагает ваш хостинг-провайдер. Во многих случаях у вас не будет выбора. Мы заметили, что многие веб-хосты следуют одному и тому же шаблону, которому вы должны соответствовать, если хотите выбрать между Nginx и Apache:

  • Если вы хотите запустить сервер, который требует постоянной настройки, или вы хотите предоставить пользователям возможность выбора конфигурации, Apache подойдет для этого.
  • Однако, если вы хотите обеспечить сверхпроизводительность, надежную защиту и хотите обрабатывать конфигурации, а не своих пользователей, Nginx — это путь вперед.

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

Поэтому, если вы полагаетесь на кэширование для хранения и обслуживания контента, Nginx может быть лучшим вариантом. Однако помните, что Nginx не может обслуживать динамический контент, поэтому производительность будет больше зависеть от эффективности используемого прокси-сервера.

Перейти к началу

Вывод

Существует множество областей WordPress (и управления веб-сайтом), которые предлагают почти подавляющее количество вариантов. Такова природа зверя. Однако это не поможет, когда вам нужно быстро запустить сайт.

#Nginx против #Apache: какой веб-сервер вам подходит?
Нажмите, чтобы твитнуть

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

Мы считаем, что Nginx может покрыть большинство баз с большей производительностью, что делает его лучшим вариантом для большинства пользователей WordPress. Вот почему многие популярные хосты WordPress, ориентированные на производительность, перешли на стек серверов, полностью основанный на Nginx, включая Kinsta и Flywheel.

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

Где вы сидите на заборе между Nginx и Apache? Дайте нам знать в комментариях ниже!

Бесплатное руководство

5 основных советов по ускорению
Ваш сайт WordPress

Сократите время загрузки даже на 50-80%
просто следуя простым советам.

Скачать бесплатное руководство