HTTP-сервер Apache - Apache HTTP Server

HTTP-сервер Apache
Логотип HTTP-сервера Apache (2016) .svg
Оригинальный автор (ы)Роберт МакКул
Разработчики)Фонд программного обеспечения Apache
изначальный выпуск1995; 25 лет назад (1995)[1]
Стабильный выпуск2.4.46 (7 августа 2020 г.; 3 месяца назад (2020-08-07)[2]) [±]
Репозиторий Отредактируйте это в Викиданных
Написано вC,[3] XML[4]
Операционная системаUnix-подобный, Майкрософт Виндоус,[5] OpenVMS
Типвеб сервер
ЛицензияЛицензия Apache 2.0
Интернет сайтhttpd.apache.org Отредактируйте это в Викиданных

В HTTP-сервер Apache, в просторечии называется Apache (/əˈпæя/ ə-ПЛАСТЫРЬ-ее ), это бесплатно и с открытым исходным кодом кросс-платформенный веб сервер программное обеспечение, выпущенное на условиях Лицензия Apache 2.0. Apache разрабатывается и поддерживается открытым сообществом разработчиков под эгидой Фонд программного обеспечения Apache.

Подавляющее большинство экземпляров HTTP-сервера Apache работают на Дистрибутив Linux,[6] но текущие версии также работают на Майкрософт Виндоус,[7] OpenVMS,[8] и широкий выбор Unix-подобный системы. Прошлые версии также работали на NetWare, OS / 2 и другие операционные системы,[9] включая порты на мэйнфреймы.[10]

Первоначально на основе NCSA HTTPd server, разработка Apache началась в начале 1995 года после остановки работы над кодом NCSA. Apache сыграл ключевую роль в начальном росте Всемирная паутина,[11] быстро обогнав NCSA HTTPd как доминирующую HTTP server, и остается самым популярным с апреля 1996 года. В 2009 году он стал первым программным обеспечением веб-сервера, обслуживающим более 100 миллионов веб-сайты.[12] По состоянию на апрель 2020 г., По оценкам Netcraft, Apache обслуживает 29,12% из миллиона самых загруженных веб-сайтов, а Nginx обслужено 25,54%;[13] по данным W3Techs, Apache обслуживает 39,5% из 10 миллионов сайтов, а Nginx - 31,7%.[14][15]

Имя

На протяжении многих лет предлагалось несколько объяснений происхождения имени Apache.

С момента создания проекта Apache в 1995 году официальная документация гласила:[16][17]

Apache - симпатичное имя, которое прижилось. Он был основан на некотором существующем коде и серии программные патчи, каламбур на сервере «PAtCHy».

В интервью в апреле 2000 г. Брайан Белендорф, один из создателей Apache сказал:[18]

Название пришло буквально из ниоткуда. Хотел бы я сказать, что это было что-то фантастическое, но это было совершенно неожиданно. Я поместил это на страницу, а затем, несколько месяцев спустя, когда этот проект начался, я указал людям на эту страницу и сказал: «Эй, что вы думаете об этой идее?» ... Кто-то сказал, что им нравится это имя и что это действительно хороший каламбур. И я подумал: «Игра слов? Что ты имеешь в виду?» Он сказал: «Ну, мы строим сервер из кучи программных исправлений, верно? Итак, это неоднородный веб-сервер». Я сказал: «О, хорошо». ... Когда я подумал об этом имени, нет. Это просто как бы подразумевает: «Не берите пленных. Будьте агрессивны и надрать задницу».

С 2013 года Apache Foundation объясняет происхождение названия следующим образом:[19]

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

Когда Apache работает под Unix, его имя процесса httpd, что является сокращением от HTTP демон ".[20]

Обзор возможностей

Apache поддерживает множество функций, многие из которых реализованы как составлен модули которые расширяют базовую функциональность. Они могут варьироваться от аутентификация схемы поддержки на стороне сервера языки программирования, такие как Perl, Python, Tcl и PHP. Популярные модули аутентификации включают mod_access, mod_auth, mod_digest и mod_auth_digest, преемника mod_digest. Примеры других функций включают Уровень защищенных гнезд и Безопасность транспортного уровня поддерживать (mod_ssl ), а доверенное лицо модуль (mod_proxy ), а Перезапись URL модуль (mod_rewrite), пользовательские файлы журналов (mod_log_config) и поддержка фильтрации (mod_include и mod_ext_filter).

Популярные методы сжатия в Apache включают внешний модуль расширения, mod_gzip, реализованный для уменьшения размера (веса) обслуживаемых веб-страниц. HTTP. ModSecurity - это механизм обнаружения и предотвращения вторжений с открытым исходным кодом для веб-приложений. Журналы Apache можно анализировать через веб-браузер с помощью бесплатных скриптов, таких как AWStats /W3Perl или Посетители.

Виртуальный хостинг позволяет одной установке Apache обслуживать множество различных веб-сайты. Например, один компьютер с одной установкой Apache может одновременно обслуживать example.com, example.org, test47.test-server.example.edu, так далее.

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

Он поддерживает аутентификацию по паролю и Цифровой сертификат аутентификация. Поскольку исходный код находится в свободном доступе, любой может адаптировать сервер под конкретные нужды, а также существует большая публичная библиотека надстроек Apache.[21]

Более подробный список возможностей представлен ниже:

Спектакль

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

Что касается доставки статических страниц, серия Apache 2.2 была признана значительно медленнее, чем nginx и лак.[39] Чтобы решить эту проблему, разработчики Apache создали Event MPM, который сочетает использование нескольких процессов и нескольких потоков для каждого процесса в одном асинхронный цикл на основе событий.[40][требуется разъяснение ] Эта архитектура, реализованная в серии Apache 2.4, работает не хуже, чем веб-серверы на основе событий, согласно Джим Ягельски и другие независимые источники.[41][42][43] Однако некоторые независимые, но значительно устаревшие тесты показывают, что он по-прежнему вдвое медленнее, чем nginx, например[44]

Лицензирование

HTTP-сервер Apache кодовая база был перелицензированный к Лицензия Apache 2.0 (из предыдущей лицензии 1.1) в январе 2004 г.,[45] и Apache HTTP Server 1.3.31 и 2.0.49 были первыми релизы используя новую лицензию.[46]

В OpenBSD Проекту не понравилось это изменение, и он продолжил использовать версии Apache до 2.0, по сути разветвление Apache 1.3.x для своих целей.[47][48][49] Первоначально они заменили его на Nginx, и вскоре после этого сделали собственную замену OpenBSD Httpd на основе проекта relayd.[50][51][52][53]

Версии

Версия 1.1: Лицензия Apache 1.1 была одобрена ASF в 2000 г .: Основное изменение по сравнению с лицензией 1.0 находится в «пункте о рекламе» (раздел 3 лицензии 1.0); от производных продуктов больше не требуется указывать указание авторства в своих рекламных материалах, только в документации.

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

Разработка

Версии HTTP-сервера Apache
Версияизначальный выпускПоследний релиз
Старая версия, больше не поддерживается: 1.31998-06-06[54]2010-02-03 (1.3.42)[55]
Старая версия, больше не поддерживается: 2.02002-04-06[56]2013-07-10 (2.0.65)[57]
Старая версия, больше не поддерживается: 2.22005-12-01[58]2017-07-11 (2.2.34)[59]
Текущая стабильная версия: 2.42012-02-21[60]2020-08-07 (2.4.46)[61]
Легенда:
Старая версия
Старая версия, все еще поддерживается
Последняя версия
Последняя предварительная версия
Будущий выпуск

Проект HTTP-сервера Apache - это совместная разработка программного обеспечения, направленная на создание надежной, многофункциональной и свободно доступной реализации исходного кода для HTTP (веб-сервера) коммерческого уровня. Проектом совместно управляет группа добровольцев, расположенных по всему миру, которые используют Интернет и Интернет для общения, планирования и разработки сервера и связанной с ним документации. Этот проект является частью Apache Software Foundation. Кроме того, сотни пользователей внесли в проект идеи, код и документацию.[62][63][64]

Apache 2.4 отказался от поддержки BeOS, TPF, A / UX, Следующий, и Тандем платформы.[9]

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

Apache, как и другое серверное программное обеспечение, можно взломать и использовать. Основным инструментом атаки Apache является Slowloris, который использует ошибку в программном обеспечении Apache.[нужна цитата ] Он создает множество сокетов и поддерживает каждый из них в рабочем состоянии, отправляя несколько байтов (известных как «заголовки keep-alive»), чтобы сервер знал, что компьютер все еще подключен и не испытывает сетевых проблем. Разработчики Apache обратились к Slowloris с несколькими модулями, чтобы ограничить наносимый ущерб; модули Apache mod_limitipconn, mod_qos, mod_evasive, мод безопасности, mod_noloris и mod_antiloris были предложены как средства уменьшения вероятности успешной атаки Slowloris.[65][66] Начиная с Apache 2.2.15, Apache поставляет модуль mod_reqtimeout в качестве официального решения, поддерживаемого разработчиками.[67]

Смотрите также

Рекомендации

  1. ^ «О проекте HTTP-сервера Apache». Фонд программного обеспечения Apache. В архиве из оригинала 7 июня 2008 г.. Получено 2008-06-25.
  2. ^ «Релизы · apache / httpd · GitHub». GitHub. Получено 7 августа 2020.
  3. ^ «Архивная копия». Архивировано из оригинал на 2016-03-02. Получено 2016-02-27.CS1 maint: заархивированная копия как заголовок (связь)
  4. ^ «Языки». HTTP-сервер Apache. Программное обеспечение Black Duck. Охлох. Архивировано из оригинал 7 апреля 2014 г.. Получено 2 апреля 2014.
  5. ^ «Компиляция и установка». httpd.apache.org. Фонд программного обеспечения Apache. Получено 9 мая 2016.
  6. ^ «Дистрибутивы OS / Linux, использующие Apache». secure1.securityspace.com. Получено 2018-09-17.
  7. ^ «Примечания к платформе - HTTP-сервер Apache версии 2.4». httpd.apache.org. Получено 2019-01-21.
  8. ^ «Безопасный веб-сервер». vmssoftware.com. Получено 2020-10-20.
  9. ^ а б «Обновление до 2.4 с 2.2». Поддержка платформ была удалена для BeOS, TPF и даже более старых платформ, таких как A / UX, Next и Tandem. Все равно считалось, что они сломаны.
  10. ^ «Порт Apache EBCDIC - HTTP-сервер Apache версии 2.4». httpd.apache.org. Получено 2019-08-16.
  11. ^ Доля рынка Netcraft для лучших серверов во всех доменах Август 1995 г. - сегодня (обновляется ежемесячно)
  12. ^ «Обзор веб-серверов, февраль 2009 г.». Netcraft. В архиве из оригинала 26 февраля 2009 г.. Получено 2009-03-29.
  13. ^ «Опрос веб-серверов, апрель 2020 г.». Новости Netcraft. Получено 25 апреля 2020.
  14. ^ «Исторические тенденции в статистике использования веб-серверов, апрель 2020 года». w3techs.com. Получено 25 апреля 2020.
  15. ^ «Обзор технологий». w3techs.com. Получено 25 апреля 2020.
  16. ^ «Информация о проекте HTTP-сервера Apache». 1997-04-15. Архивировано из оригинал 15 апреля 1997 г.
  17. ^ «Часто задаваемые вопросы о сервере Apache». Архивировано из оригинал на 1997-01-06. Получено 15 января 2017.
  18. ^ Макмиллан, Роберт (15 апреля 2000 г.). «Сила Apache». Журнал Linux. Архивировано из оригинал 28 января 2019 г.
  19. ^ «Фонд Apache». www.apache.org. Получено 22 августа 2018.
  20. ^ "Документы Apache". httpd.apache.org. Получено 22 августа 2018.
  21. ^ «Что такое веб-сервер Apache? Webopedia». webopedia.com.
  22. ^ "Учебное пособие по HTTP-серверу Apache: файлы .htaccess".
  23. ^ "mod_proxy".
  24. ^ "mod_proxy_balancer".
  25. ^ «Балансировщик».
  26. ^ «Аутентификация и авторизация».
  27. ^ "mod_rewrite".
  28. ^ "mod_headers".
  29. ^ "mod_sed".
  30. ^ "mod_substitute".
  31. ^ «Учебное пособие по Apache httpd: Введение в серверные компоненты».
  32. ^ "mod_usertrack".
  33. ^ «Учебник Apache: динамическое содержимое с CGI».
  34. ^ "Веб-каталоги для каждого пользователя".
  35. ^ «Выражения в HTTP-сервере Apache».
  36. ^ "mod_status".
  37. ^ "mod_xml2enc".
  38. ^ "Модуль Apache: mod_ftp".
  39. ^ «Обслуживание статических файлов: сравнение Apache, Nginx, Varnish и G-WAN». Спут!.
  40. ^ «рабочий - HTTP-сервер Apache версии 2.2». apache.org.
  41. ^ Apache httpd 2.4
  42. ^ «Выбор прокси-сервера».
  43. ^ «Оценка пропускной способности Apache 2.4.1».
  44. ^ «Производительность Apache 2.4 с событием MPM по сравнению с Nginx». eschrade.com.
  45. ^ «Лицензия Apache, версия 2.0». Фонд программного обеспечения Apache. Январь 2004 г.. Получено 2013-05-21.
  46. ^ Бертон, Ричард Энтони. «К вашему сведению: Apache HTTP Server 2.0.49 выпущен». Группа новостейalt.apache.configuration. Получено 2018-02-16.
  47. ^ де Раадт, Тео (18 февраля 2004 г.). "Новая лицензия apache". openbsd-misc (Список рассылки). Получено 2013-05-21.
  48. ^ «Политика авторских прав». OpenBSD. Получено 2013-05-12.
  49. ^ "apache-httpd-openbsd-1.3.20140502p2 - OpenBSD улучшенная и защищенная версия Apache 1.3". Порты OpenBSD. Получено 2014-12-28.
  50. ^ Марвин, Роб (25 марта 2015 г.). "Внутри нового веб-сервера httpd OpenBSD". SD Times. Получено 12 октября 2019.
  51. ^ "Руководство по обновлению OpenBSD: с 5.1 до 5.2". openbsd.org.
  52. ^ jj, изд. (2014-03-14). "Внимание! Apache удален с базы". Журнал OpenBSD.
  53. ^ «Руководство по обновлению OpenBSD: с 5.5 до 5.6». openbsd.org.
  54. ^ "Объявление: Apache 1.3.0 выпущен!". 1998-06-06. Получено 2015-01-06.
  55. ^ «Выпущен Apache HTTP Server 1.3.42 (последний выпуск 1.3.x)». apache.org.
  56. ^ «Официальный выпуск: Apache 2.0.35 теперь называется GA». 2002-04-06. Получено 2015-01-06.
  57. ^ «[Объявление] Выпущен HTTP-сервер Apache 2.0.65». apache.org.
  58. ^ «Выпущен Apache HTTP Server 2.2.0». 2005-12-01. Получено 2015-01-06.
  59. ^ "[Объявление] Выпущен сервер Apache HTTP 2.2.34". apache.org.
  60. ^ «[ОБЪЯВЛЕНИЕ] Выпущен HTTP-сервер Apache 2.4.1». 2012-02-21. Получено 2015-07-17.
  61. ^ «Выпущен Apache HTTP Server 2.4.46». apache.org.
  62. ^ Группа документации. «О проекте HTTP-сервера Apache - Проект HTTP-сервера Apache». apache.org.
  63. ^ Проект с открытым исходным кодом HTTP-сервера Apache на Ohloh. (нет данных). Охлох, сеть с открытым исходным кодом. Проверено 12 ноября 2012 г.
  64. ^ «Глава 4. HTTP-сервер Apache». fedoraproject.org.
  65. ^ "Slowloris HTTP DoS". Архивировано 26 апреля 2015 года.. Получено 26 июн 2009.CS1 maint: BOT: статус исходного URL-адреса неизвестен (связь)
  66. ^ "mod_noloris: защита от DoS". мыльница niq. Получено 7 января 2012.
  67. ^ "mod_reqtimeout - HTTP-сервер Apache". Httpd.apache.org. Получено 2013-07-03.

внешняя ссылка