Веб - сервер является компьютерным программным обеспечением и аппаратные средства , которые базовые принимают запросы через HTTP , то сетевой протокол создана для распространения веб - страниц , [1] или его безопасный вариант HTTPS . Пользовательский агент , обычно представляет собой веб - браузер или веб - гусеничные , инициирует связь, сделав запрос для конкретного ресурса с использованием HTTP, а сервер отвечает с содержанием этого ресурса или сообщениями об ошибке . Сервер также может принимать и хранить ресурсы, отправленные пользовательским агентом, если это настроено.
Сервер может быть отдельным компьютером или даже встроенной системой, такой как маршрутизатор со встроенным интерфейсом конфигурации, но веб-сайты с высокой посещаемостью обычно запускают веб-серверы на множестве компьютеров, предназначенных для обработки большого количества запросов документов, мультимедийных файлов. и интерактивные скрипты. Ресурс, отправленный с веб-сервера, может быть уже существующим файлом, доступным серверу, или он может быть сгенерирован во время запроса другой программой, которая взаимодействует с серверной программой. Первый часто быстрее и легче кэшируется для повторяющихся запросов, в то время как последний поддерживает более широкий спектр приложений. Веб-сайты, обслуживающие сгенерированный контент, обычно по возможности включают сохраненные файлы.
Такие технологии, как REST и SOAP , которые используют HTTP в качестве основы для общего взаимодействия между компьютерами, расширили применение веб-серверов далеко за пределы их первоначальной цели обслуживания страниц, удобочитаемых человеком.
История
В марте 1989 года сэр Тим Бернерс-Ли предложил своему работодателю в ЦЕРН новый проект с целью облегчить обмен информацией между учеными с помощью гипертекстовой системы. [2] [3] В результате проекта Бернерс-Ли в 1990 году написал две программы:
- Веб - браузер под названием WorldWideWeb [4]
- Первый в мире веб-сервер, позже известный как CERN httpd , работающий на NeXTSTEP
В период с 1991 по 1994 год простота и эффективность ранних технологий, используемых для просмотра и обмена данными через всемирную паутину, помогла перенести их на множество различных операционных систем и распространить их использование среди научных организаций и университетов, а затем и в отрасли.
В 1994 году Бернерс-Ли решил создать Консорциум Всемирной паутины (W3C), чтобы регулировать дальнейшее развитие многих задействованных технологий ( HTTP , HTML и т. Д.) Посредством процесса стандартизации.
Основные общие черты
Хотя программы веб-серверов различаются по способу реализации, большинство из них предлагают следующие основные общие функции.
- HTTP : поддержка одной или нескольких версий протокола HTTP для отправки версий ответов HTTP, совместимых с версиями клиентских HTTP-запросов, например HTTP / 1.0, HTTP / 1.1 плюс, если доступно, HTTP / 2 , HTTP / 3 ;
- Ведение журнала : обычно веб-серверы также имеют возможность регистрировать некоторую информацию о запросах клиентов и ответах сервера для файлов журнала в целях безопасности и статистики.
Вот несколько других популярных функций (лишь очень небольшой выбор):
- Аутентификация , дополнительная поддержка запроса авторизации (запрос имени пользователя и пароля ) перед предоставлением доступа к некоторым или всем ресурсам веб-сайта.
- Поддержка больших файлов , чтобы иметь возможность обслуживать файлы, размер которых превышает 2 ГБ в 32-битной ОС .
- Регулирование полосы пропускания , чтобы ограничить скорость ответов контента, чтобы не перегружать сеть и иметь возможность обслуживать больше клиентов.
- Виртуальный хостинг , позволяющий обслуживать множество веб-сайтов ( доменных имен ), используя только один IP-адрес .
Перевод пути
Веб-серверы могут отображать компонент пути унифицированного указателя ресурсов (URL) в:
- Ресурс локальной файловой системы (для статических запросов)
- Внутреннее или внешнее имя программы (для динамических запросов)
Для статического запроса путь URL, указанный клиентом, относительно корневого каталога целевого веб-сайта. [4]
Рассмотрим следующий URL в том виде, в каком он будет запрошен клиентом по HTTP:
http://www.example.com/path/file.html
Пользовательский агент клиента преобразует его в соединение сwww.example.comсо следующим запросом HTTP /1.1:
ПОЛУЧИТЬ /path/file.html HTTP / 1.1Хост: www.example.com
Веб-сервер на www.example.comдобавит указанный путь к пути к корневому каталогу (Host) веб-сайта. На сервере Apache это обычно/ главная / www / сайт(на машинах Unix обычно/ var / www / website). Результатом является ресурс локальной файловой системы:
/home/www/www.example.com/path/file.html
Затем веб-сервер считывает файл , если он существует, и отправляет ответ клиентскому веб-браузеру. Ответ будет описывать содержимое файла и содержать сам файл, либо будет возвращено сообщение об ошибке, в котором говорится, что файл не существует или недоступен.
Веб-серверы в режиме ядра и в пользовательском режиме
Программное обеспечение веб-сервера может быть встроено в ядро ОС или в пользовательское пространство (как и другие обычные приложения).
Веб-серверы, работающие в режиме ядра, могут иметь прямой доступ к ресурсам ядра, поэтому теоретически они могут быть быстрее, чем серверы, работающие в пользовательском режиме; в любом случае есть недостатки в работе веб-сервера в режиме ядра, например: трудности в разработке ( отладке ) программного обеспечения, тогда как критические ошибки времени выполнения могут привести к серьезным проблемам в ядре ОС.
Веб-серверы, работающие в пользовательском режиме, должны запрашивать у системы разрешение на использование большего объема памяти или ресурсов ЦП. Эти запросы к ядру не только требуют времени, но и не всегда удовлетворяются, поскольку система резервирует ресурсы для собственного использования и несет ответственность за совместное использование аппаратных ресурсов со всеми другими запущенными приложениями. Выполнение в пользовательском режиме также может означать бесполезные буферные копии, что является еще одним ограничением для веб-серверов пользовательского режима.
В настоящее время почти все программное обеспечение веб-сервера выполняется в пользовательском режиме (поскольку многие из вышеперечисленных небольших недостатков были преодолены за счет более быстрого оборудования, новых версий ОС и нового программного обеспечения веб-сервера). См. Также сравнение программного обеспечения веб-серверов, чтобы узнать, какие из них работают в режиме ядра или в пользовательском режиме (также называемом пространством ядра или пользовательским пространством).
Выступления
Чтобы улучшить взаимодействие с пользователем, веб-серверы должны быстро (как можно скорее) отвечать на запросы клиентов; если ответ содержимого не регулируется (конфигурацией) для некоторых типов файлов (например, больших файлов и т. д.), также необходимо как можно скорее отправить содержимое возвращаемых данных (высокая скорость передачи).
Для программного обеспечения веб-сервера основные ключевые статистические данные о производительности (измеренные при различной нагрузке клиентов и запросов на каждого клиента):
- количество максимальных запросов в секунду (RPS, аналогичноQPS, в зависимости от версии и конфигурации HTTP, типа HTTP-запросов и т. д.);
- время отклика с задержкой в сети (обычно в миллисекундах) для каждого нового клиентского запроса;
- пропускная способность в байтах в секунду (в зависимости от размера файла, кэшированного или некэшированного содержимого, доступной пропускной способности сети, типа используемого протокола HTTP и т. д.).
Выше трех показателей производительности могут заметно отличаться в зависимости от количества активных TCP-соединений, поэтому четвертый статистический показатель - это уровень параллелизма, поддерживаемый веб-сервером при определенной конфигурации веб-сервера, типе ОС и доступных аппаратных ресурсах.
И последнее, но не менее важное: конкретная модель сервера, используемая для реализации программы веб-сервера, может влиять на производительность и уровень масштабируемости, который может быть достигнут при большой нагрузке или при использовании высокопроизводительного оборудования (много процессоров, дисков и т. Д.).
Производительность веб-сервера обычно оценивается с помощью одного или нескольких доступных инструментов автоматизированного нагрузочного тестирования .
Пределы нагрузки
Веб-сервер (установка программы) обычно имеет предопределенные пределы нагрузки, поскольку он может обрабатывать только ограниченное количество одновременных клиентских подключений (обычно от 1 до нескольких десятков тысяч для каждого активного процесса веб-сервера, см. Также проблему C10k и C10M. проблема), и он может обслуживать только определенное максимальное количество запросов в секунду в зависимости от:
- собственные настройки,
- средний тип HTTP-запроса,
- является ли запрошенный контент статическим или динамическим,
- кэшируется ли контент или сжимается ,
- средняя скорость сети между клиентами и веб-сервером,
- количество активных TCP- соединений,
- на аппаратные и программные ограничения или настройки операционной системы компьютера (ов) , на котором работает веб - сервер.
Когда веб-сервер приближается к своим пределам или превышает их, он перегружается и поэтому может перестать отвечать.
Причины перегрузки
В любой момент веб-серверы могут быть перегружены из-за:
- Избыточный законный веб-трафик. Тысячи или даже миллионы клиентов подключаются к сайту за короткий промежуток времени, например, эффект Slashdot ;
- Распределенные атаки типа «отказ в обслуживании» . Атака отказа в обслуживании (DoS-атака) или распределенная атака типа «отказ в обслуживании» (DDoS-атака) - это попытка сделать компьютер или сетевой ресурс недоступным для предполагаемых пользователей;
- Компьютерные черви, которые иногда вызывают аномальный трафик из-за миллионов зараженных компьютеров (не координируются между ними)
- Черви XSS могут вызывать высокий трафик из-за миллионов зараженных браузеров или веб-серверов;
- Интернет-боты. Трафик не фильтруется / не ограничивается на больших сайтах с очень небольшим количеством ресурсов (пропускная способность и т. Д.);
- Интернет (сеть) замедляется (из-за потери пакетов и т. Д.), Поэтому запросы клиентов обслуживаются медленнее, а количество подключений увеличивается настолько, что достигаются ограничения сервера;
- Частичная недоступность веб-серверов ( компьютеров ). Это может произойти из-за необходимого или срочного обслуживания или обновления, сбоев оборудования или программного обеспечения, сбоев серверной части (например, базы данных ) и т. Д .; в этих случаях оставшиеся веб-серверы могут получить слишком много трафика и стать перегруженными.
Симптомы перегрузки
Симптомы перегруженного веб-сервера:
- Запросы обслуживаются с (возможно, длительными) задержками (от 1 секунды до нескольких сотен секунд).
- Веб-сервер возвращает код ошибки HTTP , например 500, 502, [5] [6] 503, [7] 504, [8] 408 или даже прерывистый 404 .
- Веб-сервер отклоняет или сбрасывает (прерывает) TCP- соединения, прежде чем он вернет какой-либо контент.
- В очень редких случаях веб-сервер возвращает только часть запрошенного контента. Такое поведение можно считать ошибкой , даже если обычно возникает как симптом перегрузки.
Методы защиты от перегрузки
Чтобы частично преодолеть ограничения нагрузки выше среднего и предотвратить перегрузку, большинство популярных веб-сайтов используют общие методы, такие как:
- Управление сетевым трафиком с помощью:
- Межсетевые экраны для блокировки нежелательного трафика, поступающего из источников с плохими IP-адресами или имеющего плохие шаблоны;
- Менеджеры HTTP-трафика для отбрасывания, перенаправления или перезаписи запросов с плохими шаблонами HTTP ;
- Управление полосой пропускания и формирование трафика для сглаживания пиков использования сети;
- Развертывание методов веб-кеширования .
- Использование разных доменных имен или IP-адресов для обслуживания разного (статического и динамического) контента отдельными веб-серверами, например:
http://images.example.com
http://example.com
- Использование разных доменных имен или компьютеров для отделения больших файлов от файлов малого и среднего размера; идея состоит в том, чтобы иметь возможность полностью кэшировать файлы малого и среднего размера и эффективно обслуживать большие или огромные (более 10–1000 МБ) файлы с использованием различных настроек.
- Использование множества веб-серверов (программ) на компьютере, каждый из которых привязан к своей сетевой карте и IP-адресу .
- Использование множества веб-серверов (компьютеров), которые сгруппированы вместе за балансировщиком нагрузки, так что они действуют или рассматриваются как один большой веб-сервер.
- Добавление дополнительных аппаратных ресурсов (например, ОЗУ , дисков ) на каждый компьютер.
- Настройка параметров ОС для аппаратных возможностей и использования.
- Использование более эффективных компьютерных программ для веб-серверов и т. Д.
- Использование других обходных путей программирования , особенно если задействовано динамическое содержимое.
- Использование последних эффективных версий HTTP (например, помимо использования обычного HTTP / 1.1 также путем включения HTTP / 2 и, возможно, в ближайшем будущем, также и HTTP / 3, когда доступно программное обеспечение веб-сервера, имеющее надежную поддержку для последних двух протоколов), чтобы уменьшить lot количество TCP / IP-соединений, запущенных каждым клиентом, и размер передаваемых данных (из-за более компактного представления заголовков HTTP, сжатия данных и т. д.); в любом случае, даже если новые протоколы HTTP обычно требуют меньше ресурсов ОС, иногда им может потребоваться больше ресурсов ОЗУ и ЦП, используемых программным обеспечением веб-сервера (из-за зашифрованных данных, сжатия данных на лету и других деталей реализации) .
Февраль 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 | 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 | 1,66% |
Все остальные веб-серверы используются менее чем 1% веб-сайтов.
Июль 2018 г.
Ниже приведены последние статистические данные о доле рынка всех сайтов верхних веб - серверов в сети Интернет по Netcraft февраля 2018 года обследования веб - сервера .
Продукт | Продавец | Процентов |
---|---|---|
IIS | Microsoft | 34,50% |
Apache | Apache | 27,45% |
nginx | NGINX, Inc. | 24,32% |
GWS | 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 | 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 | 20 799 087 | 2,29% | 20 640 058 | 2,21% | -0,08 | синий |
Apache, IIS и Nginx - наиболее часто используемые веб-серверы во всемирной паутине. [9] [10]
Смотрите также
- Сервер (вычисления)
- Сервер приложений
- Сравнение программного обеспечения веб-сервера
- HTTP-сжатие
- Веб-приложение с открытым исходным кодом
- Вариант объекта
- Виртуальный хостинг
- Услуги веб-хостинга
- Веб-контейнер
- Веб-прокси
- веб-сервис
- Стандартные интерфейсы шлюза веб-сервера, используемые для динамического содержимого :
- CGI
- SCGI
- FastCGI
- Несколько других интерфейсов веб-сервера (специфичных для сервера или языка), используемых для динамического содержимого :
- SSI (редко используемые, статические HTML-документы, содержащие директивы SSI, интерпретируются серверным программным обеспечением для включения небольших динамических данных на лету, когда страницы обслуживаются, например, дата и время, другое статическое содержимое файла и т. Д.)
- SAPI , ISAPI , NSAPI
- Интерфейс шлюза веб-сервера PSGI Perl
- Интерфейс шлюза веб-сервера WSGI Python
- Rack Rack Интерфейс шлюза веб-сервера
- Интерфейс шлюза веб-сервера JSGI JavaScript
- Сервлет Java , страницы JavaServer
- Активные серверные страницы , ASP.NET
Рекомендации
- ^ Нэнси Дж. Йегер; Роберт Э. МакГрат (1996). Технология веб-сервера . ISBN 1-55860-376-X. Проверено 22 января 2021 года .
- ^ Золфагарифард, Элли (24 ноября 2018 г.). « « Отец Интернета »сэр Тим Бернерс-Ли о своем плане борьбы с фальшивыми новостями» . Телеграф . ISSN 0307-1235 . Дата обращения 1 февраля 2019 .
- ^ "История компьютеров и вычислительной техники, Интернета, рождения, Всемирной паутины Тима Бернерса-Ли" . history-computer.com . Дата обращения 1 февраля 2019 .
- ^ а б Маколей, Том. «Какие веб-серверы с открытым исходным кодом являются лучшими?» . ComputerworldUK . Дата обращения 1 февраля 2019 .
- ^ Фишер, Тим; Lifewire. «Получена ошибка 502 Bad Gateway? Вот что делать» . Lifewire . Дата обращения 1 февраля 2019 .
- ^ "Что такое 502 плохой шлюз и как его исправить?" . ЭТО ПРО . Дата обращения 1 февраля 2019 .
- ^ Фишер, Тим; Lifewire. «Получение ошибки 503 Service Unavailable? Вот что делать» . Lifewire . Дата обращения 1 февраля 2019 .
- ^ Фишер, Тим; Lifewire. «Получена ошибка тайм-аута шлюза 504? Вот что делать» . Lifewire . Дата обращения 1 февраля 2019 .
- ^ Воан-Николс, Стивен Дж. «Конкурент Apache и IIS, веб-сервер NGINX, быстро растет» . ZDNet . Дата обращения 1 февраля 2019 .
- ^ Хади, Нахари (2011). Безопасность интернет-коммерции: дизайн и разработка . Крутц, Рональд Л. Индианаполис: Wiley Pub. ISBN 9781118098899. OCLC 757394142 .
Внешние ссылки
- Mozilla: что такое веб-сервер?
- Netcraft: новости об исследовании веб-серверов