Введение
Веб-сервер выполняет две ключевые функции: принимает HTTP/HTTPS-запросы от клиентов (браузеров, мобильных приложений, API-клиентов) и возвращает ответы – HTML-страницы, файлы изображений, JSON-данные или другой контент. Термин относится как к программному обеспечению (Nginx, Apache), так и к физическому или виртуальному серверу, на котором это ПО запущено.
По данным NetCraft, наиболее распространёнными веб-серверами в 2024–2025 годах являются Nginx (~34% активных сайтов) и Apache (~26%). Cloudflare собственный сервер занимает значительную долю за счёт CDN.
История и контекст
Первый веб-сервер в истории – CERN httpd, запущенный Тимом Бернерсом-Ли в декабре 1990 года на компьютере NeXT. В 1993–1994 годах появились NCSA HTTPd и его наследник Apache HTTP Server (1995), ставший на два десятилетия наиболее популярным веб-сервером.
В 2004 году Игорь Сысоев создал Nginx специально для решения проблемы C10K (одновременная обработка 10 000 соединений), с которой традиционные серверы с thread-per-connection моделью справлялись плохо. Асинхронная event-driven архитектура Nginx позволила обслуживать огромное число соединений при минимальном потреблении памяти.
Как это работает
Жизненный цикл HTTP-запроса:
- Браузер устанавливает TCP-соединение с сервером (порт 80 для HTTP, 443 для HTTPS).
- Выполняется TLS-хэндшейк (при HTTPS): проверка сертификата, согласование шифра.
- Браузер отправляет HTTP-запрос: метод (GET/POST), URI, заголовки (Host, Accept, Cookie).
- Веб-сервер парсит запрос, применяет конфигурацию (virtual hosts, location-блоки Nginx).
- Для статических файлов: сервер читает файл с диска и отправляет ответ.
- Для динамического контента: передаёт запрос backend-приложению (PHP-FPM, uWSGI, Node.js) через FastCGI/WSGI/Proxy-pass.
- Возвращает HTTP-ответ с кодом статуса (200, 301, 404, 500), заголовками и телом.
Nginx часто используется как reverse proxy и load balancer: принимает запросы от клиентов и распределяет их между несколькими backend-серверами приложений.
Где применяется
- Статический хостинг: отдача HTML, CSS, JS, изображений без динамической обработки.
- Reverse proxy: Nginx перед Node.js, Python, Java приложением – SSL termination, сжатие, кеширование.
- API Gateway: маршрутизация запросов к микросервисам, rate limiting, аутентификация.
- Load Balancer: распределение трафика по нескольким backend-серверам с различными алгоритмами (round-robin, least connections).
- CDN Edge: кеширование ресурсов на граничных серверах.
Преимущества и ограничения
Nginx преимущества: высокая производительность при большом числе соединений, минимальное потребление памяти, гибкая конфигурация. Apache преимущества: богатая экосистема модулей, поддержка .htaccess для настройки на уровне директории (удобно для shared-хостинга).
Ограничения: неправильная конфигурация веб-сервера – одна из главных причин уязвимостей (directory traversal, информационное раскрытие). Требует регулярного обновления для устранения CVE.
Связь с другими понятиями
Веб-сервер является ключевым компонентом веб-хостинга и составной частью стека LAMP (Linux + Apache + MySQL + PHP) или LEMP (Linux + Nginx + MySQL + PHP). В микросервисной архитектуре Nginx выступает как Ingress Controller в Kubernetes. Веб-сервер взаимодействует с веб-приложением через стандартизированные интерфейсы: CGI, FastCGI, WSGI (Python), Rack (Ruby). Безопасность веб-сервера обеспечивается WAF (Web Application Firewall), TLS-сертификатами и заголовками безопасности (HSTS, CSP, X-Frame-Options).