Sobes.tech
Junior
119
questionbank

Для чего используется Nginx?

Ответ от нейросети

sobes.tech AI

Nginx — высокопроизводительный асинхронный веб-сервер и обратный прокси-сервер, используемый для:

  1. Обслуживания статических файлов: Быстрая и эффективная отдача HTML, CSS, JavaScript, изображений и других статических ресурсов. Благодаря асинхронной архитектуре, он может обрабатывать большое количество одновременных подключений с низким потреблением ресурсов.
  2. Обратного проксирования: Передача клиентских запросов на один или несколько бэкенд-серверов (приложения, API) и возвращение ответов клиентам. Это позволяет балансировать нагрузку, повышать безопасность (скрывая внутреннюю структуру сети), выполнять SSL-терминацию.
  3. Балансировки нагрузки: Распределение входящих запросов между несколькими серверами для повышения доступности и масштабируемости приложения. Поддерживает различные алгоритмы балансировки (например, round robin, least connections).
  4. Кеширования: Кеширование статических и динамических ресурсов для снижения нагрузки на бэкенды и ускорения отклика.
  5. SSL/TLS-терминации: Расшифровка HTTPS-трафика перед его передачей на бэкенд, что снимает нагрузку с серверов приложений и позволяет централизованно управлять сертификатами.
  6. Сжатия: Сжатие данных (например, Gzip) перед отправкой клиенту для уменьшения трафика и ускорения загрузки страниц.
  7. Ограничения скорости запросов: Защита бэкендов от перегрузки путем ограничения количества запросов от отдельного клиента за определенный промежуток времени.
  8. Веб-фаервола (WAF): Базовая защита от распространенных веб-атак (например, SQL-инъекций, XSS).
# Пример конфигурации Nginx для обслуживания статики и проксирования API

server {
    listen 80;
    server_name example.com; # Доменное имя

    location / {
        root /var/www/html; # Путь к статическим файлам
        index index.html;
    }

    location /api/ {
        proxy_pass http://backend_server:8080; # Проксирование запросов к API на другой сервер
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}