Программирование • 25 июня 2024 • 5 мин чтения

Для чего нужен веб-сервер и как его настроить

Веб-сервер — это сердце сайта, то, без чего он не сможет существовать. Рассказываем подробнее, что это, как работает и как настроить веб-сервер.

Что такое веб-сервер и для чего он нужен

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

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

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

Как работает веб-сервер

Представим, что человек зашел в браузер, ввёл URL интернет-магазина в адресной строке и нажал Enter. В этот момент браузер отправляет HTTP-запрос на сервер, который содержит этот URL. Что происходит дальше:

1. Веб-сервер принимает этот запрос и определяет, что именно запрашивается. Это может быть статический контент — например, изображение, файл, или динамический — например, недельный прогноз погоды в определённом городе.

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

3. Если доступ разрешён, веб-сервер обрабатывает запрос. Например, извлекает файл.

4. После обработки запроса веб-сервер составляет HTTP-ответ. Если страница или файл, которые запрашивал пользователь, найдены, они открываются в браузере. Если нет — пользователь видит сообщение об ошибке, например, 404.

Артём Стрельцов, разработчик
404 — не единственная ошибка, которую может видеть пользователь. В целом любая ошибка вида 4xx означает клиентскую ошибку, то есть ошибку отправки запроса, а 5xx — ошибку сервера. Самая популярная — 500 — internal server error. Успешный ответ — это 2xx, например, 200 OK, 201 CREATED. 3xx — перенаправления на другой ресурс, то есть редиректы, а 1xx — это информационные коды, когда запрос браузера принят и обрабатывается.

Пользователь пишет адрес сайта в браузере, а браузер отправляет запрос на веб-сервер и после обработки отображает пользователю ответ — то есть открывает страницу сайта

Типы веб-серверов

Веб-серверы можно разделить по типу обрабатываемых запросов — на статические и динамические.

Статические веб-серверы

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

Динамические веб-серверы

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

Среди веб-серверов также можно выделить несколько готовых систем:

Apache HTTP Server. Один из самых популярных веб-серверов, который используют для обслуживания статических файлов и динамических приложений. Его можно применять для Windows, Linux, Unix, Mac OS.

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

Lighttpd. Легковесный веб-сервер, который применяют для обслуживания статических файлов и динамических приложений. Работает на операционных системах FreeBSD, Windows, Mac OS, Linux, Unix.

IIS (Internet Information Services). Веб-сервер от Microsoft для обслуживания динамических приложений на платформе Windows. Поддерживает разные языки программирования и базы данных.

HAProxy. Балансировщик нагрузки, который применяют для распределения трафика между несколькими веб-серверами. Он отличается высокой производительностью — может обработать до 100 тысяч соединений в секунду на одном ядре процессора.

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

WildFly/JBoss. По аналогии с Gunicorn — сервер, который часто используется для обслуживания динамических приложений на Java.

Артём Стрельцов
Выбор сервера зависит от того, что нужно для проекта. Например, HAProxy или Nginx используют как балансировщики нагрузки и распределители трафика. Gunicorn специфичен только для Python-приложения и позволяет однопоточный Python запускать сразу в несколько воркеров — скриптов, которые запускаются параллельно с основным потоком.

Настройка веб-сервера

Особенности настройки веб-сервера зависят от инфраструктурных требований. Но основные шаги одинаковы для большинства продуктов:

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

2. Настройка конфигураций. Нужно открыть конфигурационный файл веб-сервера — например, httpd.conf для Apache — и настроить его в соответствии с требованиями проекта. Например, изменить права доступа.

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

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

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

6. Тестирование. После настройки веб-сервера его необходимо протестировать: например, проверить его IP-адрес в браузере или посмотреть, как он справляется при отключении сетевого соединения.

Артём Стрельцов
На рынке существуют платформы, как, например, Яндекс Облако, которые предлагают компаниям коробочные решения — в том числе готовые сервера, например, Load balancer. В любом случае в том же облаке всегда можно арендовать виртуальную машину или какой-нибудь кластер Kubernetes и развернуть там любой веб-сервер самостоятельно. Виртуальные машины будут гарантированно работать 24/7, останется только заботиться о логике своего сервера. Инфраструктура становится намного доступнее и проще, собирать «железо» руками в большинстве случаев необходимости нет.

Совет эксперта

Артём Стрельцов
Всем разработчикам независимо от специализации важно знать, как работает веб-сервер. Для бэкендера это база, то, чем он будет заниматься. У фронтенда работа с серверами тоже есть — хотя бы в том ключе, что данные на фронт будут тянуться с бэкенда. Плюс есть, например, SSR — рендеринг на стороне сервера, генерация HTML-кода страницы на сервере в ответ на запрос. Там уже без более фундаментальных знаний о работе веб-серверов не обойтись.
Статью подготовили:
Артём Стрельцов
Яндекс Практикум
Разработчик
Надежда Низамова
Яндекс Практикум
Редактор
Полина Овчинникова
Яндекс Практикум
Иллюстратор

Дайджест блога: ежемесячная подборка лучших статей от редакции

Поделиться
Идеи новогодних подарков от нейросети + промокоды на курсы Практикума и акции от партнеров
Fri Nov 15 2024 13:48:02 GMT+0300 (Moscow Standard Time)