Битлента
Словарь терминов3 мин чтения·

Веб-сервер: что это и как он отдаёт страницы

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

Программа, которая слушает порт

Веб-сервер — это программа, которая ожидает входящие соединения на определённом порту, обычно 80 для HTTP и 443 для HTTPS, принимает запросы и возвращает ответы. Иногда термином называют и физический компьютер, на котором она работает, но по смыслу речь о программе.

Классические примеры: nginx, Apache HTTP Server, Caddy и встроенные серверы в средах разработки.

Часть веб-серверов встроена в языковые среды: небольшие приложения на Python или Node.js способны отвечать на запросы сами, но для публичной работы их обычно ставят за nginx.

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

Путь запроса

Когда вы вводите адрес, браузер получает IP-адрес домена через DNS, устанавливает соединение, при HTTPS согласует шифрование и отправляет запрос вида «метод, путь, заголовки». Сервер сопоставляет путь с файлом или обработчиком, формирует ответ с кодом состояния, заголовками и телом и отправляет обратно.

Для нескольких сайтов на одном адресе сервер выбирает нужный по заголовку Host. Протокол запросов описан на странице про HTTP.

Статика и динамика

Статический контент, то есть готовые файлы HTML, стили, изображения, отдаётся напрямую с диска, и здесь веб-сервер очень быстр. Динамические страницы формирует приложение: код на PHP, Python, Node.js или другом языке обращается к базе данных и собирает ответ. Веб-сервер в этом случае выступает посредником: передаёт запрос приложению через FastCGI, WSGI или обычный HTTP и возвращает результат.

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

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

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно

Коды ответа и журналы

Коды 2xx означают успех, 3xx — перенаправление, 4xx — ошибку клиента, например 404 для отсутствующей страницы и 403 для недоступного ресурса, 5xx — ошибку сервера. Код 500 указывает на сбой приложения, 502 и 504 — на проблемы во взаимодействии с внутренним сервером.

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

Иногда сервер настроен так, что возвращает код 200 на любой адрес и показывает главную страницу. Для поисковых систем это плохо, а для проверки ошибок неудобно.

Заблуждения и проверка: Веб-сервер

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

Проверить самому можно, открыв в браузере инструменты разработчика на вкладке «Сеть»: там видны запросы, коды, заголовки и время. Просмотреть заголовки из командной строки позволяет curl с ключом -I, если он установлен.

Отдельный полезный приём — сверить, что при обращении по IP-адресу или неверному имени сервер возвращает нейтральный ответ, а не содержимое одного из сайтов.

Безопасность и производительность

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

Для повышения скорости применяют кэширование заголовками Cache-Control, сжатие ответов, современные версии протокола HTTP и раздачу статики через CDN. Активные соединения поддерживаются механизмом keep-alive, чтобы не устанавливать соединение заново для каждого файла.

Ограничения на число запросов и размер тела помогают выдерживать всплески трафика и снижают риск перегрузки. Для защиты передачи данных включают HTTPS с актуальными версиями TLS.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно
веб-серверhttp

Часто задаваемые вопросы

Читайте также