Веб сервер - Web server

Внутри и спереди сервера Dell PowerEdge - компьютера, предназначенного для установки в стойку .
Для веб-сайта с высокой посещаемостью можно использовать несколько веб-серверов; здесь серверы Dell устанавливаются вместе и используются для Фонда Викимедиа .

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

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

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

История

Первый в мире веб-сервер, компьютерная рабочая станция NeXT с Ethernet, 1990 год. На этикетке на корпусе написано: «Эта машина является сервером. НЕ ВКЛЮЧАЙТЕ ЕГО!»
Sun's Cobalt Qube 3 - компьютерный сервер (2002, снято с производства)

В марте 1989 года сэр Тим Бернерс-Ли предложил своему работодателю в ЦЕРН новый проект с целью облегчить обмен информацией между учеными с помощью гипертекстовой системы. В результате проекта Бернерс-Ли в период с 1990 по 1991 год написал несколько программных библиотек и три программы:

  • WWWNeXTStepEditor: редактор веб-браузера , также называемый WorldWideWeb ;
  • WWWLineMode: портативный веб-браузер в линейном режиме, используемый для исследования первого веб-сайта;
  • WWWDaemon: веб-сервер , позже известный как CERN httpd , работающий на компьютере NeXTSTEP .

Первый веб-сайт будущей всемирной паутины размещался на компьютере NeXTSTEP, которым управлял Тим Бернер-Ли.

В 1991 году (август) Тим Бернер-Ли объявил о рождении технологии WWW и призвал ученых принять и разработать ее.

В 1991 году (декабрь) первый веб-сервер за пределами Европы был установлен в SLAC (США).

В 1991–1992 годах ЦЕРН активно продвигал принятие этой новой архитектуры среди ученых, писая о ней в своих информационных бюллетенях и проводя презентации / живые демонстрации в различных институтах и ​​университетах.

В 1993 году «ЦЕРН опубликовал публичное заявление, в котором говорилось, что три компонента веб-программного обеспечения (базовый клиент линейного режима, базовый сервер и библиотека общего кода) были помещены в общественное достояние».

В 1994 году «Тим Бернерс-Ли покинул ЦЕРН, чтобы создать Консорциум Всемирной паутины (W3C) в Массачусетском технологическом институте » (в сотрудничестве с ЦЕРН и DARPA), чтобы регулировать дальнейшее развитие многих задействованных технологий ( HTTP , HTML и т. Д.) Через процесс стандартизации.

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

В те ранние годы новые реализации как веб-браузеров, так и веб-серверов (например, NCSA HTTPd , Apache HTTPd , AOLserver , Netscape Enterprise Server , IIS и т. Д.) Были разработаны различными организациями, в том числе частными, что положило начало острой конкуренции, которая с тех пор вырос в геометрической прогрессии (см. также « Доля рынка программного обеспечения для веб-серверов» ).

Основные общие черты

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

  • HTTP : поддержка одной или нескольких версий протокола HTTP для отправки версий ответов HTTP, совместимых с версиями клиентских HTTP-запросов, например HTTP / 1.0, HTTP / 1.1 плюс, если доступно, HTTP / 2 , HTTP / 3 ;
  • Ведение журнала : обычно веб-серверы также имеют возможность регистрировать некоторую информацию о клиентских запросах и ответах сервера для файлов журнала в целях безопасности и статистики.

Несколько других популярных функций (лишь очень небольшой выбор):

Перевод пути

Веб-серверы могут отображать компонент пути унифицированного указателя ресурсов (URL) в:

  • ресурс локальной файловой системы (для статических запросов);
  • внутреннее или внешнее имя программы (для динамических запросов).

Для статического запроса путь URL, указанный клиентом, относительно корневого каталога целевого веб-сайта.

Рассмотрим следующий URL в том виде, в каком он будет запрошен клиентом по HTTP:

http://www.example.com/path/file.html

Пользовательский агент клиента преобразует его в соединение сwww.example.comсо следующим запросом HTTP /1.1:

GET /path/file.html HTTP/1.1
Host: www.example.com
Connection: keep-alive

Веб-сервер на www.example.comдобавит указанный путь к пути к корневому каталогу (Host) веб-сайта. На сервере Apache это обычно/ главная / www / сайт(на машинах Unix обычно/ var / www / website). Результатом является ресурс локальной файловой системы:

/home/www/www.example.com/path/file.html

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

Веб-серверы в режиме ядра и в пользовательском режиме

Программное обеспечение веб-сервера может быть встроено в ядро ОС или в пользовательское пространство (как и другие обычные приложения).

Веб-серверы, работающие в режиме ядра, могут иметь прямой доступ к ресурсам ядра, поэтому теоретически они могут быть быстрее, чем серверы, работающие в пользовательском режиме; в любом случае есть недостатки в работе веб-сервера в режиме ядра, например: трудности в разработке ( отладке ) программного обеспечения, тогда как критические ошибки времени выполнения могут привести к серьезным проблемам в ядре ОС.

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

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

Выступления

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

Для программного обеспечения веб-сервера основные ключевые статистические данные о производительности (измеренные при различной нагрузке клиентов и запросов на каждого клиента):

  • количество максимальных запросов в секунду (RPS, аналогичноQPS, в зависимости от версии и конфигурации HTTP, типа HTTP-запросов и т. д.);
  • время отклика с задержкой в ​​сети (обычно в миллисекундах) для каждого нового клиентского запроса;
  • пропускная способность в байтах в секунду (в зависимости от размера файла, кэшированного или некэшированного содержимого, доступной пропускной способности сети, типа используемого протокола HTTP и т. д.).

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

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

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

Пределы нагрузки

Веб-сервер (установка программы) обычно имеет заранее определенные ограничения нагрузки, поскольку он может обрабатывать только ограниченное количество одновременных клиентских подключений (обычно от 2 до нескольких десятков тысяч для каждого активного процесса веб-сервера, см. Также проблему C10k и C10M ), и он может обслуживать только определенное максимальное количество запросов в секунду в зависимости от:

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

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

Причины перегрузки

В любой момент веб-серверы могут быть перегружены из-за:

  • Избыточный законный веб-трафик. Тысячи или даже миллионы клиентов подключаются к сайту за короткий промежуток времени, например, эффект Slashdot ;
  • Распределенные атаки типа «отказ в обслуживании» . Атака отказа в обслуживании (DoS-атака) или распределенная атака типа «отказ в обслуживании» (DDoS-атака) - это попытка сделать компьютер или сетевой ресурс недоступным для предполагаемых пользователей;
  • Компьютерные черви, которые иногда вызывают аномальный трафик из-за миллионов зараженных компьютеров (не координируются между ними)
  • Черви XSS могут вызывать высокий трафик из-за миллионов зараженных браузеров или веб-серверов;
  • Интернет-боты. Трафик не фильтруется / не ограничивается на больших сайтах с очень небольшими ресурсами (пропускной способностью и т. Д.);
  • Интернет (сеть) замедляется (из-за потери пакетов и т. Д.), Поэтому запросы клиентов обслуживаются медленнее, а количество подключений увеличивается настолько, что достигаются ограничения сервера;
  • Частичная недоступность веб-серверов ( компьютеров ). Это может произойти из-за необходимого или срочного обслуживания или обновления, сбоев оборудования или программного обеспечения, сбоев серверной части (например, базы данных ) и т. Д .; в этих случаях оставшиеся веб-серверы могут получить слишком много трафика и стать перегруженными.

Симптомы перегрузки

Симптомы перегруженного веб-сервера:

  • Запросы обслуживаются с (возможно, длительными) задержками (от 1 секунды до нескольких сотен секунд).
  • Веб-сервер возвращает код ошибки HTTP , например 500, 502, 503, 504, 408 или даже прерывистый 404 .
  • Веб-сервер отклоняет или сбрасывает (прерывает) TCP- соединения, прежде чем он вернет какой-либо контент.
  • В очень редких случаях веб-сервер возвращает только часть запрошенного контента. Такое поведение можно считать ошибкой , даже если обычно возникает как симптом перегрузки.

Методы защиты от перегрузки

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

  • Настройка параметров ОС для аппаратных возможностей и использования.
  • Настройка параметров веб-сервера (ов) для повышения безопасности, производительности и т. Д.
  • Развертывание методов веб-кеширования (не только для статического содержимого, но, по возможности, и для динамического содержимого).
  • Управление сетевым трафиком с помощью:
  • Использование разных доменных имен и IP-адресов для обслуживания разного (статического и динамического) содержимого отдельными веб-серверами, например:
    • http://static.example.com
    • http://www.example.com
  • Использование разных доменных имен, IP-адресов и компьютеров для отделения больших файлов ( download.*) от файлов малого и среднего размера ( static.*) и от основного динамического сайта (возможно, где какое-то содержимое хранится в серверной базе данных ) ( www.*); идея состоит в том, чтобы иметь возможность полностью кэшировать файлы малого и среднего размера и эффективно обслуживать большие или огромные (более 10-1000 МБ) файлы (не влияя на производительность динамического сайта при большой нагрузке), используя разные настройки для каждого (группы) компьютеров веб-сервера, например:
    • http://download.example.com
    • http://static.example.com
    • http://www.example.com
  • Использование множества веб-серверов (программ) на компьютере, каждый из которых привязан к своей сетевой карте и IP-адресу .
  • Использование множества веб-серверов (компьютеров), которые сгруппированы вместе за балансировщиком нагрузки, так что они действуют или рассматриваются как один большой веб-сервер.
  • Добавление дополнительных аппаратных ресурсов (например, ОЗУ , быстрых дисков ) на каждый компьютер.
  • Использование более эффективных компьютерных программ для веб-серверов (т.е. программ, которые также используют методы нулевого копирования и т. Д.).
  • Использование наиболее эффективного интерфейса шлюза веб-сервера для обработки динамических запросов.
  • Использование других методов программирования и обходных путей , особенно если задействовано динамическое содержимое, для ускорения HTTP-ответов.
  • Использование последних эффективных версий HTTP (например, помимо использования обычного HTTP / 1.1 также путем включения HTTP / 2 и, возможно, HTTP / 3, когда доступное программное обеспечение веб-сервера имеет надежную поддержку для последних двух протоколов), чтобы значительно сократить количество TCP / IP-соединения, запущенные каждым клиентом, и размер передаваемых данных (из-за более компактного представления заголовков HTTP, сжатия данных и т. Д.); в любом случае, даже если новые протоколы HTTP (2 и 3) обычно генерируют меньше сетевого трафика для каждого запроса / ответа, им может потребоваться больше ресурсов ОС (то есть ОЗУ и ЦП), используемых программным обеспечением веб-сервера (из-за зашифрованных данных , сжатия данных на муха и другие детали реализации) .

Рыночная доля

ЛАМПА (комплект программного обеспечения) (здесь дополнительно с Squid ), состоящий исключительно из свободного и открытого программного обеспечения , является высокая производительность и решение высокой доступности для тяжелых условий эксплуатации для враждебной среды
Диаграмма:
Рыночная доля всех сайтов основных веб-серверов 2005–2018 гг.

Февраль 2021 г.

Ниже приведены последние статистические данные о рыночной доле всех сайтов ведущих веб-серверов в Интернете по данным опроса веб-серверов Netcraft за февраль 2021 года .

Продукт Продавец Процентов
nginx NGINX, Inc. 34,54%
Apache Apache 26,32%
IIS Microsoft 6.5%
OpenResty Фонд программного обеспечения OpenResty 6,36%
Сервер Cloudflare Cloudflare, Inc. 5,0%

Все остальные веб-серверы используются менее чем 5% веб-сайтов.

Февраль 2020 г.

Ниже приведены последние статистические данные о рыночной доле всех сайтов ведущих веб-серверов в Интернете по данным опроса веб-серверов Netcraft за февраль 2020 года .

Продукт Продавец Процентов
nginx NGINX, Inc. 36,48%
Apache Apache 24,5%
IIS Microsoft 14,21%
OpenResty Фонд программного обеспечения OpenResty 4,00%
GWS Google 3,18%
Сервер Cloudflare Cloudflare, Inc. 3,0%

Все остальные веб-серверы используются менее чем 3% веб-сайтов.

Февраль 2019 г.

Ниже приведены последние статистические данные о рыночной доле всех сайтов ведущих веб-серверов в Интернете по данным опроса веб-серверов Netcraft за февраль 2019 года .

Продукт Продавец Процентов
IIS Microsoft 28,42%
Apache Apache 26,16%
nginx NGINX, Inc. 25,34%
GWS Google 1,66%

Все остальные веб-серверы используются менее чем 1% веб-сайтов.

Июль 2018 г.

Ниже приведены последние статистические данные о рыночной доле всех сайтов ведущих веб-серверов в Интернете по данным опроса веб-серверов Netcraft за февраль 2018 года .

Продукт Продавец Процентов
IIS Microsoft 34,50%
Apache Apache 27,45%
nginx NGINX, Inc. 24,32%
GWS Google 1,20%

Все остальные веб-серверы используются менее чем 1% веб-сайтов.

Февраль 2017 г.

Ниже приведены последние статистические данные о рыночной доле всех сайтов ведущих веб-серверов в Интернете по данным опроса веб-серверов Netcraft за февраль 2017 года .

Продукт Продавец Январь 2017 г. Процентов Февраль 2017 г. Процентов Изменять Цвет диаграммы
IIS Microsoft 821 905 283 45,66% 773 552 454 43,16% -2,50 красный
Apache Apache 387 211 503 21,51% 374 297 080 20,89% -0,63 чернить
nginx NGINX, Inc. 317 398 317 17,63% 348 025 788 19,42% 1,79 зеленый
GWS Google 17 933 762 1,00% 18 438 702 1,03% 0,03 синий

Февраль 2016 г.

Ниже приведены последние статистические данные о рыночной доле всех сайтов ведущих веб-серверов в Интернете по данным опроса веб-серверов Netcraft за февраль 2016 года .

Продукт Продавец Январь 2016 Процентов Февраль 2016 г. Процентов Изменять Цвет диаграммы
Apache Apache 304 271 061 33,56% 306 292 557 32,80% 0,76 чернить
IIS Microsoft 262 471 886 28,95% 278 593 041 29,83% 0,88 красный
nginx NGINX, Inc. 141 443 630 15,60% 137 459 391 16,61% -0,88 зеленый
GWS Google 20 799 087 2,29% 20 640 058 2,21% -0,08 синий

Apache, IIS и Nginx - наиболее часто используемые веб-серверы во всемирной паутине.

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

использованная литература

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