С какими веб-серверами и балансировщиками нагрузки ты работал?

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

Ответ

В рамках DevOps-практик я работал с несколькими веб-серверами и балансировщиками, в основном для развертывания, проксирования и обеспечения отказоустойчивости.

Основной стек:

  1. Nginx: Использовал как высокопроизводительный веб-сервер, реверс-прокси и балансировщик нагрузки.

    • Настройка виртуальных хостов для обслуживания нескольких приложений.
    • Балансировка нагрузки (load balancing) между бэкенд-сервисами (upstream blocks) с алгоритмами round-robin, least_conn.
    • Терминация SSL/TLS с использованием сертификатов от Let's Encrypt (через certbot).
    • Кэширование статики и проксируемых ответов для увеличения производительности.
    • Развертывание конфигураций через Ansible и управление ими в Docker-образах.

    Пример конфигурации Nginx как балансировщика:

    upstream backend {
        least_conn;
        server backend1.example.com:3000;
        server backend2.example.com:3000 backup;
    }
    
    server {
        listen 80;
        server_name app.example.com;
        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
        }
    }
  2. Apache HTTP Server: Применял в legacy-проектах, настраивал модули (mod_rewrite для URL rewriting, mod_security как WAF), конфигурацию через .htaccess и виртуальные хосты.

  3. Caddy: Использовал для быстрого развертывания внутренних сервисов благодаря встроенному автоматическому HTTPS. Удобен для прототипирования.

  4. Балансировщики облачных провайдеров: Практический опыт настройки и управления Application Load Balancer (ALB) и Network Load Balancer (NLB) в AWS для маршрутизации трафика на группы инстансов или Kubernetes-сервисы.