stringtranslate.com

веб сервер

Клиенты ПК, взаимодействующие через сеть с веб-сервером, обслуживающим только статический контент.
Внутренняя и передняя часть сервера Dell PowerEdge — компьютера, предназначенного для установки в стойку . Его часто используют в качестве веб-сервера.
Для веб-сайта с высоким трафиком можно использовать несколько веб-серверов.
Ферма веб- серверов с тысячами веб-серверов, используемых для веб-сайтов с очень высоким трафиком.
ADSL- модем со встроенным веб-сервером, обслуживающим динамические веб-страницы , используемые для настройки модема.

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

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

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

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

История

Первое веб-предложение (1989 г.) было оценено как «расплывчатое, но захватывающее…»
Первый в мире веб-сервер, рабочая станция NeXT Computer с Ethernet, 1990 год. На этикетке корпуса написано: «Этот компьютер является сервером. НЕ ВЫКЛЮЧАЙТЕ ЕГО ПИТАНИЕ!!»

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

Первоначальный проект WWW (1989–1991)

В марте 1989 года сэр Тим Бернерс-Ли предложил своему работодателю в ЦЕРН новый проект , целью которого было облегчить обмен информацией между учёными с помощью системы гипертекста . Предложение под названием «Гипертекст и ЦЕРН» запросило комментарии и было прочитано несколькими людьми. В октябре 1990 года предложение было переформулировано и дополнено (соавтором выступил Роберт Кайо ) и, наконец, было одобрено. [3] [4] [5]

В период с конца 1990 по начало 1991 года в результате проекта Бернерс-Ли и его разработчики написали и протестировали несколько программных библиотек, а также три программы, которые первоначально работали на ОС NeXTSTEP , установленной на рабочих станциях NeXT : [6] [7] [5]

Эти ранние браузеры извлекали веб-страницы, написанные в простой ранней форме HTML , с веб-серверов, используя новый базовый протокол связи, получивший название HTTP 0.9 .

В августе 1991 года Тим Бернер-Ли объявил о рождении технологии WWW и призвал ученых принять и развивать ее. [8] Вскоре после этого эти программы вместе с их исходным кодом стали доступны людям, заинтересованным в их использовании. [6] Хотя исходный код официально не лицензировался и не был размещен в открытом доступе, ЦЕРН неофициально разрешал пользователям и разработчикам экспериментировать и дальше разрабатывать их. Бернерс-Ли начал продвигать внедрение и использование этих программ, а также их перенос на другие операционные системы . [5]

Быстрое и бурное развитие (1991–1995 гг.)

Количество активных веб-сайтов (1991–1996 гг.) [9] [10]

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

В 1991–1993 годах программа веб-сервера ЦЕРН продолжала активно разрабатываться группой www, тем временем, благодаря доступности ее исходного кода и общедоступным спецификациям протокола HTTP, начали разрабатываться многие другие реализации веб-серверов.

В апреле 1993 года ЦЕРН опубликовал публичное официальное заявление, в котором говорилось, что три компонента веб-программного обеспечения (базовый клиент линейного режима, веб-сервер и библиотека общего кода) вместе с их исходным кодом были переданы в общественное достояние . [11] Это заявление освободило разработчиков веб-серверов от любых возможных юридических проблем, связанных с разработкой производных работ на основе этого исходного кода (угроза, которой на практике никогда не существовало).

В начале 1994 года наиболее заметным среди новых веб-серверов был NCSA httpd , который работал на различных ОС на базе Unix и мог обслуживать динамически генерируемый контент , реализуя POSTметод HTTP и CGI для связи с внешними программами. Эти возможности, наряду с мультимедийными функциями браузера Mosaic от NCSA (также способного управлять HTML- формами для отправки данных на веб-сервер), подчеркнули потенциал веб-технологий для публикации и распределенных вычислительных приложений.

Во второй половине 1994 года развитие NCSA httpd застопорилось до такой степени, что группа внешних разработчиков программного обеспечения, веб-мастеров и других профессиональных деятелей, заинтересованных в этом сервере, начала писать и собирать патчи благодаря тому, что исходный код NCSA httpd был доступен общественное достояние. В начале 1995 года все эти исправления были применены к последней версии исходного кода NCSA, и после нескольких тестов был запущен проект HTTP-сервера Apache . [12] [13]

В конце 1994 года был выпущен новый коммерческий веб-сервер Netsite со специфическими функциями. Это был первый из многих других подобных продуктов, которые были разработаны сначала Netscape , затем Sun Microsystems и, наконец, Oracle Corporation .

В середине 1995 года компания Microsoft выпустила первую версию IIS для ОС Windows NT . Это ознаменовало появление в области технологий Всемирной паутины очень важного коммерческого разработчика и поставщика, который играл и до сих пор играет ключевую роль на обеих сторонах (клиентской и серверной) сети.

Во второй половине 1995 года веб-серверы ЦЕРН и NCSA начали сокращаться (в процентном отношении к глобальному использованию) из-за широкого распространения новых веб-серверов, которые имели гораздо более быстрый цикл разработки, а также больше функций, применялось больше исправлений и имели большую производительность, чем предыдущие. предыдущие.

Взрывной рост и конкуренция (1996–2014 гг.)

Количество активных веб-сайтов (1996–2002 гг.) [10] [14]
Sun's Cobalt Qube 3 - компьютерное серверное устройство (2002 г., снято с производства)

В конце 1996 года уже существовало более пятидесяти известных (различных) программ веб-серверов, которые были доступны каждому, кто хотел владеть доменным именем в Интернете и/или размещать веб-сайты. [15] Многие из них прожили недолго и были заменены другими веб-серверами.

Публикация RFC о версиях протокола HTTP/1.0 (1996 г.) и HTTP/1.1 (1997, 1999 г.) вынудила большинство веб-серверов соответствовать (не всегда полностью) этим стандартам. Использование постоянных соединений TCP/IP (HTTP/1.1) требовало от веб-серверов как значительного увеличения максимально допустимого количества одновременных соединений, так и повышения уровня их масштабируемости.

В период с 1996 по 1999 год Netscape Enterprise Server и Microsoft IIS стали одними из ведущих коммерческих вариантов, тогда как среди свободно доступных программ с открытым исходным кодом Apache HTTP Server удерживал лидерство в качестве предпочтительного сервера (из-за его надежности и множества функций).

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

Apache стал самым используемым веб-сервером с середины 1996 года до конца 2015 года, когда после нескольких лет спада его обогнал сначала IIS, а затем Nginx. Впоследствии процент использования IIS упал до гораздо более низкого уровня, чем Apache (см. также долю рынка).

В 2005–2006 годах Apache начал улучшать свою скорость и уровень масштабируемости, вводя новые функции производительности (например, MPM событий и новый кеш контента). [16] [17] Поскольку эти новые улучшения производительности изначально были отмечены как экспериментальные, они долгое время не были доступны пользователям, и поэтому Apache еще больше пострадал от конкуренции со стороны коммерческих серверов и, прежде всего, других открытых серверов. исходные серверы, которые тем временем уже достигли гораздо более высокой производительности (в основном при обслуживании статического контента) с начала их разработки и во время упадка Apache, могли также предложить достаточно длинный список хорошо протестированных расширенных функций.

Фактически, через несколько лет после 2000 года стартовали не только другие коммерческие и высококонкурентные веб-серверы, например LiteSpeed , но и множество других программ с открытым исходным кодом, зачастую превосходного качества и очень высокой производительности, среди которых следует отметить Hiawatha, Cherokee HTTP. server , Lighttpd , Nginx и другие производные/связанные продукты, также доступные с коммерческой поддержкой.

Примерно в 2007–2008 годах большинство популярных веб-браузеров увеличили свой предыдущий лимит по умолчанию в 2 постоянных соединения на хост-домен (ограничение, рекомендованное RFC-2616) [18] до 4, 6 или 8 постоянных соединений на хост-домен, чтобы ускорить работу. улучшить поиск тяжелых веб-страниц с большим количеством изображений и смягчить проблему нехватки постоянных соединений, выделенных для динамических объектов, используемых для двунаправленных уведомлений о событиях на веб-страницах. [19] В течение года эти изменения в среднем почти утроили максимальное количество постоянных соединений, которыми приходилось управлять веб-серверам. Эта тенденция (увеличения количества постоянных соединений) определенно дала мощный толчок к использованию обратных прокси-серверов вместо более медленных веб-серверов, а также дала еще один шанс появляющимся новым веб-серверам, которые могли продемонстрировать всю свою скорость и свои возможности. обрабатывать очень большое количество одновременных подключений, не требуя слишком много аппаратных ресурсов (дорогие компьютеры с большим количеством процессоров, оперативной памяти и быстрых дисков). [20]

Новые вызовы (2015 г. и последующие годы)

В 2015 году RFC опубликовали новую версию протокола [HTTP/2], и поскольку реализация новых спецификаций была совсем нетривиальной, среди разработчиков менее популярных веб-серверов (например, с процентом использования менее 1%) возникла дилемма. 2%) о добавлении или не добавлении поддержки этой новой версии протокола. [21] [22]

Фактически поддержка HTTP/2 часто требовала радикальных изменений в их внутренней реализации из-за многих факторов (практически всегда требовались зашифрованные соединения, возможность различать соединения HTTP/1.x и HTTP/2 на одном и том же TCP-порту, двоичное представление HTTP-сообщений , приоритет сообщений, сжатие заголовков HTTP, использование потоков, также известных как подсоединения TCP/IP, и соответствующее управление потоками и т. д.), поэтому некоторые разработчики этих веб-серверов решили не поддерживать новую версию HTTP/2 (по адресу по крайней мере в ближайшем будущем) также по следующим основным причинам: [21] [22]

Вместо этого разработчики большинства популярных веб-серверов поспешили предложить доступность нового протокола не только потому, что у них была рабочая сила и время для этого, но и потому, что обычно их предыдущая реализация протокола SPDY могла быть повторно использована в качестве отправной точки. и потому что большинство используемых веб-браузеров реализовали это очень быстро по той же причине. Еще одна причина, побудившая этих разработчиков действовать быстро, заключалась в том, что веб-мастера чувствовали давление постоянно растущего веб-трафика и им очень хотелось установить и опробовать – как можно скорее – что-то, что могло бы резко снизить количество TCP/IP-соединений и ускорить работу. доступ к размещенным веб-сайтам. [23]

В 2020–2021 годах динамика реализации HTTP/2 (ведущими веб-серверами и популярными веб-браузерами) была частично воспроизведена после публикации предварительных проектов будущего RFC о протоколе HTTP/3 .

Технический обзор

ПК-клиенты, подключенные к веб-серверу через Интернет

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

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

Сложность и эффективность программы веб-сервера могут сильно различаться в зависимости от (например): [1]

Общие черты

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

Это основные функции , которые обычно есть у большинства веб-серверов.

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

Общие задачи

Программа веб-сервера, когда она работает, обычно выполняет несколько общих задач (например): [1]

Прочитать сообщение с запросом

Программы веб-сервера могут: [24] [25] [26]

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

Нормализация URL-адресов

Программы веб-сервера обычно выполняют тот или иной тип нормализации URL-адресов ( URL-адрес встречается в большинстве сообщений HTTP-запросов) в следующем порядке:

Термин нормализация URL-адресов относится к процессу последовательного изменения и стандартизации URL-адресов. Можно выполнить несколько типов нормализации, включая преобразование схемы и хоста в нижний регистр. Среди наиболее важных нормализации — удаление "." и «..» сегменты пути и добавление косой черты в конце к непустому компоненту пути.

Сопоставление URL-адресов

«Сопоставление URL-адресов — это процесс, посредством которого URL-адрес анализируется, чтобы выяснить, на какой ресурс он ссылается, чтобы этот ресурс мог быть возвращен запрашивающему клиенту. Этот процесс выполняется с каждым запросом, сделанным к веб-серверу, с некоторые запросы обслуживаются с помощью файла, например HTML-документа или изображения GIF, другие - с результатами запуска программы CGI, а третьи - с помощью какого-либо другого процесса, например, встроенного обработчика модуля, документа PHP. или Java-сервлет». [27] [ нужно обновить ]

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

Один или несколько файлов конфигурации веб-сервера могут указывать сопоставление частей пути URL-адреса (например, начальных частей пути к файлу , расширения имени файла и других компонентов пути) с конкретным обработчиком URL-адреса (файлом, каталогом, внешней программой или внутренним модулем). [28]

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

Преобразование пути URL в файловую систему

Программы веб-сервера могут преобразовывать путь URL-адреса (полный или его часть), который относится к физическому пути файловой системы, в абсолютный путь в корневом каталоге целевого веб-сайта. [28]

Корневой каталог веб-сайта может быть указан в файле конфигурации или в каком-либо внутреннем правиле веб-сервера, используя имя веб-сайта, которое является хостовой частью URL-адреса, найденного в запросе HTTP-клиента. [28]

Трансляция путей в файловую систему производится для следующих типов веб-ресурсов:

Веб-сервер добавляет путь, найденный в запрошенном URL-адресе (сообщении HTTP-запроса), и добавляет его к пути корневого каталога веб-сайта (хоста). На сервере Apache это обычно /home/www/website(на машинах с Unix обычно это: /var/www/website). Посмотрите следующие примеры того, к чему это может привести.

Преобразование URL-пути для запроса статического файла

Пример статического запроса существующего файла, указанного по следующему URL-адресу:

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

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

ПОЛУЧИТЬ /path/file.html HTTP/1.1Хост: www.example.comСоединение: поддержание активности

Результатом является ресурс локальной файловой системы:

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

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

Преобразование URL-пути для запроса каталога (без статического индексного файла)

Пример неявного динамического запроса существующего каталога, указанного по следующему URL-адресу:

http://www.example.com/directory1/directory2/

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

ПОЛУЧИТЬ /каталог1/каталог2 HTTP/1.1Хост: www.example.comСоединение: поддержание активности

Результатом является путь к локальному каталогу:

/home/www/www.example.com/directory1/directory2/

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

Преобразование URL-пути для динамического запроса программы

Для динамического запроса URL-путь, указанный клиентом, должен ссылаться на существующую внешнюю программу (обычно исполняемый файл с CGI), используемую веб-сервером для создания динамического контента. [29]

Пример динамического запроса с использованием программного файла для генерации вывода:

http://www.example.com/cgi-bin/forum.php?action=view&orderby=thread&date=2021-10-15

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

GET /cgi-bin/forum.php?action=view&ordeby=thread&date=2021-10-15 HTTP/1.1Хост: www.example.comСоединение: поддержание активности

Результатом является путь к локальному файлу программы (в данном примере — программы PHP ):

/home/www/www.example.com/cgi-bin/forum.php

Веб-сервер выполняет эту программу, передавая информацию о пути и строку запроса action=view&orderby=thread&date=2021-10-15 , чтобы у программы была информация, необходимая для запуска. (В этом случае он вернет HTML-документ, содержащий просмотр записей форума, упорядоченных по темам с 15 октября 2021 г.). В дополнение к этому веб-сервер считывает данные, отправленные из внешней программы, и повторно отправляет эти данные клиенту, сделавшему запрос.

Управление сообщением запроса

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

На практике веб-сервер должен обрабатывать запрос, используя один из следующих путей ответа: [28]

Размещать статический контент

Клиенты ПК, взаимодействующие через сеть с веб-сервером, обслуживающим только статический контент

Если программа веб-сервера способна обслуживать статический контент и она настроена для этого, то она может отправлять содержимое файла всякий раз, когда сообщение запроса имеет правильный путь URL-адреса (после сопоставления URL-адресов, перевода URL-адресов и перенаправления URL-адресов), который существующего файла в корневом каталоге веб-сайта, и файл имеет атрибуты, соответствующие требованиям внутренних правил программы веб-сервера. [28]

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

ПРИМЕЧАНИЕ. При обслуживании только статического контента программа веб-сервера обычно не меняет содержимое файлов обслуживаемых веб-сайтов (поскольку они только читаются и никогда не записываются), поэтому достаточно поддерживать только эти методы HTTP :

Ответ на статическое содержимое файла можно ускорить с помощью файлового кэша .

Индексные файлы каталога

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

Наиболее часто используемые имена для файлов статического индекса: index.html, index.htmи Default.htm.

Обычные файлы

Если программа веб-сервера получает сообщение запроса клиента с URL-адресом, путь которого соответствует имени существующего файла, и этот файл доступен программе веб-сервера, а его атрибуты соответствуют внутренним правилам программы веб-сервера, то программа веб-сервера может отправить это сообщение. файл клиенту.

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

Предоставляйте динамический контент

Клиенты ПК, взаимодействующие через сеть с веб-сервером, обслуживающим статический и динамический контент

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

ПРИМЕЧАНИЕ. При обслуживании статического и динамического контента программа веб-сервера обычно должна поддерживать также следующий метод HTTP, чтобы иметь возможность безопасно получать данные от клиента(ов) и, таким образом, иметь возможность размещать веб-сайты с интерактивными формами. ), которые могут отправлять большие наборы данных (например, большое количество вводимых данных или загрузку файлов ) на веб-сервер/внешние программы/модули:

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

Ниже приведены три стандартных и исторических интерфейса шлюза .

компьютерная графика
Внешняя программа CGI запускается программой веб-сервера для каждого динамического запроса, затем программа веб-сервера считывает из нее сгенерированный ответ данных и затем повторно отправляет его клиенту.
SCGI
Внешняя программа SCGI (обычно это процесс) запускается один раз программой веб-сервера или какой-либо другой программой/процессом, а затем ожидает сетевых подключений; каждый раз, когда к нему поступает новый запрос, программа веб-сервера устанавливает к нему новое сетевое соединение, чтобы отправить параметры запроса и прочитать его ответные данные, затем сетевое соединение закрывается.
FastCGI
Внешняя программа FastCGI (обычно это процесс) запускается один раз программой веб-сервера или какой-либо другой программой/процессом, а затем ожидает сетевого подключения, которое постоянно устанавливается веб-сервером; через это соединение передаются параметры запроса и считываются данные ответов.
Списки каталогов
Список каталогов, динамически создаваемый веб-сервером

Программа веб-сервера может быть способна управлять динамической генерацией (на лету) индексного списка файлов и подкаталогов каталога. [31]

Если программа веб-сервера настроена на это и запрошенный URL-путь соответствует существующему каталогу, доступ к нему разрешен и в этом каталоге не найден статический индексный файл, то веб-страница (обычно в формате HTML), содержащая список файлов и/или подкаталоги вышеупомянутого каталога создаются динамически (на лету). Если его невозможно сгенерировать, возвращается ошибка.

Некоторые программы веб-сервера позволяют настраивать списки каталогов, позволяя использовать шаблон веб-страницы (документ HTML, содержащий заполнители, например $(FILE_NAME), $(FILE_SIZE)и т. д., которые заменяются значениями полей каждой записи файла, найденной в каталоге веб-сервером), например index.tpl, или использование HTML и встроенного исходного кода, который интерпретируется и выполняется «на лету», например index.asp, и/или путем поддержки использования программ динамического индексирования, таких как CGI, SCGI, FCGI, например index.cgi, index.php, index.fcgi.

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

Основное использование списков каталогов — разрешить загрузку файлов (обычно, когда их имена, размеры, дата-время модификации или атрибуты файлов могут меняться случайно/часто) в том виде, в котором они есть, без необходимости предоставления дополнительной информации запрашивающему пользователю . [32]

Обработка программы или модуля

Внешняя программа или внутренний модуль ( процессор ) могут выполнять какую-то прикладную функцию, которая может использоваться для получения данных или хранения данных в одном или нескольких хранилищах данных , например: [ нужна ссылка ]

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

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

Отправить ответное сообщение

Программы веб-сервера могут отправлять ответные сообщения в качестве ответов на сообщения запроса клиента. [24]

Сообщение ответа об ошибке может быть отправлено, поскольку сообщение запроса не может быть успешно прочитано, декодировано, проанализировано или выполнено. [25]

ПРИМЕЧАНИЕ. Следующие разделы представлены только в качестве примеров, чтобы помочь понять, что в той или иной степени делает веб-сервер; эти разделы ни в коем случае не являются ни исчерпывающими, ни полными.

Сообщение об ошибке

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

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

URL-авторизация

Программа веб-сервера может проверить, соответствует ли запрошенный путь URL: [35]

Если функция авторизации/прав доступа реализована и включена и доступ к веб-ресурсу не предоставлен, то в зависимости от необходимых прав доступа программа веб-сервера:

перенаправление URL-адресов

Программа веб-сервера может иметь возможность перенаправления URL-адресов на новые URL-адреса (новые местоположения), что заключается в ответе на сообщение запроса клиента ответным сообщением, содержащим новый URL-адрес, подходящий для доступа к действительному или существующему веб-ресурсу (клиент должен повторить запрос с новым URL). [36]

Используется URL-перенаправление местоположения: [36]

Пример 1: URL-путь указывает на имя каталога , но не имеет конечной косой черты «/», поэтому веб-сервер отправляет перенаправление клиенту, чтобы дать ему указание повторить запрос с фиксированным именем пути. [31]

От
  /directory1/directory2
до:
  /directory1/directory2/

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

От
  /directory1/directory2/2021-10-08/
до:
  /directory1/directory2/2021/10/08/

Пример 3: целый набор документов был перенесен на новый сайт , и для доступа к ним теперь обязательно использовать защищенные HTTPS-соединения.

От
  http://www.example.com/directory1/directory2/2021-10-08/
до:
  https://docs.example.com/directory1/2021-10-08/

Приведенные выше примеры представляют собой лишь некоторые из возможных видов перенаправления.

Успешное сообщение

Программа веб-сервера может ответить на действительное сообщение запроса клиента успешным сообщением, необязательно содержащим запрошенные данные веб-ресурса . [37]

Если данные веб-ресурса отправляются обратно клиенту, то это может быть статический контент или динамический контент в зависимости от того, как они были получены (из файла или из вывода какой-либо программы/модуля).

Кэш контента

Чтобы ускорить ответы веб-сервера за счет снижения среднего времени ответа HTTP и используемых аппаратных ресурсов, многие популярные веб-серверы реализуют один или несколько кэшей контента , каждый из которых специализируется на определенной категории контента. [38] [39]

Контент обычно кэшируется по его происхождению, например:

Кэш файлов

Исторически сложилось так, что статическое содержимое файлов , к которым нужно было часто, случайно и быстро обращаться, хранилось в основном на электромеханических дисках с середины-конца 1960-х/1970-х годов; к сожалению, чтение и запись на такие устройства всегда считались очень медленными операциями по сравнению со скоростью оперативной памяти , и поэтому, начиная с ранних ОС , сначала были разработаны дисковые кэши, а затем и подсистемы файлового кэша ОС для ускорения операций ввода-вывода. часто используемых данных/файлов.

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

Проблема о том, как еще более эффективно ускорить обслуживание статических файлов, увеличивая тем самым максимальное количество запросов/ответов в секунду (RPS), начала изучаться/исследоваться с середины 1990-х годов с целью предложить полезные модели кэширования, которые может быть реализовано в программах веб-сервера. [40]

На практике в настоящее время многие популярные/высокопроизводительные программы веб-серверов включают в себя собственный файловый кэш пользовательского пространства , адаптированный для использования веб-сервера и использующий их конкретную реализацию и параметры. [41] [42] [43]

Широкое распространение RAID и/или быстрых твердотельных накопителей (устройств хранения данных с очень высокой скоростью ввода-вывода) немного уменьшило, но, конечно, не устранило преимущество наличия файлового кэша, встроенного в веб-сервер.

Динамический кеш

Динамический контент, выводимый внутренним модулем или внешней программой, не всегда может меняться очень часто (при наличии уникального URL с ключами/параметрами) и поэтому, возможно, на некоторое время (например, от 1 секунды до нескольких часов и более), результирующий вывод может быть кэширован в оперативной памяти или даже на быстром диске . [44]

Типичное использование динамического кэша — это когда на веб-сайте есть динамические веб-страницы с новостями, погодой, изображениями, картами и т. д., которые не меняются часто (например, каждые n минут) и к которым обращается огромное количество клиентов в минуту. час; в этих случаях полезно также возвращать кэшированный контент (без вызова внутреннего модуля или внешней программы), поскольку клиенты часто не имеют обновленной копии запрошенного контента в кэшах своих браузеров. [45]

В любом случае, в большинстве случаев такого рода кеши реализуются внешними серверами (например, обратным прокси-сервером ) или путем хранения вывода динамических данных на отдельных компьютерах, управляемых конкретными приложениями (например, memcached ), чтобы не конкурировать за аппаратные ресурсы (ЦП, ОЗУ). , диски) с веб-сервером(ами). [46] [47]

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

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

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

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

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

Спектакли

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

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

Показатели эффективности

Для программного обеспечения веб-сервера основными ключевыми показателями производительности (измеренными в различных условиях эксплуатации) обычно являются как минимум следующие (т. е.): [48]

Среди условий работы количество (1 .. n ) одновременных клиентских подключений , используемых во время теста, является важным параметром, поскольку позволяет сопоставить уровень параллелизма , поддерживаемый веб-сервером, с результатами тестируемых показателей производительности.

Эффективность программного обеспечения

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

... и другие методы программирования , такие как (например):

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

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

Условия эксплуатации

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

Бенчмаркинг

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

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

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

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

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

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

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

Симптомы перегруженного веб-сервера обычно следующие (например).

Техники борьбы с перегрузкой

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

Предостережения относительно использования протоколов HTTP/2 и HTTP/3

Даже если новые протоколы HTTP (2 и 3) обычно генерируют меньше сетевого трафика для каждого запроса/ответа, они могут потребовать больше ресурсов ОС (т. е. ОЗУ и ЦП), используемых программным обеспечением веб-сервера (из-за зашифрованных данных , большого количества потоковых буферов и другие детали реализации); кроме того, HTTP/2 и, возможно, даже HTTP/3, в зависимости от настроек веб-сервера и клиентской программы, могут быть не лучшими вариантами для загрузки данных больших или огромных файлов на очень высокой скорости, поскольку их потоки данных оптимизированы для одновременного выполнения. запросов, поэтому во многих случаях использование соединений HTTP/1.1 TCP/IP может привести к лучшим результатам/более высокой скорости загрузки (ваш результат может отличаться) . [53] [54]

Доля рынка

Диаграмма:
Доля рынка всех сайтов для наиболее популярных веб-серверов, 2005–2021 гг.
Диаграмма:
Рыночная доля всех сайтов наиболее популярных веб-серверов, 1995–2005 гг.

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

ПРИМЕЧАНИЕ. (*) процент округлен до целого числа, поскольку его десятичные значения не публикуются на исходной странице (на графике отображается только округленное значение).

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

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

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

Рекомендации

  1. ^ abc Нэнси Дж. Йегер; Роберт Э. МакГрат (1996). Технология веб-сервера. Морган Кауфманн. ISBN 1-55860-376-Х. Архивировано из оригинала 20 января 2023 года . Проверено 22 января 2021 г.
  2. ^ Уильям Нельсон; Арвинд Шринивасан; Мурти Чинталапати (2009). Веб-сервер Sun: Основное руководство. Пирсон Образование. ISBN 978-0-13-712892-1. Архивировано из оригинала 20 января 2023 года . Проверено 14 октября 2021 г.
  3. ^ Зольфагарифард, Элли (24 ноября 2018 г.). «Отец Интернета сэр Тим Бернерс-Ли о своем плане борьбы с фейковыми новостями» . Телеграф . Лондон. ISSN  0307-1235. Архивировано из оригинала 11 января 2022 года . Проверено 1 февраля 2019 г.
  4. ^ «История компьютеров и вычислений, Интернета, рождения, Всемирной паутины Тима Бернерса-Ли». история-компьютер.com . Архивировано из оригинала 4 января 2019 года . Проверено 1 февраля 2019 г.
  5. ^ abc Тим Бернер-Ли (1992). «История проекта WWW (оригинал)» . ЦЕРН (проект Всемирной паутины). Архивировано из оригинала 8 декабря 2021 года . Проверено 20 декабря 2021 г.
  6. ^ AB Тим Бернер-Ли (20 августа 1991 г.). «Доступно глобальное гипертекстовое приложение WorldWideWeb (объявление)» . ЦЕРН (проект Всемирной паутины). Архивировано из оригинала 2 декабря 2021 года . Проверено 16 октября 2021 г.
  7. ^ AB Веб-администратор. «История Интернета». ЦЕРН (проект Всемирной паутины). Архивировано из оригинала 2 декабря 2021 года . Проверено 16 октября 2021 г.
  8. Тим Бернер-Ли (2 августа 1991 г.). «Определители гипертекстовых ссылок…» ЦЕРН (проект World Wide Web). Архивировано из оригинала 7 декабря 2021 года . Проверено 16 октября 2021 г.
  9. ^ Али Месбах (2009). Анализ и тестирование одностраничных веб-приложений на основе Ajax. ISBN 978-90-79982-02-8. Проверено 18 декабря 2021 г.
  10. ^ Закон Роберта Х'оббеса. «Хронология Интернета Гоббса v5.1 (рост WWW) ПРИМЕЧАНИЕ: до 1996 года количество веб-серверов = количеству веб-сайтов». ISOC. Архивировано из оригинала 15 августа 2000 года . Проверено 18 декабря 2021 г.{{cite web}}: CS1 maint: unfit URL (link)
  11. ^ Тим Смит; Франсуа Флюкигер. «Лицензирование в Интернете». ЦЕРН (проект Всемирной паутины). Архивировано из оригинала 6 декабря 2021 года . Проверено 16 октября 2021 г.
  12. ^ "NCSA httpd" . NCSA (веб-архив). Архивировано из оригинала 1 августа 2010 года . Проверено 16 декабря 2021 г.
  13. ^ «О HTTPd-сервере Apache: как появился Apache» . Apache: проект сервера HTTPd. 1997. Архивировано из оригинала 7 июня 2008 года . Проверено 17 декабря 2021 г.
  14. ^ «Опрос веб-серверов, ПРИМЕЧАНИЕ: количество активных веб-сайтов в 2000 году было интерполировано» . Неткрафт. 22 декабря 2021 года. Архивировано из оригинала 27 декабря 2021 года . Проверено 27 декабря 2021 г.
  15. ^ «Netcraft: программное обеспечение веб-сервера (1996)» . Netcraft (веб-архив). Архивировано из оригинала 30 декабря 1996 года . Проверено 16 декабря 2021 г.
  16. ^ «Обзор новых функций Apache 2.2» . Apache: проект сервера HTTPd. 2005. Архивировано из оригинала 27 ноября 2021 года . Проверено 16 декабря 2021 г.
  17. ^ «Обзор новых функций Apache 2.4» . Apache: проект сервера HTTPd. 2012. Архивировано из оригинала 26 ноября 2021 года . Проверено 16 декабря 2021 г.
  18. ^ «Связи, постоянные связи: практические соображения». RFC 2616, Протокол передачи гипертекста — HTTP/1.1. стр. 46–47. сек. 8.1.4. дои : 10.17487/RFC2616 . РФК 2616.
  19. ^ «Максимальное количество одновременных подключений к одному и тому же домену для браузеров» . 2017. Архивировано из оригинала 21 декабря 2021 года . Проверено 21 декабря 2021 г.
  20. ^ «Бенчмарк производительности веб-сервера Linux — результаты 2016 г.» . Корневые пользователи. 8 марта 2016 г. Архивировано из оригинала 23 декабря 2021 г. Проверено 22 декабря 2021 г.
  21. ^ ab «Заменит ли HTTP/2 HTTP/1.x?». Рабочая группа IETF HTTP. Архивировано из оригинала 27 сентября 2014 года . Проверено 22 декабря 2021 г.
  22. ^ ab «Реализация HTTP/2 в клиентском и серверном программном обеспечении». Рабочая группа IETF HTTP. Архивировано из оригинала 23 декабря 2021 года . Проверено 22 декабря 2021 г.
  23. ^ «Почему только одно TCP-соединение?». Рабочая группа IETF HTTP. Архивировано из оригинала 27 сентября 2014 года . Проверено 22 декабря 2021 г.
  24. ^ ab «Обмен сообщениями клиент/сервер». RFC 7230, HTTP/1.1: Синтаксис сообщений и маршрутизация. стр. 7–8. сек. 2.1. дои : 10.17487/RFC7230 . РФК 7230.
  25. ^ ab «Обработка неполных сообщений». RFC 7230, HTTP/1.1: Синтаксис сообщений и маршрутизация. п. 34. сек. 3.4. дои : 10.17487/RFC7230 . РФК 7230.
  26. ^ «Надежность анализа сообщений» . RFC 7230, HTTP/1.1: Синтаксис сообщений и маршрутизация. стр. 34–35. сек. 3.5. дои : 10.17487/RFC7230 . РФК 7230.
  27. ^ Р. Боуэн (29 сентября 2002 г.). «Сопоставление URL-адресов» (PDF) . Основа программного обеспечения Apache. Архивировано (PDF) из оригинала 15 ноября 2021 года . Проверено 15 ноября 2021 г.
  28. ^ abcde «Сопоставление URL-адресов с местоположениями файловой системы». Apache: проект сервера HTTPd. 2021. Архивировано из оригинала 20 октября 2021 года . Проверено 19 октября 2021 г.
  29. ^ «Динамический контент с CGI». Apache: проект сервера HTTPd. 2021. Архивировано из оригинала 15 ноября 2021 года . Проверено 19 октября 2021 г.
  30. ^ Крис Шифлетт (2003). Руководство HTTP-разработчика. Издательство Сэмса. ISBN 0-672-32454-7. Архивировано из оригинала 20 января 2023 года . Проверено 9 декабря 2021 г.
  31. ^ abc ASF Infrabot (22 мая 2019 г.). «Списки каталогов». Основа Apache: проект сервера HTTPd. Архивировано из оригинала 7 июня 2019 года . Проверено 16 ноября 2021 г.
  32. ^ «Apache: список каталогов для загрузки файлов» . Apache: HTTPd-сервер. Архивировано из оригинала 2 декабря 2021 года . Проверено 16 декабря 2021 г.
  33. ^ «Ошибка клиента 4xx» ​​. RFC 7231, HTTP/1.1: Семантика и контент. п. 58. сек. 6.5. дои : 10.17487/RFC7231 . РФК 7231.
  34. ^ «Ошибка сервера 5xx». RFC 7231, HTTP/1.1: Семантика и контент. стр. 62-63. сек. 6.6. дои : 10.17487/RFC7231 . РФК 7231.
  35. ^ «Введение». RFC 7235, HTTP/1.1: Аутентификация. п. 3. сек. 1. дои : 10.17487/RFC7235 . РФК 7235.
  36. ^ ab «Коды состояния ответа: перенаправление 3xx». RFC 7231, HTTP/1.1: Семантика и контент. стр. 53–54. сек. 6.4. дои : 10.17487/RFC7231 . РФК 7231.
  37. ^ «Успешный 2xx». RFC 7231, HTTP/1.1: Семантика и контент. стр. 51-54. сек. 6.3. дои : 10.17487/RFC7231 . РФК 7231.
  38. ^ «Руководство по кэшированию». Apache: проект сервера HTTPd. 2021. Архивировано из оригинала 9 декабря 2021 года . Проверено 9 декабря 2021 г.
  39. ^ «Кэширование контента NGINX». F5 НГИНКС. 2021. Архивировано из оригинала 9 декабря 2021 года . Проверено 9 декабря 2021 г.
  40. ^ Евангелос П. Маркатос (1996). «Кэширование веб-документов в основной памяти». Компьютерные сети и системы ISDN. Архивировано из оригинала 20 января 2023 года . Проверено 9 декабря 2021 г.
  41. ^ «Веб-сервер IPlanet 7.0.9: файловый кеш» . Оракул. 2010. Архивировано из оригинала 9 декабря 2021 года . Проверено 9 декабря 2021 г.
  42. ^ "Модуль Apache mod_file_cache" . Apache: проект сервера HTTPd. 2021. Архивировано из оригинала 9 декабря 2021 года . Проверено 9 декабря 2021 г.
  43. ^ «HTTP-сервер: конфигурация: файловый кеш» . ГНУ. 2021. Архивировано из оригинала 9 декабря 2021 года . Проверено 9 декабря 2021 г.
  44. ^ "Модуль Apache mod_cache_disk" . Apache: проект сервера HTTPd. 2021. Архивировано из оригинала 9 декабря 2021 года . Проверено 9 декабря 2021 г.
  45. ^ «Что такое динамический кеш?». Поучительный. 2021. Архивировано из оригинала 9 декабря 2021 года . Проверено 9 декабря 2021 г.
  46. ^ «Учебное пособие по параметрам динамического кэша» . Сайт. 2021. Архивировано из оригинала 20 января 2023 года . Проверено 9 декабря 2021 г.
  47. ^ Арун Айенгар; Джим Челленджер (2000). «Улучшение производительности веб-сервера за счет кэширования динамических данных». Усеникс . Проверено 9 декабря 2021 г.
  48. ^ Джуссара М. Алмейда ; Вирджилио Алмейда; Дэвид Дж. Йейтс (7 июля 1997 г.). «WebMonitor: инструмент для измерения производительности серверов Всемирной паутины». Первый понедельник . дои : 10.5210/fm.v2i7.539 . Архивировано из оригинала 4 ноября 2021 года . Проверено 4 ноября 2021 г.
  49. ^ Фишер, Тим; Жизненный провод. «Получена ошибка 502 Bad Gateway? Вот что делать». Жизненный провод . Архивировано из оригинала 23 февраля 2017 года . Проверено 1 февраля 2019 г.
  50. ^ «Что такое плохой шлюз 502 и как его исправить?». ЭТО ПРОФЕССИОНАЛЬНО . Архивировано из оригинала 20 января 2023 года . Проверено 1 февраля 2019 г.
  51. ^ Фишер, Тим; Жизненный провод. «Получена ошибка 503: служба недоступна? Вот что делать». Жизненный провод . Архивировано из оригинала 20 января 2023 года . Проверено 1 февраля 2019 г.
  52. ^ Фишер, Тим; Жизненный провод. «Получена ошибка тайм-аута шлюза 504? Вот что делать». Жизненный провод . Архивировано из оригинала 23 апреля 2021 года . Проверено 1 февраля 2019 г.
  53. ^ многие (24 января 2021 г.). «Медленная загрузка по HTTP/2». гитхаб. Архивировано из оригинала 16 ноября 2021 года . Проверено 15 ноября 2021 г.
  54. ^ Джуно Чой (24 августа 2020 г.). «Улучшение скорости загрузки HTTP/2». Облачная вспышка. Архивировано из оригинала 16 ноября 2021 года . Проверено 15 ноября 2021 г.
  55. ^ «Опрос веб-серверов, октябрь 2021 г.» . Неткрафт . 15 октября 2021 года. Архивировано из оригинала 15 ноября 2021 года . Проверено 15 ноября 2021 г.
  56. ^ «Опрос веб-серверов за февраль 2021 г.» . Неткрафт . 26 февраля 2021 года. Архивировано из оригинала 15 апреля 2021 года . Проверено 8 апреля 2021 г.
  57. ^ «Опрос веб-серверов за февраль 2020 г.» . Неткрафт . 20 февраля 2020 года. Архивировано из оригинала 17 апреля 2021 года . Проверено 8 апреля 2021 г.
  58. ^ «Опрос веб-серверов за февраль 2019 г.» . Неткрафт . 28 февраля 2019 г. Архивировано из оригинала 15 апреля 2021 г. Проверено 8 апреля 2021 г.
  59. ^ «Опрос веб-серверов за февраль 2018 г.» . Неткрафт . 13 февраля 2018 г. Архивировано из оригинала 17 апреля 2021 г. Проверено 8 апреля 2021 г.
  60. ^ «Опрос веб-серверов за февраль 2017 г.» . Неткрафт . 27 февраля 2017 года. Архивировано из оригинала 14 марта 2017 года . Проверено 13 марта 2017 г.
  61. ^ «Опрос веб-серверов за февраль 2016 г.» . Неткрафт . 22 февраля 2016 г. Архивировано из оригинала 27 января 2022 г. Проверено 27 января 2022 г.

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