Apache vs Nginx: практический взгляд / Хабр

Введение

Apache и Nginx — 2 самых широко распространенных веб-сервера с открытым исходным кодом в мире. Вместе они обслуживают более 50% трафика во всем интернете. Оба решения способны работать с разнообразными рабочими нагрузками и взаимодействовать с другими приложениями для реализации полного веб-стека.

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

Общий обзор

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

Apache

Apache HTTP Server был разработан Робертом Маккулом в 1995 году, а с 1999 года разрабатывается под управлением Apache Software Foundation — фонда развития программного обеспечения Apache.
Так как HTTP сервер это первый и самый популярный проект фонда его обычно называют просто Apache.

Веб-север Apache был самым популярным веб-сервером в интернете с 1996 года. Благодаря его популярности у Apache сильная документация и интеграция со сторонним софтом.

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

Nginx

В 2002 году Игорь Сысоев начал работу над Nginx для того чтобы решить проблему C10K — требование к ПО работать с 10 тысячами одновременных соединений. Первый публичный релиз был выпущен в 2004 году, поставленная цель была достигнута благодаря асинхронной event-driven архитектуре.

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

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

Архитектура обработки соединений

Одно из самых существенных отличий между Apache и Nginx состоит в том как они обрабатывают соединения и отвечают на различные виды трафика.

Apache

Apache предоставляет несколько модулей мультипроцессинга (multi-processing modules, MPM), которые отвечают за то как запрос клиента будет обработан. Это позволет администраторам определять политику обработки соединений. Ниже представлен список MPM-модулей Apache:

  • mpm_prefork — этот модуль создает по одному процессу с одним потоком на каждый запрос. Каждый процесс может обрабатывать только одно соединение в один момент времени.
    Пока число запросов меньше числа процессов этот MPM работает очень быстро. Однако производительность быстро падает когда число запросов начинает превосходить число процессов, поэтому в большинстве случаев это не самый лучший выбор. Каждый процесс потребляет значительный объем RAM, поэтому этот MPM сложно поддается масштабированию. Но он может быть использован вместе с компонентами, которые не созданы для работы в многопоточной среде. Например, PHP не является потокобезопасным, поэтому этот MPM рекомендуется использовать как безопасный метод работы с
    mod_php
    .
  • mpm_worker — этот модуль создает процессы, каждый из которых может управлять несколькими потоками. Каждый поток может обрабтывать одно соединение. Потоки значительно более эффективны чем процессы, что означает что mpm_worker масштабируется значительно лучше чем mpm_prefork. Так как потоков больше чем процессов это означает, что новое соединение может быть сразу обработано свободным потоком, а не ждать пока освободится процесс.
  • mpm_event — этот модуль похож на mpm_worker, но оптимизрован под работу с keep-alive соединениями. Когда используется mpm_worker соединение будет удерживать поток вне зависимости от того активное это соединение или keep-alive. Mpm_event выделяет отдельные потоки для keep-alive соединений и отдельные потоки для активных соединений. Это позволяет модулю не погрязнуть в keep-alive соединениях, что необходимо для быстрой работы. Этот модуль был отмечен как стабильный в Apache версии 2.4.
Как вы можете видеть Apache предлагает гибкие возможности для выбора различных алгоритмов обработки соединений и запросов.

Nginx

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

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

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

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

Статический и динамический контент

Если рассматривать жизненные примеры, то основные различия между Apache и Nginx в том как они обрабатывают запросы к статическому и динамическому контенту.

Apache

Apache может раздавать статический контент используя стандартные file-based методы. Производительность таких операций зависит от выбранного MPM.

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

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

Nginx

Nginx не имеет возможности самостоятельно обрабатывать запросы к динамическому контенту. Для обработки запросов к PHP или другому динамическому контенту Nginx должен передать запрос внешнему процессору для исполнения, подождать пока ответ будет сгенерирован и получить его. Затем результат может быть отправлен клиенту.

Для администраторов это означает, что нужно настроить взаимодействие Nginx с таким процессором используя один из протоколов, который известен Nginx’у (http, FastCGI, SCGI, uWSGI, memcache). Это может немного усложнить процесс настройки, в особенности когда вы будете пытаться предугадать какое число соединений разрешить, так как будет использоваться дополнительное соединение с процессором на каждый пользовательский запрос.

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

Распределенная конфигурация против централизованной

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

Apache

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

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

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

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

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

Nginx

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

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

Так как Nginx не позволяет переопределять конфиги на уровне директорий, он может обрабатывать запросы быстрее, ведь ему достаточно сделать один directory lookup и прочитать один конфигурационный файл на каждый запрос (предполагается, что файл найден там где он должен быть по соглашению).

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

Имейте ввиду, что вы можете отключить поддержку .htaccess в Apache, если сказанное выше произвело на вас впечатление.

Интерпретация базирующаяся на файлах и URI

То как веб-сервер интерпретирует запрос и сопоставляет его с ресурсом в системе это еще одна отличительная особенность в этих двух серверах.

Apache

Apache имеет возможность интерпретировать запрос как физический ресурс в файловой системе или как URI, который требует дополнительной обработки. Первый тип запросов использует конфигурационные блоки <Directory> или <File>, второй — блоки <Location>.

Так как Apache изначально был спроектирован как веб-сервер, он по умолчанию интерпретирует запросы как ресурсы в файловой системе. Он берет document root веб-сервера и дополняет его частью запроса, которая следует за именем хоста и номером порта, чтобы найти запрашиваемый файл. В общем случае, иерархия файловой системы представленная в вебе доступна как дерево документов.

Apache предоставляет ряд альтернатив на случай когда запрос не соответствует файлу в файловой системе. Использование блоков <Location> это метод работы с URI без отображения на файловую систему. Также возможно использовать регулярные выражения, которые позволяют задать более гибкие настройки для всей файловой системы.

Так как Apache может оперировать и c файловой системой, и с webspace, то он в основном опирается на методы работы с файловой системой. Это видно в некоторых решениях в дизайне архитектуры веб-сервера, например, в использовании файлов .htaccess для конфигурирования на уровне директорий. Документация к Apache не рекомендует использовать URI-блоки для ограничения доступа для запросов к файловой системе.

Nginx

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

Эта особенность прослеживается в том как для Nginx конструируются и интерпретируются конфигурационные файлы. В Nginx нет способа создать конфигурацию для заданной директории, вместо этого он парсит URI.
Например, основными конфигурационными блоками в Nginx являются <server> и <location>. В блоке <server> определяется хост, который будет обслуживаться, блок <location> отвечает за обработку части URI, которая идет после имени хоста и номера порта. Таким образом, запрос интерпретируется как URI, а не как путь в файловой системе.

В случае запросов к статическим файлам все запросы должны быть отображены (mapped) на путь в файловой системе. Сначала Nginx выбирает блоки server и location, которые будут использованы для обработки запроса и затем объединяет document root с URI, в соответствии с конфигурацией.

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

Модули

И Apache, и Nginx могут быть расширены при помощи системы модулей, но способы реализации модульной системы принципиально отличаются.

Apache

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

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

Использование модулей не ограничивается лишь обработкой динамических запросов. Среди других возможностей модулей: изменение URL’ов (URL rewrite), аутентификация клиентов, защита сервера, логгирование, кеширование, сжатие, проксирование, ограничение частоты запросов, шифрование. Динамические модули могут значительно расширить функцональность ядра.

Nginx

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

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

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

Модули Nginx реализуют те же возможности, что и модули Apache: проксирование, сжатие данных, ограничение частоты запросов, логгирование, модификация URL’ов, гео-локация, аутентификация, шифрование, потоковое вещание, почтовые функции.

Поддержка, совместимость, экосистема и документация

В процессе использования приложения важными являются экосистема созданная вокруг него и возможность получения поддержки.

Apache

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

Существует много инструментов и веб-проектов идущих в комплекте со средствами запуска самих себя из под Apache. Это относится как к самим проектам, так и к системам управления пакетами.

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

Nginx

Nginx обычно используется там, где предъявляются повышенные требования к производительности и в некоторых областях он все еще является догоняющим.

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

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

Совместное использование Apache и Nginx

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

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

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

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

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

Заключение

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

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

Что такое веб-сервер Apache: его плюсы и минусы

Что такое веб-сервер Apache: его плюсы и минусы

Что такое Apache?

30 ноября 2022

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

Apache HTTP Server – один из самых известных программных инструментов в этой категории. На нем работают в том числе сервера Facebook, PayPal и других известных компаний. Если вы заказываете хостинг для сайта магазина, корпоративного портала или другого проекта любых масштабов, вам будет целесообразно использовать Apache.


Архитектура

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

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

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


Плюсы и минусы Apache

Веб-сервер остается самым популярным уже третье десятилетие, и у этого есть причины. Его главные плюсы:


  • Универсальность. Apache работает как на Windows, так и на системах, основанных на Linux. При этом управление хостингом на разных платформах практически не отличается. Кроме этого, веб-сервер создан на основе скриптовых и веб-ориентированных языков (PHP, Python, Tcl и т.д.), что делает его совместимым с множеством ПО и баз данных. Использование на веб-сервере программных продуктов на Java, C, C++ и других объективно-ориентированных языках возможно благодаря поддержке технологий CGI и FastCGI.

  • Возможности для расширения функционала. Динамическая система модулей позволяет адаптировать функциональность веб-сервера под потребности проекта. Подключать новые и отключать ненужные модули легко и быстро. 

  • Удобство настройки. Открытый исходный код и простое редактирование конфигурационных файлов позволяют адаптировать веб-сервер под определенные задачи и удобно управлять им.

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

При этом, как и у любого программного продукта, у Apache есть свои минусы:


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

  • Чем больше функций, тем выше уязвимость. Подключение большого количества модулей значительно усложняет настройки и повышает риск критических ошибок в безопасности.

  • Сложный синтаксис конфигурации. Новичку придется потратить достаточно времени, чтобы разобраться со всеми переменными в файлах конфигурации.

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

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

В LITE.HOST можно купить надежный хостинг для форума, интернет-магазина, корпоративного сайта, лендинга, использующего любой веб-сервер. Мы гарантируем постоянную доступность вашего сайта и сохранность данных. Наша техподдержка окажет помощь в любых вопросах, связанных с функционированием сайта, настройками и управлением, установкой нового ПО и т. д. 

404: Страница не найдена

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

Что я могу сделать сейчас?

Если вы впервые посещаете TechTarget, добро пожаловать! Извините за обстоятельства, при которых мы встречаемся. Вот куда вы можете пойти отсюда:

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

Просмотр по категории

Сеть

  • CAPWAP (Контроль и настройка точек беспроводного доступа)

    CAPWAP (управление и обеспечение точек беспроводного доступа) — это протокол, который позволяет контроллеру доступа управлять . ..

  • мониторинг производительности сети (NPM)

    Мониторинг производительности сети (NPM) — это процесс измерения и мониторинга качества обслуживания сети.

  • инфракрасное излучение (ИК)

    Инфракрасное излучение (ИК), иногда называемое просто инфракрасным, представляет собой область спектра электромагнитного излучения, в которой …

Безопасность

  • аналитика безопасности

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

  • NICE Framework (Национальная инициатива по обучению в области кибербезопасности Cybersecurity Workforce Framework)

    The NICE Framework (National Initiative for Cybersecurity Education Cybersecurity Workforce Framework) является справочным ресурсом …

  • черный список приложений (занесение приложений в черный список)

    Занесение приложений в черный список — все чаще называемое занесением в черный список приложений — представляет собой практику сетевого или компьютерного администрирования, используемую . ..

ИТ-директор

  • цифровая экосистема

    Цифровая экосистема — это группа взаимосвязанных ресурсов информационных технологий, которые могут функционировать как единое целое.

  • план закупок

    План закупок, также называемый планом управления закупками, представляет собой документ, который используется для управления процессом поиска …

  • Общепринятые принципы ведения учета (Принципы)

    Общепринятые принципы ведения документации — это основа для управления записями таким образом, чтобы поддерживать …

HRSoftware

  • конвейер талантов

    Воронка талантов — это группа кандидатов, готовых занять вакансию.

  • аутсорсинг процесса подбора персонала (RPO)

    Аутсорсинг процесса найма (RPO) — это когда работодатель передает ответственность за поиск потенциальных кандидатов на работу . ..

  • специалист по кадрам (HR)

    Специалист по персоналу — это специалист по кадрам, который выполняет повседневные обязанности по управлению талантами, сотрудникам …

Обслуживание клиентов

  • исходящий маркетинг

    Исходящий маркетинг — это традиционная форма маркетинга, при которой организация инициирует контакт с потенциальными клиентами или …

  • скорость оттока

    Коэффициент оттока — это показатель количества клиентов или сотрудников, покидающих компанию в течение определенного периода времени.

  • управление маркетинговой кампанией

    Управление маркетинговыми кампаниями — это планирование, выполнение, отслеживание и анализ кампаний прямого маркетинга.

Что такое Apache — Javatpoint

следующий → ← предыдущая

Apache — это бесплатное программное обеспечение веб-сервера с открытым исходным кодом, которое используется примерно 40% веб-сайтов по всему миру. HTTP-сервер Apache — это его официальное название. Он разработан и поддерживается Apache Software Foundation . Apache разрешает владельцам веб-сайтов размещать контент через Интернет. Именно по этой причине он известен как «веб-сервер ». Одна из самых надежных и старых версий веб-сервера Apache была опубликована в 1995 году.

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

Веб-сервер Значение

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

Веб-серверы предназначены для доставки веб-сайтов через Интернет. Для достижения этой цели он действует как посредник между клиентскими машинами и серверами. Он может передавать содержимое через сервер по каждому запросу пользователя. Кроме того, он доставляет этот запрос в Интернет.

Одной из наиболее важных задач любого веб-сервера является предоставление услуг различным пользователям Интернета одновременно. Веб-серверы выполняют файлы, указанные в языках программирования другого типа, таких как Java, Python, PHP и многих других. Веб-серверы превращают эти файлы в статические HTML-файлы. Он предоставляет услуги этим файлам в браузере веб-сервера. Веб-браузер можно определить как инструмент, обеспечивающий приличную связь между клиентом и сервером.

Работа Apache

Apache не является физическим сервером; это программное обеспечение, которое выполняется на сервере. Однако мы определяем его как веб-сервер. Его цель — установить соединение между браузерами посетителей веб-сайта (Safari, Google Chrome, Firefox и т. д.) и сервером. Apache можно определить как кроссплатформенное программное обеспечение, поэтому оно может работать на серверах Windows и UNIX.

Когда какой-либо посетитель желает загрузить страницу на нашем веб-сайте, например, домашнюю страницу или нашу страницу «О нас», браузер посетителя отправит запрос на наш сервер. Apache будет возвращать ответ вместе с каждым запрошенным файлом (изображениями, файлами и т. д.). Клиент и сервер взаимодействуют по протоколу HTTP, и Apache отвечает за безопасную и бесперебойную связь между обеими машинами.

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

Другие веб-серверы против Apache

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

Apache против NGINX

Nginx произносится как Engine-X . Это новое приложение веб-сервера, впервые опубликованное в 2004 году. Nginx завоевал популярность среди владельцев веб-сайтов. Он был разработан для решения проблемы c10k, что означает, что веб-серверы, использующие потоки для управления различными запросами пользователей, не могут обрабатывать более 10000 подключений одновременно.

  1. Владельцы веб-сайтов с интенсивным трафиком могут столкнуться с проблемами производительности, поскольку Apache использует структуру на основе потоков. Nginx определяет проблему c10k, которая, вероятно, является одной из самых удачных.
  2. Nginx содержит архитектуру, управляемую событиями. Он не создает новый процесс для всех запросов. Вместо этого он управляет всеми входящими запросами в отдельном потоке. Этот процесс обрабатывает различные рабочие процессы, реализующие фактическую обработку запроса. Модель Nginx, основанная на событиях, распределяет пользовательские запросы между рабочими методами простым и эффективным способом, что обеспечивает лучшую масштабируемость.
  3. Nginx может быть лучшим выбором, поскольку он может управлять веб-сайтами с высокой посещаемостью, используя минимум ресурсов. В частности, его могут использовать несколько популярных веб-сайтов, таких как Airbnb, Pinterest, Hulu и Netflix.
  4. Однако Apache предоставляет много преимуществ по сравнению с Nginx, поскольку он имеет простую настройку, удобную среду для начинающих и различные модули для средних и мелких игроков.

Apache против Tomcat

Tomcat может быть определен как веб-сервер и улучшен Apache Software Foundation. Следовательно, Apache Tomcat является его официальным названием. Tomcat также является HTTP-сервером. Однако он улучшает приложения Java, а не статические веб-сайты. Этот веб-сервер может выполнять множество различных приложений Java, таких как WebSocket, Java EL, JSP (страницы JavaServer) и Java Servlet.

  1. В частности, Tomcat был создан для приложений Java, а Apache был создан как HTTP-сервер. Мы можем применять Apache с различными языками программирования (Perl, Python, PHP и т. д.) при поддержке соответствующего модуля Apache (mod_perl, mod_python, mod_php и т. д.).
  2. Хотя мы можем применить веб-сервер Tomcat для обслуживания веб-страниц (статических), он менее эффективен для этой цели по сравнению с сервером Apache. Tomcat может предварительно загрузить виртуальную машину Java и другие библиотеки Java, которые нам не потребуются на большинстве веб-сайтов.
  3. Кроме того, Tomcat менее настраиваемый по сравнению с другими типами веб-серверов. Лучший вариант — HTTP-сервер, такой как NGINX или Apache, для запуска WordPress.

Плюсы и минусы Apache

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

Плюсы:

  1. Стабильное и надежное программное обеспечение.
  2. Бесплатно и с открытым исходным кодом, даже для хозяйственного использования.
  3. Регулярные исправления безопасности, часто обновляемые.
  4. Удобен для начинающих, прост в настройке.
  5. Гибкость благодаря модульной структуре.
  6. Готово работает с сайтами WordPress.
  7. Кроссплатформенный (реализуется на серверах Windows и Unix).
  8. Легкодоступная поддержка и огромное сообщество на случай любого вопроса.

Минусы:

  1. Различные проблемы с производительностью на веб-сайтах с очень интенсивным трафиком.
  2. Несколько параметров конфигурации могут привести к уязвимости системы безопасности.

Версии Apache

Версия 1.1

Эта версия Apache была авторизована ASF в 2000 году. Основное изменение касается «рекламного пункта» по сравнению с лицензией 1. 0. Производный продукт «Рекламная оговорка» больше не требуется для включения аспектов рекламных материалов (только в документацию).

Версия 2.0

Версия 2.0 Apache была принята ASF в январе 2004 года. Его заявленные цели включали создание лицензии, удобной для применения некоторыми проектами, не относящимися к ASF. Это может улучшить совместимость с программным обеспечением на основе GPL. Это позволяет добавлять лицензию по ссылке, а не перечислять ее во всех файлах. Это также разъясняет лицензию по взносам. Требуется любая патентная лицензия на вклады, которые обязательно нарушают патенты вклада.

Безопасность Apache

Как и другие веб-серверы, Apache можно использовать и взломать. Основным атакующим инструментом Apache является Slowloris. Slowloris может использовать ошибки в программном обеспечении Apache. Он может создавать несколько сокетов и поддерживает все эти сокеты в активном состоянии и отправляет различные байты (так называемые «заголовки поддержания активности»), чтобы информировать сервер о том, что система подключена и не сталкивается с какими-либо сетевыми проблемами.

Многие разработчики Apache определили Slowloris с несколькими модулями для ограничения причиняемого ущерба. Различные модули Apache, такие как mod_antiloris, mod_noloris, mod_security, mod_evasive, mod_qos, и mod_limitipconn были предложены для снижения вероятности успешной атаки Slowloris. Apache поставляет модуль mod_reqtimeout как исполнительное решение, продвигаемое разработчиками начиная с Apache 2.2.15.

Разработка Apache

Версии HTTP-сервера Apache

Последняя версия Первоначальный выпуск Версия
02.03.2010 (1.2.42) 06-06-1998 1,3
07.10.2013 (2.0.65) 04.06.2002 2,0
07.11.2017 (2.2.34) 12.01.2005 2,2
08.07.2020 (2.4.46) 21-02-2012 2,4

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *