Работал ли с NGINX?

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

Ответ

Да, использовал NGINX в различных ролях: как обратный прокси, балансировщик нагрузки, кэширующий прокси и для раздачи статического контента.

Основные задачи, которые решал:

  • Балансировка нагрузки (Load Balancing) для бэкенд-сервисов с разными алгоритмами (round-robin, least_conn, ip_hash).
    upstream backend_servers {
        least_conn;
        server 10.0.1.10:8080;
        server 10.0.1.11:8080 backup;
    }
    server {
        location /api/ {
            proxy_pass http://backend_servers;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
  • Терминация SSL/TLS: Настройка HTTPS с помощью сертификатов от Let's Encrypt (часто автоматизировал через certbot).
  • Кэширование статики и динамических ответов для снижения нагрузки на бэкенд.
  • Маршрутизация и rewrite rules в микросервисной архитектуре.
  • Мониторинг: Настройка модуля stub_status или интеграции с Prometheus через nginx-prometheus-exporter для сбора метрик (активные соединения, запросы в секунду).

В DevOps-практике конфигурации NGINX управлял как код (IaC): шаблонизировал с помощью Ansible, упаковывал в Docker-образы или разворачивал как sidecar-контейнер в Kubernetes (часто через Ingress Controller на основе NGINX).