Опишите основные сценарии использования и настройки Nginx.

Ответ

Nginx — это высокопроизводительный веб-сервер, обратный прокси-сервер, балансировщик нагрузки и HTTP-кеш. Он широко используется для множества задач в DevOps-практиках.

Основные сценарии использования и примеры конфигураций:

  1. Обратный прокси (Reverse Proxy): Перенаправление запросов от клиентов к одному или нескольким бэкенд-серверам (например, для приложений на Flask, Django, Node.js).

    server {
        listen 80;
        server_name example.com www.example.com;
    
        location / {
            proxy_pass http://127.0.0.1:8000; # Адрес вашего бэкенд-приложения
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
  2. Обслуживание статических файлов: Эффективная отдача статического контента (HTML, CSS, JS, изображения) напрямую клиентам, снижая нагрузку на бэкенд.

    server {
        listen 80;
        server_name static.example.com;
    
        location /static/ {
            alias /var/www/example.com/static/; # Путь к статическим файлам
            expires 30d; # Кеширование на 30 дней
            add_header Cache-Control "public, no-transform";
        }
    }
  3. Балансировка нагрузки (Load Balancing): Распределение входящих запросов между несколькими экземплярами бэкенд-серверов для повышения доступности и масштабируемости.

    upstream backend_servers {
        server 192.168.1.10:8000 weight=5;
        server 192.168.1.11:8000;
        server 192.168.1.12:8000 backup;
    }
    
    server {
        listen 80;
        server_name app.example.com;
    
        location / {
            proxy_pass http://backend_servers;
            # ... другие proxy_set_header директивы ...
        }
    }
  4. Базовая HTTP-аутентификация: Защита определенных разделов сайта с помощью логина и пароля.

    location /admin/ {
        auth_basic "Restricted Area";
        auth_basic_user_file /etc/nginx/.htpasswd; # Путь к файлу с хешами паролей
    }

Дополнительные возможности и управление:

  • SSL/TLS: Настройка HTTPS с использованием сертификатов (например, Let's Encrypt) для безопасного соединения.
  • Кеширование: Конфигурация кеширования для ускорения отдачи контента и снижения нагрузки.
  • Сжатие (Gzip): Автоматическое сжатие передаваемых данных для уменьшения трафика и ускорения загрузки страниц.
  • Перенаправления (Redirects): Настройка 301/302 редиректов.
  • Управление: Тестирование конфигурации с nginx -t и применение изменений с nginx -s reload или nginx -s restart.