Hiawatha

Hiawatha Webserver
Тип Веб-сервер
Автор Хуго Лейсинк (Hugo Leisink)
Разработчик Хуго Лейсинк (Hugo Leisink)
Написана на C
Операционные системы POSIX, Кроссплатформенное программное обеспечение
Языки интерфейса Английский
Дата выпуска сентябрь 2002[1]
Аппаратные платформы Linux, Windows, Solaris, FreeBSD, OpenBSD, UNIX-подобная операционная система, AIX, HP-UX, QNX, OS X, Haiku[2]
Последняя версия 10.4
Репозиторий gitlab.com/hsleisink/hia…
Лицензия GPLv2
Сайт hiawatha-webserver.org

Hiawatha — веб-сервер, доступный для множества операционных систем. Разработка ведётся Хуго Лейсинком (Hugo Leisink) с 2002 года[3].

История

Hiawatha был создан в январе 2002 в виде небольшого веб-сервера, способного работать на серверах с устаревшим аппаратным обеспечением. Изначально он был написан для Интернет-серверов в студенческих общежитиях в городе Делфт, Южная Голландия, Нидерланды. Автор, будучи студентом в области компьютерных наук с особым интересом в сфере информационной безопасности, включил в разрабатываемый веб-сервер различные экспериментальные функции безопасности, многие из которых являются уникальными и со временем доказали свою полезность. Автор говорил:

Мне давно известно об уязвимостях, существующих в других серверах. Вот что меня беспокоит: время исполнения CGI скриптов. CGI процесс на других серверах может исполняться вечно. Один-единственный CGI скрипт может подвергнуть сервер DoS-атаке. Системному администратору приходится прерывать скрипт. А как насчет клиента (или хакера), который пытается подобрать пароли для HTTP аутентификации? Эти проблемы воодушевили меня к созданию Hiawatha с настройками для максимального времени отправки запроса, максимального времени исполнения CGI скриптов, блокирования клиентов, и т. д. По моему мнению, каждый сервер должен обладать такими функциями.

Номер журнала Linux Magazine за январь 2009 года содержал отдельную статью о веб-сервере Hiawatha.

Наиболее важные релизы:

  • 1.0: Сентябрь 2002 года. Базовый, но функциональный веб-сервер.
  • 2.0: Март 2004 года. Использование многопоточности вместо системного вызова fork.
  • 3.0: Сентябрь 2004 года. Поддержка SSL.
  • 4.0: Декабрь 2005 года. Добавлен CGI-wrapper для повышенной безопасности.
  • 5.0: Октябрь 2006 года. Поддержка FastCGI для повышения скорости CGI.
  • 5.2: Ноябрь 2006 года. Первичная интеграция в систему портов FreeBSD начиная с версии 5.2 в декабре 2006 года[4], в коллекцию портов OpenBSD начиная с версии 5.7 в марте 2007 года[5].
  • 5.12: Август 2007 года. Поддержка URL rewriting.
  • 6.0: Октябрь 2007 года. Поддержка IPv6.
  • 6.6: Апрель 2008 года. Поддержка XSLT.
  • 6.10: Октябрь 2008 года. Добавлена функция предупреждения межсайтовой подделки запроса.
  • 7.0: Февраль 2010 года. Поддержка удаленного мониторинга.
  • 8.0: Январь 2012 года. Autoconf заменен на CMake, OpenSSL заменен на PolarSSL.
  • 9.0: Март 2013 года. Клиенты обслуживаются через пул потоков вместо создания потоков на лету.

Функциональные возможности

В веб-сервере Hiawatha реализованы все важнейшие функции современного веб-сервера, такие как:

Hiawatha содержит множество функций безопасности, которых нет в других веб-серверах, такие как предотвращение внедрения SQL-кода, межсайтового скриптинга (XSS), межсайтовой подделки запроса(CSRF), защита от DoS-атак, контроль ссылок на внешние изображения, блокирование потенциальных взломщиков, ограничение времени выполнения CGI приложений[6]. Автор работал над поддержкой RFC3546, но из-за недостатка документации по OpenSSL это не удавалось реализовать. Все же, поддержка RFC3546 была включена начиная с версии 8.6, с использованием библиотеки PolarSSLv1.2.

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

Хотя основное внимание при разработке веб-сервера уделялось вопросам безопасности, Hiawatha показывает хорошие результаты в скорости и производительности. Согласно тесту производительности, проведенному в рамках независимого исследования SaltwaterC, Hiawatha опережает другие программы в отдаче статического контента[7]. Hiawatha поддерживает балансируемый FastCGI и имеет собственную утилиту PHP-FastCGI utility, хотя последняя устарела и была замещена утилитой FastCGI Process Manager (PHP-FPM)[8]. Это позволяет быстро и масштабируемо обслуживать динамичный контент.

Примечания

  1. https://www.hiawatha-webserver.org/about
  2. Hiawatha on Haiku OS. Дата обращения: 25 мая 2014. Архивировано 11 мая 2013 года.
  3. About page of Hiawatha webserver. Дата обращения: 25 мая 2014. Архивировано 5 июля 2014 года.
  4. FreeBSD Ports of Hiawatha. Дата обращения: 25 мая 2014. Архивировано 15 мая 2014 года.
  5. OpenBSD Ports of Hiawatha. Дата обращения: 25 мая 2014. Архивировано 29 декабря 2011 года.
  6. List of features. Дата обращения: 25 мая 2014. Архивировано 29 мая 2014 года.
  7. PHP_web_serving_study Архивировано 26 апреля 2012 года.
  8. Release notes for Hiawatha 8.7 — Hiawatha webserver. Дата обращения: 25 мая 2014. Архивировано 16 января 2014 года.

Ссылки

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.