Мы часто говорим о серверах и рассказываем о том, какие из них лучше выбирать для рабочих целей. Напоминаем, что вы можете заказать у нас аренду VPS/VDS, выделенного сервера или сервера хранения для вашего бизнеса или других целей. Но сегодня обсудим еще одну важную вещь – веб-сервер. Разберемся, что он из себя представляет, как работает и какой вариант лучше выбрать для своего сайта.
Что такое веб-сервер?
Веб-сервер – это сервер, который получает запрос от пользователя в виде URL, обрабатывает его и отправляет необходимые данных в виде страниц HTML, документов, медиафайлов и потоков медиа. Под этим названием подразумевают и ПО, и аппаратное оборудование. Как программное обеспечение, веб-сервер состоит из нескольких компонентов, необходимых для обработки запросов пользователей. Среди них обязательный – HTTP-сервер. Если рассматривать веб-сервер как «железо», то он представляет собой компьютерное оборудование, на котором хранятся документы (на их получение пользователь отправляет запрос). Аппаратное оборудование должно быть подключено к сети, чтобы клиент мог получить запрашиваемые данные с сервера.
Веб-серверы часто путают с серверами приложений или используют эти названия как синонимы. Отчасти их можно назвать аналогами, но не совсем. У веб-серверов и серверов приложений есть несколько отличий. Веб-сервер работает только по протоколу HTTP и предназначен по большей части для отправки статических данных. Сервер приложений поддерживает и HTTP, и другие протоколы, например, RPC и прочие, а их ключевая цель – передача динамического, то есть, постоянно изменяющегося контента. Изначально у них разные задачи. Сейчас же в веб-серверах зачастую предусмотрена поддержка PHP, Python и других скриптовых языков, поэтому они взаимодействуют не только со статическими, но и с динамическими данными. А среди компонентов большинства серверов приложений есть и веб-серверы, которые используют как прокси-серверы.
Но это уже тема для отдельной статьи. В рамках этой публикации важно объяснить, как работает именно веб-сервер и по какому алгоритму происходит взаимодействие его и пользователя.
Как работает веб-сервер?
Рассмотрим обыденный пример, с которым ежедневно сталкиваются все интернет-пользователи.
Человек хочет зайти в сеть и перейти на конкретный сайт. Для этого он открывает браузер на компьютере или телефоне. Когда программа откроется, он вводит в адресную строку нужный URL, переходит по сохраненному адресу в закладках или нажимает на ссылку на уже открытом ресурсе. Не имеет значения, как, но он переходит на сайт. Через несколько секунд на экране появляется запрашиваемая страница с текстом, картинками, видео и другим контентом.
Так выглядит процесс с точки зрения любого обывателя. А теперь разберемся в базовых внутренних процессах.
Пользователь открывает клиентское приложение. Чаще всего, это обычный браузер из разряда Google Chrome или Mozilla Firefox. Он может быть установлен на любом устройстве, которое поддерживает такую возможность. Это может быть ПК, смартфон, планшет или даже игровая консоль, где предусмотрена возможность установки веб-браузера. Клиент передает запрос по HTTP-протоколу, который поступает на веб-сервер. Переход по URL-адресу – это и есть отправление запроса. Веб-сервер его обрабатывает и отправляет пользователю запрашиваемые данные. Это может быть обычная страница HTML, изображения или другие медиафайлы. Веб-сервер отправляет пользователю ресурсы по тому же HTTP-протоколу.
Если описать процесс вкратце, то получим следующий алгоритм:
- Клиент отправляет HTTP-запрос.
- Веб-сервер получает запрос и обрабатывает его.
- Веб-сервер отправляет HTTP-ответ.
- Клиент получает запрашиваемые ресурсы.
Это базовая схема работы веб-серверов. Сейчас, когда сайты не ограничиваются простыми статическими страничками, передача ресурсов представляет собой более сложный процесс. Например, веб-серверы предусматривают возможность защищенных приемов и отправок данных по HTTPS-протоколу, поддерживают языки сценариев для передачи динамического контента и т. д.
Таким образом, каждый пользователь интернета, сам того не зная, ежедневно контактирует с веб-серверами.
Обзор 3 самых популярных веб-серверов
Первый веб-сервер в истории – CERN httpd, запущенный в 1991 году. Сейчас их существует большое количество, поэтому не так уж и легко определиться с выбором. И если с точки зрения клиента абсолютно нет разницы, какой веб-сервер используют на той или иной платформе, то владельцы площадок стараются выбрать оптимальный вариант для своих ресурсов.
Если рассматривать статистику в русскоязычном интернете, то в 2020 году лидерство среди веб-серверов удерживают Nginx, Cloudflare и Apache. На долю Nginx приходится более половины площадок – 66,21%. Cloudflare занимает второе место – его используют в 8,51% случаев. Веб-сервер Apache задействован на 5,45% платформ.
Глобальная статистика хоть и не кардинально, но отличается от данных рунета. В первой тройке самых популярных серверов в 2020 году оказались:
- Apache.
- Nginx.
- IIS.
Принимая во внимание мировую статистику, эти веб-серверы мы и рассмотрим как наиболее распространенные.
Apache
Apache HTTP Server разработчики представили еще в 1996 году. Это один из первых веб-серверов на рынке. После запуска программного обеспечение в свободный доступ, Apache обогнал всех конкурентов, и продолжает лидировать в наши дни. В мире его используют для 40,89% сайтов.
Еще лет 10 назад Apache использовали в качестве основного и единственного веб-сервера. Сейчас же, когда данных стало больше, а вместе с ними увеличилось и количество подключений, его всегда достаточно. Apache часто используют как главный веб-сервер и комбинируют с другими решениями. Веб-сервер находится в свободном доступе и использовать его можно бесплатно.
Apache – кроссплатформенное программное обеспечение. Поддерживает все основные операционные системы, в том числе Microsoft Windows, Mac OS и UNIX-подобные ОС. С точки зрения архитектуры, Apache состоит из ядра, которое выполняет основные задачи, и большое количество дополнительных модулей. Ядро работает всегда. Модули можно подключать и отключать, что позволяет контролировать функциональность сервера.
Nginx
Создатель Nginx – российский разработчик Игорь Сысоев, который выпустил продукт в 2004 году. Это единственный российский веб-сервер в этом списке, который, тем не менее, популярен и в других странах – на его долю приходится 23,77% всех площадок мира. Nginx используют не только владельцы рядовых сайтов, но и гиганты рынка – Facebook, Pinterest, Netflix, Tumblr, Instagram и многие другие. Как и Apache, Nginx – open-source продукт. Но его можно использовать только на UNIX-подобных операционных системах Microsoft Windows, из-за чего этот веб-сервер немного уступает мировому лидеру.
При разработке были учтены некоторые весомые недостатки уже существующих веб-серверов, в том числе Apache. Благодаря этому Nginx отлично справляется с увеличением нагрузки и легко выдерживает несколько тысяч запросов единовременно.
В вопросе же гибкости Nginx уступает другим продуктам. К примеру, модули нужно выбирать и компилировать с ядром – они не подключаются динамически. Но самостоятельное подключение модулей можно назвать и плюсом, потому что пользователи могут выбрать только необходимые из них и избежать произвольного включения остальных.
IIS
IIS, или Internet Information Services, – продукт Microsoft. Следовательно, использовать его можно только на операционной системе. Версия 1.0 была выпущена в 1995 году. Сейчас веб-сервер IIS используют на 16,45% всех сайтов в мире.
Технически это пакет серверов с главным компонентом в виде веб-сервера. В отличие от Apache и Nginx, IIS не представлен в свободном доступе, но поставляется вместе с ОС из линейки Windows NT.
По функциональности и производительности IIS находится примерно на одном уровне с более популярными бесплатными решениями. Большое внимание разработчики уделяют безопасности и улучшают ее с выпуском каждой новой версии – в этом вопросе IIS превосходит Apache и Nginx. Из-за того, что решение коммерческое, пользователи могут рассчитывать на поддержку Microsoft, что особенно важно для большого бизнеса. Существенные минусы – работа только на одной платформе и необходимость покупать лицензию Windows. Хотя второй фактор говорит о том, что IIS – условно-бесплатный, поскольку докупать продукт не нужно, он уже идет в комплекте.
Если вы владелец сайта, без веб-сервера вы не сможете обойтись. Хорошо, что на рынке есть много продуктов и их можно комбинировать. Например, многие считают оптимальным сочетание Apache+Nginx. Главная задача – выбрать подходящий вариант с точки зрения производительности, безопасности и стоимости.