Site icon 8HOST.COM

Что такое веб-сервер и как с ним работать

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

Один из наиболее распространенных случаев использования веб-серверов — обслуживание файлов, которые необходимы для отображения сайта в браузере. При посещении http://www.8host.com вы начинаете с ввода URL-адреса, который запускает запрос через сеть. Запрос проходит через несколько уровней, одним или несколькими из которых является веб-сервер. Этот сервер генерирует ответ на ваш запрос, который в данном случае является сайтом 8host, а именно домашней страницей. В идеале это происходит быстро и с доступностью 24/7.

Любой посетитель домашней страницы 8host будет видеть ее как одну страницу, но на самом деле большинство современных страниц являются комбинацией многих ресурсов. Веб-серверы выступают в качестве посредника между бэкендом и фронтендом, обслуживая ресурсы: HTML и CSS, данные JSON — все это генерируется динамически на ходу или обслуживается статически. Если вы собираетесь работать с сайтами или онлайн-приложениями, вам будет полезно ознакомиться с основами веб-сервера и понять, как он работает.

Термин “веб-сервер” может относиться как к самому программному обеспечению, так и к оборудованию, на котором оно установлено, — в этой статье речь идет именно о ПО. 

Читайте также: Облачный хостинг: основы работы с серверами

Общие случаи использования веб-серверов

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

Основные задачи, которые выполняют веб-серверы:

Некоторые персональные проекты, в которых может потребоваться использование веб-сервера:

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

Задачи веб-сервера

Веб-серверы обслуживают аудиторию, которой нужна скорость, доступность, надежность и т. д. Их общая цель — обслуживание контента в сети. Чтобы считаться эффективным, веб-сервер должен учитывать следующие аспекты:

Выбор веб-сервера

На сегодняшний день самые популярные веб-серверы с открытым исходным кодом — Apache и Nginx.

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

У веб-серверов одинаковые цели и проблемы, но каждое решение будет уникальным в своей интерпретации и реализации. Nginx и Apache выделены здесь только благодаря их популярности. При выборе сервера важно помнить о потребностях конкретного проекта. Следовательно, даже если ситуация на рынке веб-серверов изменится, требования проекта всегда должны оставаться главным ориентиром при выборе ПО.

Вот некоторые ключевые отличия в работе веб-серверов:

Структура конфигурационных файлов

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

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

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

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

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

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

Обслуживание статического контента

Помимо страниц, веб-серверы получают запросы на другие ресурсы: изображения, видео, файлы CSS и JavaScript. Поскольку эти элементы всегда одинаковы, независимо от того, кто их запрашивает, то такой тип контента называется статическим. Часто сама веб-страница является HTML-файлом, который не настраивается для каждого запроса и также рассматривается как статический контент. Веб-серверы могут сжимать статический контент для более быстрой загрузки.

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

Обслуживание динамического контента

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

Внутренняя обработка динамического контента удаляет дополнительный уровень абстракции, который обычно требует передачи запроса внешней библиотеке. Apache изначально реализует динамическую обработку контента с популярными стеками решений, например LAMP (Linux, Apache, MySQL, PHP). Nginx более независим от языка, но требует внешних библиотек, таких как PHP-FPM, чтобы действовать как аналогичное решение для таких случаев использования, как стек LAMP.

Возможность обратного проксирования

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

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

Поддержка экосистемы

Nginx и Apache широко поддерживаются разработчиками и комьюнити. Благодаря их популярности существует множество обучающих материалов. Apache поддерживается некоммерческой организацией и всегда будет бесплатным. Ядро Nginx имеет открытый исходный код, но некоторые функции доступны только в платном продукте Nginx Plus: проверка работоспособности, сохранение сессий и расширенный мониторинг.

Альтернативы традиционному веб-серверу

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

Кроме того, поскольку разработчики сместили приоритеты в выделении ресурсов на управление веб-серверами, в ответ появились такие решения: serverless (безсерверные), headless (автомномные) CMS и Jamstack. Они не требуют размещения веб-сервера, а вместо этого перенаправляют уровень сервера на внешние сервисы. Для разработчиков, которым не требуется детальный или расширенный контроль над уровнем веб-сервера, время разработки может быть сосредоточено в другом месте. 

Заключение

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