Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

Веб - сервер является программное обеспечение сервера или системы из одного или нескольких компьютеров , предназначенных для работы данного программного обеспечения, которое может удовлетворить клиента HTTP запросы на общественном World Wide Web или также на частных локальных сетей и глобальных сетей . [1]

Веб-сервер может управлять клиентскими HTTP- запросами веб-ресурсов, связанных с одним или несколькими его настроенными / обслуживаемыми веб-сайтами .

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

Основная функция веб-сервера - хранить, обрабатывать и доставлять веб-страницы клиентам . [2] Эта цитата была хороша несколько десятилетий назад, но в настоящее время лучше использовать термины веб-содержимого и / или веб-ресурсов вместо веб-страниц, потому что первые охватывают все виды содержимого, которое может быть доставлено клиентам с помощью веб-сервера. . Примеры веб - содержимого может быть HTML - файлы , XHTML - файлы , графические файлы, таблицы стилей , скрипты , другие типы общих файлов , которые могут быть загружены клиентами и т.д.

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

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

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

Многие общие веб - серверы также поддерживают один или несколько интерфейсов сервера , используемые для создания динамического контента с помощью веб - приложений . Используемые реализации могут варьироваться от сценариев на стороне сервера (т. Е. Языков сценариев ) до внешних прикладных программ. Это означает, что поведение веб-приложения может быть определено в отдельных файлах (сценариях или программах), в то время как фактическое программное обеспечение сервера остается неизменным. Обычно эта функция используется для динамического создания HTML-документов или другого типа содержимого («на лету»), в отличие от возврата статических документов . Первый в основном используется для получения или изменения информации из баз данных.. Последний обычно намного быстрее и легче кэшируется . По соображениям производительности обычно веб-сайты с динамическим содержимым также по возможности имеют статическое содержимое.

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

История [ править ]

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

В марте 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 обычно требуют меньше ресурсов ОС, иногда им может потребоваться больше ресурсов ОЗУ и ЦП, используемых программным обеспечением веб-сервера (из-за зашифрованных данных, сжатия данных на лету и других деталей реализации) .

Доля рынка [ править ]

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

Февраль 2019 [ править ]

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

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

Июль 2018 [ править ]

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

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

Февраль 2017 г. [ править ]

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

Февраль 2016 г. [ править ]

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

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

Ссылки [ править ]

  1. ^ Нэнси Дж. Йегер; Роберт Э. МакГрат (1996). Технология веб-сервера . Google Книги . ISBN 1-55860-376-X. Проверено 22 января 2021 года .
  2. ^ Патрик, Killelea (2002). Настройка производительности Интернета (2-е изд.). Пекин: О'Рейли. п. 264. ISBN 059600172X. OCLC  49502686 .
  3. ^ Zolfagharifard, Ellie (24 ноября 2018). « « Отец Интернета »сэр Тим Бернерс-Ли о своем плане борьбы с фальшивыми новостями» . Телеграф . ISSN 0307-1235 . Дата обращения 1 февраля 2019 . 
  4. ^ "История компьютеров и вычислительной техники, Интернета, рождения, Всемирной паутины Тима Бернерса-Ли" . history-computer.com . Дата обращения 1 февраля 2019 .
  5. ^ Маколей, Том. «Какие веб-серверы с открытым исходным кодом являются лучшими?» . ComputerworldUK . Дата обращения 1 февраля 2019 .
  6. ^ Фишер, Тим; Lifewire. «Получена ошибка 502 Bad Gateway? Вот что делать» . Lifewire . Дата обращения 1 февраля 2019 .
  7. ^ Фишер, Тим; Lifewire. «Получение ошибки 503 Service Unavailable? Вот что делать» . Lifewire . Дата обращения 1 февраля 2019 .
  8. ^ "Что такое 502 плохой шлюз и как его исправить?" . ЭТО ПРО . Дата обращения 1 февраля 2019 .
  9. ^ Справочник по цифровой криминалистике и расследованию . Кейси, Эоган., Алтеида, Кори. Берлингтон, Массачусетс: Academic Press. 2010. с. 451. ISBN. 9780080921471. OCLC  649907705 .CS1 maint: другие ( ссылка )
  10. Воган-Николс, Стивен Дж. «Конкурент веб-серверов Apache и IIS, NGINX, быстро растет» . ZDNet . Дата обращения 1 февраля 2019 .
  11. ^ Хади, Нахари (2011). Безопасность интернет-коммерции: дизайн и разработка . Крутц, Рональд Л. Индианаполис: паб Wiley. ISBN 9781118098899. OCLC  757394142 .

Внешние ссылки [ править ]

  • Mozilla: что такое веб-сервер?
  • Netcraft: новости об исследовании веб-серверов