Веб-сервер

Протоколы и стандарты
Программное и аппаратное обеспечение, которое отдаёт клиентам веб-контент по протоколам HTTP и HTTPS.
← Вернуться к глоссарию

Что такое веб-сервер?

Веб-сервер - это программное обеспечение и оборудование, на котором оно работает, принимающее HTTP/HTTPS-запросы клиентов и возвращающее веб-контент, включая HTML-страницы, изображения, таблицы стилей, скрипты и ответы API.

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

HTTP Request/Response Cycle:

Client (Browser) Web Server

│ │

│──── HTTP Request ──────────►│

│ GET /index.html │

│ Host: example.com │

│ │

│ Process Request

│ ├── Parse URL

│ ├── Check permissions

│ ├── Locate resource

│ └── Prepare response

│ │

│◄─── HTTP Response ──────────│

│ 200 OK │

│ Content-Type: text/html │

│ <html>...</html> │

│ │

Популярное ПО веб-серверов

СерверДоля рынкаЛучше всего подходит для
nginx~34%Высокая параллельность, reverse proxy
Apache~31%Гибкость, .htaccess
Cloudflare~21%CDN, вычисления на границе
LiteSpeed~12%Хостинг WordPress
IIS~6%Среды Windows/.NET

Функции веб-сервера

ФункцияОписание
Раздача статических файловHTML, CSS, JS, изображения
Завершение TLS/SSLШифрование HTTPS
Reverse proxyПеренаправление на серверы приложений
Балансировка нагрузкиРаспределение трафика
КэшированиеСнижение нагрузки на сервер приложений
СжатиеКодирование Gzip/Brotli
Контроль доступаАутентификация, фильтрация IP
ЖурналированиеЖурналы запросов и ошибок

Примеры конфигурации сервера

# nginx - Virtual host configuration

server {

listen 80;

listen 443 ssl;

server_name example.com;

root /var/www/example;

index index.html;

ssl_certificate /etc/ssl/cert.pem;

ssl_certificate_key /etc/ssl/key.pem;

location / {

try_files $uri $uri/ =404;

}

location /api {

proxy_pass http://localhost:3000;

}

}

# Apache - .htaccess example

RewriteEngine On

RewriteCond %{HTTPS} off

RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

# Enable compression

<IfModule mod_deflate.c>

AddOutputFilterByType DEFLATE text/html text/css application/javascript

</IfModule>

Архитектура веб-сервера

Modern Web Stack:

Internet

┌─────────────┐

│ CDN/WAF │

└─────────────┘

┌─────────────┐

│ Load Balancer│

└─────────────┘

│ │

┌─────┘ └─────┐

▼ ▼

┌───────────┐ ┌───────────┐

│ Web Server│ │ Web Server│

│ (nginx) │ │ (nginx) │

└───────────┘ └───────────┘

│ │

└────────┬────────┘

┌─────────────┐

│ App Server │

│ (Node/Python)│

└─────────────┘

┌─────────────┐

│ Database │

└─────────────┘

Идентификация сервера

Метод обнаруженияРаскрываемые сведения
Заголовок ServerНазвание и версия ПО
Заголовки ответаПризнаки технологического стека
Страницы ошибокШаблоны сервера по умолчанию
Временные характеристикиПоведение конкретного сервера
Расширения файловПризнаки платформы

Вопросы безопасности

1. Скрывайте сведения о версии: удаляйте версию сервера из заголовков.

2. Отключайте листинг каталогов: предотвращайте перечисление файлов.

3. Правильно настраивайте TLS: используйте современные протоколы и стойкие шифры.

4. Ограничивайте размеры запросов: предотвращайте DoS-атаки.

5. Устанавливайте заголовки безопасности: CSP, HSTS, X-Frame-Options.

6. Регулярно обновляйте ПО: своевременно устанавливайте исправления уязвимостей.

Оптимизация производительности

МетодПреимущество
Keep-aliveПовторное использование соединений
Gzip/BrotliМеньшие ответы
Кэширование статикиСнижение дискового ввода-вывода
Настройка worker-процессовОбслуживание большего числа параллельных пользователей
HTTP/2Мультиплексирование запросов

Лучшие практики

1. Выбирайте по задачам: nginx для проксирования, Apache для гибкости.

2. Разделяйте статику и динамику: CDN для статики, сервер для динамики.

3. Контролируйте ресурсы: CPU, память, соединения.

4. Внедряйте кэширование: в браузере, прокси и на сервере.

5. Настраивайте журналирование: структурированные журналы для анализа.

6. Планируйте масштабирование: балансировка нагрузки и горизонтальное масштабирование.

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

Применяйте эти знания на практике

Используйте API DomScan для проверки доступности доменов, их состояния и многого другого.