Apache HTTP Server ( / ə ˈ p æ tʃ i / ə- PATCH -ee ) — это бесплатное и открытое кроссплатформенное программное обеспечение веб-сервера , выпущенное на условиях Apache License 2.0 . Он разрабатывается и поддерживается сообществом разработчиков под эгидой Apache Software Foundation .
Подавляющее большинство экземпляров Apache HTTP Server работают на дистрибутиве Linux , [5] но текущие версии также работают на Microsoft Windows , [6] OpenVMS , [7] и широком спектре Unix-подобных систем. Прошлые версии также работали на NetWare , OS/2 и других операционных системах, [8] включая порты на мэйнфреймы. [9]
Первоначально основанный на сервере NCSA HTTPd , разработка Apache началась в начале 1995 года после того, как работа над кодом NCSA застопорилась. [10] Apache сыграл ключевую роль в первоначальном росте Всемирной паутины , [11] быстро обогнав NCSA HTTPd в качестве доминирующего сервера HTTP . В 2009 году он стал первым программным обеспечением веб-сервера, обслуживающим более 100 миллионов веб-сайтов . [12]
По оценкам Netcraft[update] , по состоянию на март 2022 года Apache обслуживал 23,04% из миллиона самых загруженных веб-сайтов, в то время как Nginx обслуживал 22,01%; Cloudflare с 19,53% и Microsoft Internet Information Services с 5,78% замыкают четверку лидеров. По некоторым другим статистическим данным Netcraft, Nginx опережает Apache. [13] Согласно обзору всех веб-сайтов W3Techs, в июне 2022 года Apache занимал второе место с 31,4%, а Nginx — первое с 33,6%, а Cloudflare Server — третье с 21,6%. [14]
По данным Apache Software Foundation , название было выбрано «из уважения к различным индейским народам, совместно именуемым Apache , хорошо известным своими превосходными навыками в военной стратегии и неисчерпаемой выносливостью». [15] Это происходило в контексте, в котором казалось, что открытый интернет, основанный на свободном обмене открытым исходным кодом, вскоре подвергся своего рода завоеванию со стороны поставщика проприетарного программного обеспечения Microsoft ; соавтор Apache Брайан Белендорф — создатель названия — видел, что его усилия в некоторой степени параллельны усилиям Geronimo , вождя последнего из свободных народов Apache. [16] [17] Но он признал, что название «также представляет собой милую игру слов на „патчированный веб-сервер “ — сервер, созданный из серии патчей ».
Существуют и другие источники теории каламбура «лоскутного» программного обеспечения, включая официальную документацию проекта за 1995 год, в которой говорилось: «Apache — это милое название, которое прижилось. Оно было основано на некотором существующем коде и серии программных исправлений, каламбур на сервере „A PatCHy“». [18] [19]
Однако в интервью в апреле 2000 года Белендорф утверждал, что происхождение Apache не было игрой слов, заявив: [20]
Название буквально пришло из ниоткуда. Хотел бы я сказать, что это было что-то фантастическое, но это было из ниоткуда. Я поместил его на страницу, а затем, несколько месяцев спустя, когда начался этот проект, я указал людям на эту страницу и сказал: «Эй, что вы думаете об этой идее?» ... Кто-то сказал, что им понравилось название и что это действительно хороший каламбур. И я такой: «Каламбур? Что ты имеешь в виду?» Он сказал: «Ну, мы строим сервер из кучи программных патчей, верно? Так что это патченный веб-сервер». Я сказал: «О, хорошо». ... Когда я думал об этом названии, нет. Оно просто как-то подразумевало: «Не брать пленных. Быть агрессивным и надрать кому-нибудь задницу».
В январе 2023 года некоммерческая организация Natives in Tech, базирующаяся в США, обвинила Apache Software Foundation в культурной апроприации и призвала их изменить название фонда, а следовательно, и названия программных проектов, которые он размещает. [21] [22]
Когда Apache работает под управлением Unix , его процесс называется httpd
, что является сокращением от «HTTP daemon ». [23]
Apache поддерживает множество функций, многие из которых реализованы как скомпилированные модули , расширяющие основные функциональные возможности. Они могут варьироваться от схем аутентификации до поддержки серверных языков программирования, таких как Perl , Python , Tcl и PHP . Популярные модули аутентификации включают mod_access, mod_auth, mod_digest и mod_auth_digest, преемника mod_digest. Примеры других функций включают поддержку Secure Sockets Layer и Transport Layer Security ( mod_ssl ), модуль прокси ( mod_proxy ), модуль перезаписи URL ( mod_rewrite), пользовательские файлы журналов ( mod_log_config) и поддержку фильтрации ( mod_include и mod_ext_filter).
Популярные методы сжатия в Apache включают внешний модуль расширения mod_gzip, реализованный для уменьшения размера (веса) веб-страниц, обслуживаемых по HTTP . ModSecurity — это открытый исходный код для обнаружения и предотвращения вторжений для веб-приложений. Журналы Apache можно анализировать через веб-браузер с помощью бесплатных скриптов, таких как AWStats / W3Perl или Visitors.
Виртуальный хостинг позволяет одной установке Apache обслуживать множество различных веб-сайтов . Например, один компьютер с одной установкой Apache может одновременно обслуживать example.com
, example.org
, test47.test-server.example.edu
, и т. д.
Apache имеет настраиваемые сообщения об ошибках, базы данных аутентификации на основе СУБД , согласование контента и поддерживает несколько графических пользовательских интерфейсов (GUI).
Он поддерживает аутентификацию по паролю и аутентификацию по цифровому сертификату . Поскольку исходный код доступен бесплатно, любой может адаптировать сервер для конкретных нужд, и существует большая публичная библиотека дополнений Apache. [24]
Более подробный список функций представлен ниже:
public_html
веб-страницы для каждого пользователя [37]Вместо реализации единой архитектуры Apache предоставляет множество многопроцессорных модулей (MPM), которые позволяют ему работать в режиме на основе процесса , гибридном (процесс и поток ) режиме или режиме гибридного события, чтобы лучше соответствовать требованиям каждой конкретной инфраструктуры. Поэтому выбор MPM и конфигурации важен. Там, где необходимо идти на компромиссы в производительности, Apache разработан для сокращения задержек и увеличения пропускной способности по сравнению с простой обработкой большего количества запросов, тем самым обеспечивая последовательную и надежную обработку запросов в разумные сроки. [ необходимо разъяснение ]
Для доставки статических страниц серия Apache 2.2 считалась значительно более медленной, чем nginx и Varnish . [41] Для решения этой проблемы разработчики Apache создали Event MPM, который совмещает использование нескольких процессов и нескольких потоков на процесс в асинхронном цикле на основе событий . [42] [ необходимо разъяснение ] По словам Джима Ягельски и других независимых источников, эта архитектура, реализованная в серии Apache 2.4, работает как минимум так же хорошо, как веб-серверы на основе событий . [43] [44] [45] Однако некоторые независимые, но значительно устаревшие тесты показывают, что она все еще вдвое медленнее, чем nginx, например [46]
Кодовая база Apache HTTP Server была перелицензирована на лицензию Apache 2.0 (с предыдущей лицензии 1.1) в январе 2004 года [47] , и Apache HTTP Server 1.3.31 и 2.0.49 стали первыми релизами, использующими новую лицензию. [48]
Проекту OpenBSD не понравилось это изменение, и они продолжили использовать версии Apache до 2.0, фактически разветвив Apache 1.3.x для своих целей. [49] [50] [51] Сначала они заменили его на Nginx , а вскоре после этого создали собственную замену, OpenBSD Httpd, основанную на проекте Relayd. [52] [53] [54] [55]
Версия 1.1: Лицензия Apache 1.1 была одобрена ASF в 2000 году: основное изменение по сравнению с лицензией 1.0 касается «рекламного пункта» (раздел 3 лицензии 1.0); производные продукты больше не обязаны включать указание авторства в свои рекламные материалы, только в свою документацию.
Версия 2.0: ASF приняла лицензию Apache License 2.0 в январе 2004 года. Заявленные цели лицензии включали упрощение использования лицензии для проектов, не относящихся к ASF, улучшение совместимости с программным обеспечением на основе GPL, возможность включения лицензии в качестве ссылки, а не перечисления в каждом файле, разъяснение лицензии на вклады и требование патентной лицензии на вклады, которые обязательно нарушают собственные патенты вкладчика.
Apache HTTP Server Project — это совместная разработка программного обеспечения, направленная на создание надежной, коммерческой, многофункциональной и свободно доступной реализации исходного кода HTTP (веб)-сервера. Проект совместно управляется группой добровольцев, расположенных по всему миру, использующих Интернет и Веб для общения, планирования и разработки сервера и связанной с ним документации. Этот проект является частью Apache Software Foundation . Кроме того, сотни пользователей внесли в проект идеи, код и документацию. [64] [65] [66]
Apache 2.4 прекратил поддержку платформ BeOS , TPF , A/UX , NeXT и Tandem . [8]
Apache, как и другое серверное программное обеспечение, может быть взломано и эксплуатировано. Основным инструментом атаки Apache является Slowloris , который использует ошибку в программном обеспечении Apache. [67] Он создает множество сокетов и поддерживает каждый из них активным и занятым, отправляя несколько байтов (известных как «заголовки keep-alive»), чтобы сервер знал, что компьютер все еще подключен и не испытывает сетевых проблем. Разработчики Apache обратились к Slowloris с помощью нескольких модулей, чтобы ограничить причиняемый ущерб; модули Apache mod_limitipconn, mod_qos , mod_evasive, mod security , mod_noloris и mod_antiloris были предложены в качестве средств снижения вероятности успешной атаки Slowloris. [68] [69] Начиная с Apache 2.2.15, Apache поставляет модуль mod_reqtimeout в качестве официального решения, поддерживаемого разработчиками. [70]
Поддержка платформы была удалена для BeOS, TPF и даже более старых платформ, таких как A/UX, Next и Tandem. Считалось, что они в любом случае были сломаны.
{{cite web}}
: CS1 maint: unfit URL (link){{cite web}}
: CS1 maint: bot: original URL status unknown (link)