Какие веб-серверы ты знаешь?

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

Ответ

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

Nginx — мой основной инструмент для высоконагруженных проектов. Использую его как обратный прокси, балансировщик нагрузки и для раздачи статики. Его асинхронная архитектура отлично справляется с большим количеством одновременных соединений. Вот типичный конфиг для проксирования:

upstream backend {
    server app1:8080;
    server app2:8080;
}

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

    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
    }
}

Apache HTTP Server — использовал в legacy-проектах, где была критична поддержка .htaccess и специфичных модулей вроде mod_rewrite или mod_security. Его prefork MPM менее эффективен под высокую нагрузку по сравнению с Nginx.

Caddy — отлично подходит для быстрого разворачивания сервисов с автоматическим TLS из коробки. Использовал его для внутренних инструментов и демо-стендов, где важна простота конфигурации:

internal-tool.example.com {
    reverse_proxy localhost:3000
    encode gzip
}

Также сталкивался с Lighttpd для специфичных случаев с низким потреблением памяти и IIS при интеграции с Windows-сервисами. Выбор всегда зависит от требований: Nginx для производительности и гибкости, Apache для совместимости, Caddy для простоты и автоматизации.