stringtranslate.com

HTTP-сервер Apache

Apache HTTP Server ( / ə ˈ p æ 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 , по состоянию на март 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]

Более подробный список функций представлен ниже:

Производительность

Вместо реализации единой архитектуры 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]

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

Ссылки

  1. ^ "О проекте Apache HTTP Server". Apache Software Foundation . Архивировано из оригинала 7 июня 2008 года . Получено 2008-06-25 .
  2. ^ "[АНОНС] Выпущен Apache HTTP Server 2.4.62". 17 июля 2024 г. Получено 17 июля 2024 г.
  3. ^ "Apache Software Foundation Index: Projects by Programming Language Index". Архивировано из оригинала 2016-03-02 . Получено 2016-02-27 .
  4. ^ "Компиляция и установка". httpd.apache.org . Apache Software Foundation. Архивировано из оригинала 7 мая 2016 года . Получено 9 мая 2016 года .
  5. ^ "Дистрибутивы ОС/Linux с использованием Apache". secure1.securityspace.com . Архивировано из оригинала 2018-09-18 . Получено 2018-09-17 .
  6. ^ "Platform Specific Notes - Apache HTTP Server Version 2.4". httpd.apache.org . Архивировано из оригинала 2019-01-22 . Получено 2019-01-21 .
  7. ^ "Secure Web Server". vmssoftware.com . Архивировано из оригинала 2020-10-22 . Получено 2020-10-20 .
  8. ^ ab "Обновление до 2.4 с 2.2". Архивировано из оригинала 2021-05-10 . Получено 2021-05-12 . Поддержка платформы была удалена для BeOS, TPF и даже более старых платформ, таких как A/UX, Next и Tandem. Считалось, что они в любом случае были сломаны.
  9. ^ "Порт Apache EBCDIC - Apache HTTP Server версии 2.4". httpd.apache.org . Архивировано из оригинала 2019-02-27 . Получено 2019-08-16 .
  10. ^ "О проекте Apache HTTP Server - Проект Apache HTTP Server". httpd.apache.org . Получено 2024-02-08 .
  11. ^ Netcraft Market Share Архивировано 2010-05-20 на Wayback Machine для лучших серверов во всех доменах Август 1995 - сегодня (ежемесячное обновление)
  12. ^ "February 2009 Web Server Survey". Netcraft . 18 февраля 2009. Архивировано из оригинала 26 февраля 2009. Получено 29.03.2009 .
  13. ^ "Мартовское исследование веб-серверов 2022 г.". Netcraft News . 29 марта 2022 г. Архивировано из оригинала 28.05.2022 . Получено 18.06.2022 .
  14. ^ "Статистика использования веб-серверов". w3techs.com . Архивировано из оригинала 2023-07-25 . Получено 2022-06-18 .
  15. ^ "Apache Foundation". www.apache.org . Архивировано из оригинала 13 декабря 2021 г. . Получено 22 августа 2018 г. .
  16. ^ ""Trillions and Trillions Served" документальный фильм на Apache Software Foundation". TheApacheFoundation / Youtube. 2020. Архивировано из оригинала 22.11.2021.
  17. ^ «Основание доверия: построение будущего блокчейна: Брайан Белендорф». Long Now Foundation / YouTube. 2020-02-10. Архивировано из оригинала 2021-11-22.
  18. ^ "Информация о проекте Apache HTTP Server". 1997-04-15. Архивировано из оригинала 15 апреля 1997 года.
  19. ^ "Apache Server Frequently Asked Questions". Архивировано из оригинала 1997-01-06 . Получено 15 января 2017 .
  20. ^ Макмиллан, Роберт (15 апреля 2000 г.). "Apache Power". Linux Magazine . Архивировано из оригинала 28 января 2019 г.{{cite web}}: CS1 maint: unfit URL (link)
  21. ^ Клэберн, Томас (11.01.2023). «Коренные американцы просят Apache Foundation изменить название». The Register . Архивировано из оригинала 12.01.2023 . Получено 12.01.2023 .
  22. ^ Перди, Кевин (12.01.2023). «Коренная техническая группа просит Apache Foundation изменить свое название». Ars Technica . Архивировано из оригинала 12.01.2023 . Получено 12.01.2023 .
  23. ^ "Apache Docs". httpd.apache.org . Архивировано из оригинала 5 сентября 2018 г. Получено 22 августа 2018 г.
  24. ^ "Apache Web Server". webopedia.com . 23 марта 1998 г. Архивировано из оригинала 12 мая 2021 г. Получено 12 мая 2021 г.
  25. ^ "Учебник по Apache HTTP Server: файлы .htaccess". Apache.org. Архивировано из оригинала 2016-02-25 . Получено 2016-02-19 .
  26. ^ "mod_proxy". Apache.org. Архивировано из оригинала 2018-07-29 . Получено 2016-02-19 .
  27. ^ "mod_proxy_balancer". Apache.org. Архивировано из оригинала 2016-02-13 . Получено 2016-02-19 .
  28. ^ "Balancer Manager". Apache.org. Архивировано из оригинала 2016-03-04 . Получено 2016-02-19 .
  29. ^ "Аутентификация и авторизация". Apache.org. Архивировано из оригинала 2018-01-31 . Получено 2016-02-19 .
  30. ^ "mod_rewrite". Apache.org. Архивировано из оригинала 2016-02-13 . Получено 2016-02-19 .
  31. ^ "mod_headers". Apache.org. Архивировано из оригинала 2016-02-21 . Получено 2016-02-19 .
  32. ^ "mod_sed". Apache.org. Архивировано из оригинала 2016-03-04 . Получено 2016-02-19 .
  33. ^ "mod_substitute". Apache.org. Архивировано из оригинала 2016-03-04 . Получено 2016-02-19 .
  34. ^ "Учебник Apache httpd: Введение в серверные включения". Apache.org. Архивировано из оригинала 2016-02-18 . Получено 2016-02-19 .
  35. ^ "mod_usertrack". Apache.org. Архивировано из оригинала 2021-05-12 . Получено 2021-05-12 .
  36. ^ "Учебник Apache: Динамический контент с CGI". Apache.org. Архивировано из оригинала 2021-11-15 . Получено 2016-02-19 .
  37. ^ "Per-user web directorys". Apache.org. Архивировано из оригинала 2016-02-16 . Получено 2016-02-19 .
  38. ^ "Выражения в Apache HTTP Server". Apache.org. Архивировано из оригинала 2016-02-29 . Получено 2016-02-19 .
  39. ^ "mod_status". Apache.org. Архивировано из оригинала 2016-02-13 . Получено 2016-02-19 .
  40. ^ "Модуль Apache: mod_ftp". Apache.org. Архивировано из оригинала 2017-07-10 . Получено 2017-07-08 .
  41. ^ "Обслуживание статических файлов: сравнение Apache, Nginx, Varnish и G-WAN". Spoot! . 14 марта 2011 г. Архивировано из оригинала 24 апреля 2014 г. Получено 23 апреля 2014 г.
  42. ^ "worker - Apache HTTP Server Version 2.2". apache.org . Архивировано из оригинала 2021-05-10 . Получено 2021-05-12 .
  43. ^ "Apache httpd 2.4" (PDF) . Архивировано (PDF) из оригинала 2012-01-27 . Получено 2012-02-08 .
  44. ^ "Выбор прокси-сервера". 14 апреля 2014 г. Архивировано из оригинала 3 марта 2016 г. Получено 19 февраля 2016 г.
  45. ^ "Оценка пропускной способности Apache 2.4.1". 22 февраля 2012 г. Архивировано из оригинала 2016-03-02 . Получено 2016-02-19 .
  46. ^ "Производительность Apache 2.4 с событием MPM в сравнении с Nginx". eschrade.com . 3 января 2014 г. Архивировано из оригинала 13 марта 2014 г. Получено 13 марта 2014 г.
  47. ^ "Apache License, Version 2.0". Apache Software Foundation. Январь 2004. Архивировано из оригинала 2013-05-18 . Получено 2013-05-21 .
  48. ^ Бертон, Ричард Энтони. "FYI: Apache HTTP Server 2.0.49 Released". Группа новостей : alt.apache.configuration . Получено 16.02.2018 .
  49. ^ de Raadt, Theo (18 февраля 2004 г.). "Новая лицензия Apache". openbsd-misc (список рассылки) . Получено 21.05.2013 .
  50. ^ "Политика авторских прав". OpenBSD. Архивировано из оригинала 2017-11-13 . Получено 2013-05-12 .
  51. ^ "apache-httpd-openbsd-1.3.20140502p2 – улучшенная и защищенная версия Apache 1.3 для OpenBSD". Порты OpenBSD . Архивировано из оригинала 2015-03-02 . Получено 2014-12-28 .
  52. ^ Марвин, Роб (25 марта 2015 г.). «Внутри нового веб-сервера OpenBSD httpd». SD Times . Архивировано из оригинала 12 октября 2019 г. Получено 12 октября 2019 г.
  53. ^ "Руководство по обновлению OpenBSD: 5.1 до 5.2". openbsd.org . Архивировано из оригинала 2017-12-22 . Получено 2014-03-13 .
  54. ^ jj, ред. (2014-03-14). "Heads Up: Apache удален из базы". OpenBSD Journal . Архивировано из оригинала 2014-10-18 . Получено 2014-12-29 .
  55. ^ "Руководство по обновлению OpenBSD: 5.5 до 5.6". openbsd.org . Архивировано из оригинала 2014-12-22 . Получено 2014-12-29 .
  56. ^ "Объявление: Apache 1.3.0 выпущен!". 1998-06-06. Архивировано из оригинала 2018-12-11 . Получено 2015-01-06 .
  57. ^ "Apache HTTP Server 1.3.42 выпущен (финальный выпуск 1.3.x)". apache.org . Архивировано из оригинала 2015-03-11 . Получено 2015-01-06 .
  58. ^ "Официальный релиз: Apache 2.0.35 теперь GA". 2002-04-06. Архивировано из оригинала 2018-12-12 . Получено 2015-01-06 .
  59. ^ "[Объявление] Apache HTTP Server 2.0.65 выпущен". apache.org . Архивировано из оригинала 2015-07-28 . Получено 2015-01-06 .
  60. ^ "Apache HTTP Server 2.2.0 Released". 2005-12-01. Архивировано из оригинала 2018-12-12 . Получено 2015-01-06 .
  61. ^ "[Анонс] Apache HTTP Server 2.2.34 выпущен". apache.org . Архивировано из оригинала 2020-08-21 . Получено 2019-04-03 .
  62. ^ "[АНОНС] Выпущен Apache HTTP Server 2.4.1". 2012-02-21. Архивировано из оригинала 2021-02-12 . Получено 2015-07-17 .
  63. ^ "Apache HTTP Server 2.4.62 Released". apache.org . Получено 2017-10-25 .
  64. ^ Группа документации. "О проекте Apache HTTP Server - Проект Apache HTTP Server". apache.org . Архивировано из оригинала 2008-06-07 . Получено 2021-05-12 .
  65. ^ "Проект Apache HTTP Server Open Source на Ohloh. (nd). Ohloh, сеть с открытым исходным кодом. Получено 12 ноября 2012 г.". Архивировано из оригинала 9 марта 2012 г. Получено 8 февраля 2012 г.
  66. ^ "Глава 4. Apache HTTP-сервер". fedoraproject.org . Архивировано из оригинала 2012-11-25 . Получено 2012-12-03 .
  67. ^ Zdrnja, Bojan (21 июня 2009 г.). "Apache HTTP DoS tool mitigation". SANS Institute . Архивировано из оригинала 12 ноября 2021 г. . Получено 12 ноября 2021 г. .
  68. ^ "Slowloris HTTP DoS". Архивировано из оригинала 26 апреля 2015 г. Получено 26 июня 2009 г.{{cite web}}: CS1 maint: bot: original URL status unknown (link)
  69. ^ «mod_noloris: защита от DoS» . Мыльница Ника. Июль 2009 г. Архивировано из оригинала 8 октября 2011 г. Проверено 7 января 2012 г.
  70. ^ "mod_reqtimeout". Apache.org. Архивировано из оригинала 2013-07-03 . Получено 2013-07-03 .

Внешние ссылки