Эта статья требует дополнительных ссылок для проверки . ( март 2009 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) |
Веб - сервер является программное обеспечение сервера или системы из одного или нескольких компьютеров , предназначенных для работы данного программного обеспечения, которое может удовлетворить клиента HTTP запросы на общественном World Wide Web или также на частных локальных сетей и глобальных сетей . [1]
Веб-сервер может управлять клиентскими HTTP- запросами веб-ресурсов, связанных с одним или несколькими его настроенными / обслуживаемыми веб-сайтами .
Веб-сервер обычно принимает входящие сетевые HTTP- запросы и отправляет исходящие HTTP- ответы (по одному на каждый обработанный запрос) вместе с веб-содержимым через прозрачные и / или зашифрованные TCP / IP- соединения (см. Также: HTTPS ), которые запускаются клиентскими пользовательскими агентами. перед отправкой своего HTTP-запроса (ов). Скоро веб-серверы смогут обрабатывать другие типы транспортных протоколов для HTTP-запросов.
Основная функция веб-сервера - хранить, обрабатывать и доставлять веб-страницы клиентам . [2] Эта цитата была хороша несколько десятилетий назад, но в настоящее время лучше использовать термины веб-содержимого и / или веб-ресурсов вместо веб-страниц, потому что первые охватывают все виды содержимого, которое может быть доставлено клиентам с помощью веб-сервера. . Примеры веб - содержимого может быть HTML - файлы , XHTML - файлы , графические файлы, таблицы стилей , скрипты , другие типы общих файлов , которые могут быть загружены клиентами и т.д.
Пользовательский агент , обычно представляет собой веб - браузер или веб - гусеничные , инициирует связь, сделав запрос для конкретного ресурса с использованием HTTP и сервер отвечает содержание данного ресурса или сообщения об ошибке , если не в состоянии сделать это. Ресурс обычно представляет собой реальный файл во вторичном хранилище сервера , но это не обязательно так и зависит от того, как реализованы веб-сервер и веб-сайт .
Хотя основная функция заключается в обслуживании контента, полная реализация HTTP также включает способы получения контента от клиентов. Эта функция используется для отправки веб-форм , включая загрузку файлов.
Многие общие веб - серверы также поддерживают один или несколько интерфейсов сервера , используемые для создания динамического контента с помощью веб - приложений . Используемые реализации могут варьироваться от сценариев на стороне сервера (т. Е. Языков сценариев ) до внешних прикладных программ. Это означает, что поведение веб-приложения может быть определено в отдельных файлах (сценариях или программах), в то время как фактическое программное обеспечение сервера остается неизменным. Обычно эта функция используется для динамического создания HTML-документов или другого типа содержимого («на лету»), в отличие от возврата статических документов . Первый в основном используется для получения или изменения информации из баз данных.. Последний обычно намного быстрее и легче кэшируется . По соображениям производительности обычно веб-сайты с динамическим содержимым также по возможности имеют статическое содержимое.
Веб-серверы часто можно найти встроенными в такие устройства, как принтеры , маршрутизаторы , веб-камеры и обслуживающие только локальную сеть . Затем встроенный веб-сервер может использоваться как часть системы для мониторинга или администрирования рассматриваемого устройства. Обычно это означает, что на клиентском компьютере не нужно устанавливать дополнительное программное обеспечение, поскольку требуется только веб-браузер (который сейчас входит в состав большинства операционных систем ).
История [ править ]
В марте 1989 года сэр Тим Бернерс-Ли предложил своему работодателю в ЦЕРН новый проект с целью облегчить обмен информацией между учеными с помощью гипертекстовой системы. [3] [4] В результате проекта Бернерс-Ли в 1990 году написал две программы:
- Веб - браузер под названием WorldWideWeb [5]
- Первый в мире веб-сервер, позже известный как 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, указанный клиентом, относительно корневого каталога целевого веб-сайта.
Рассмотрим следующий 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, [6] 503, [7] 504, [8] 408 или даже 404 , что не соответствует условиям перегрузки. [9]
- Веб-сервер отклоняет или сбрасывает (прерывает) 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 обычно требуют меньше ресурсов ОС, иногда им может потребоваться больше ресурсов ОЗУ и ЦП, используемых программным обеспечением веб-сервера (из-за зашифрованных данных, сжатия данных на лету и других деталей реализации) .
[ править ]
Февраль 2019 [ править ]
Ниже приведены последние статистические данные о рыночной доле всех сайтов ведущих веб-серверов в Интернете по данным W3Techs Использование веб-серверов для веб-сайтов .
Товар | Продавец | Процентов |
---|---|---|
Apache | Apache | 44,3% |
nginx | NGINX, Inc. | 41,0% |
IIS | Microsoft | 8,9% |
Веб-сервер LiteSpeed | LiteSpeed Технологии | 3,9% |
GWS | 0,9% |
Все остальные веб-серверы используются менее чем 1% веб-сайтов.
Июль 2018 [ править ]
Ниже приведены последние статистические данные о рыночной доле всех сайтов ведущих веб-серверов в Интернете по данным W3Techs Использование веб-серверов для веб-сайтов .
Товар | Продавец | Процентов |
---|---|---|
Apache | Apache | 45,9% |
nginx | NGINX, Inc. | 39,0% |
IIS | Microsoft | 9,5% |
Веб-сервер LiteSpeed | LiteSpeed Технологии | 3,4% |
GWS | 1,0% |
Все остальные веб-серверы используются менее чем 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 - наиболее часто используемые веб-серверы во всемирной паутине. [10] [11]
См. Также [ править ]
- Сервер (вычисления)
- Сервер приложений
- Сравнение программного обеспечения веб-сервера
- HTTP-сжатие
- Веб-приложение с открытым исходным кодом
- Вариант объекта
- Виртуальный хостинг
- Услуги веб-хостинга
- Веб-контейнер
- Веб-прокси
- веб-сервис
- Стандартные интерфейсы шлюза веб-сервера, используемые для динамического содержимого :
- CGI
- SCGI
- FastCGI
- Несколько других интерфейсов веб-сервера (специфичных для сервера или языка), используемых для динамического содержимого :
- SSI (редко используемые статические HTML-документы, содержащие директивы SSI, интерпретируются серверным программным обеспечением для включения небольших динамических данных на лету, когда страницы обслуживаются, например, дату и время, другое статическое содержимое файла и т. Д.)
- SAPI , ISAPI , NSAPI
- Интерфейс шлюза веб-сервера PSGI Perl
- Интерфейс шлюза веб-сервера WSGI Python
- Rack Rack Интерфейс шлюза веб-сервера
- Интерфейс шлюза веб-сервера JSGI JavaScript
- Сервлет Java , страницы JavaServer
- Активные серверные страницы , ASP.NET
Ссылки [ править ]
- ^ Нэнси Дж. Йегер; Роберт Э. МакГрат (1996). Технология веб-сервера . Google Книги . ISBN 1-55860-376-X. Проверено 22 января 2021 года .
- ^ Патрик, Killelea (2002). Настройка производительности Интернета (2-е изд.). Пекин: О'Рейли. п. 264. ISBN 059600172X. OCLC 49502686 .
- ^ Zolfagharifard, Ellie (24 ноября 2018). « « Отец Интернета »сэр Тим Бернерс-Ли о своем плане борьбы с фальшивыми новостями» . Телеграф . ISSN 0307-1235 . Дата обращения 1 февраля 2019 .
- ^ "История компьютеров и вычислительной техники, Интернета, рождения, Всемирной паутины Тима Бернерса-Ли" . history-computer.com . Дата обращения 1 февраля 2019 .
- ^ Маколей, Том. «Какие веб-серверы с открытым исходным кодом являются лучшими?» . ComputerworldUK . Дата обращения 1 февраля 2019 .
- ^ Фишер, Тим; Lifewire. «Получена ошибка 502 Bad Gateway? Вот что делать» . Lifewire . Дата обращения 1 февраля 2019 .
- ^ Фишер, Тим; Lifewire. «Получение ошибки 503 Service Unavailable? Вот что делать» . Lifewire . Дата обращения 1 февраля 2019 .
- ^ "Что такое 502 плохой шлюз и как его исправить?" . ЭТО ПРО . Дата обращения 1 февраля 2019 .
- ^ Справочник по цифровой криминалистике и расследованию . Кейси, Эоган., Алтеида, Кори. Берлингтон, Массачусетс: Academic Press. 2010. с. 451. ISBN. 9780080921471. OCLC 649907705 .CS1 maint: другие ( ссылка )
- ↑ Воган-Николс, Стивен Дж. «Конкурент веб-серверов Apache и IIS, NGINX, быстро растет» . ZDNet . Дата обращения 1 февраля 2019 .
- ^ Хади, Нахари (2011). Безопасность интернет-коммерции: дизайн и разработка . Крутц, Рональд Л. Индианаполис: паб Wiley. ISBN 9781118098899. OCLC 757394142 .
Внешние ссылки [ править ]
- Mozilla: что такое веб-сервер?
- Netcraft: новости об исследовании веб-серверов