Ответ
Nginx — это высокопроизводительный веб-сервер, обратный прокси-сервер, балансировщик нагрузки и HTTP-кеш. Он широко используется для множества задач в DevOps-практиках.
Основные сценарии использования и примеры конфигураций:
-
Обратный прокси (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; } }
-
Обслуживание статических файлов: Эффективная отдача статического контента (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"; } }
-
Балансировка нагрузки (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 директивы ... } }
-
Базовая 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
.