Зачем используется веб-сервер?

«Зачем используется веб-сервер?» — вопрос из категории Сети, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Веб-сервер — это фундаментальный компонент, который обрабатывает входящие HTTP(S)-запросы от клиентов (браузеров, мобильных приложений) и возвращает ответы. В моих проектах он решает несколько ключевых задач:

Основные функции:

  1. Обслуживание статического контента: Эффективная отдача HTML, CSS, JavaScript, изображений и шрифтов. Nginx, например, делает это очень быстро с минимальной нагрузкой на CPU.
  2. Проксирование и балансировка нагрузки: Веб-сервер (чаще Nginx) выступает как reverse-proxy, перенаправляя запросы к backend-приложениям (на Node.js, Python, Java и т.д.) и распределяя нагрузку между несколькими их экземплярами.
  3. Терминация SSL/TLS: Настройка HTTPS (шифрование, управление сертификатами) обычно выполняется на уровне веб-сервера.
  4. Кэширование и сжатие: Ускорение отдачи контента за счёт кэширования статических и даже динамических ответов, а также их сжатия (gzip, brotli).
  5. Маршрутизация и безопасность: Настройка виртуальных хостов, ограничение доступа по IP, защита от DDoS-атак базового уровня.

Пример конфигурации Nginx как прокси:

server {
    listen 80;
    server_name api.example.com;

    location / {
        proxy_pass http://localhost:3000; # Перенаправляем на Node.js приложение
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    location /static/ {
        alias /var/www/static/; # Отдаём статику напрямую
        expires 30d;
    }
}