Что такое Nginx и каковы его основные функции?

Ответ

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

Ключевые особенности и преимущества:

  • Асинхронная, событийно-ориентированная архитектура (event-driven): Позволяет Nginx обрабатывать огромное количество одновременных соединений с минимальным потреблением ресурсов, что критично для высоконагруженных систем.
  • Гибкость: Может работать как самостоятельный веб-сервер (альтернатива Apache) или как прокси-сервер перед серверами приложений (например, Gunicorn/uWSGI для Python, Node.js).
  • Расширенная функциональность: Поддержка HTTP/2, WebSocket, gzip-сжатия, виртуальных хостов, URL-перезаписи.
  • Балансировка нагрузки: Эффективно распределяет входящие запросы между несколькими бэкенд-серверами, повышая доступность и масштабируемость.

Пример конфигурации Nginx для проксирования к Python-приложению и обслуживания статики:

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

    # Проксирование запросов к приложению, работающему на порту 8000
    location / {
        proxy_pass http://127.0.0.1:8000; # Например, Gunicorn или uWSGI
        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;
    }

    # Обслуживание статических файлов напрямую
    location /static/ {
        alias /var/www/example.com/static/; # Укажите реальный путь к статике
        expires 30d; # Кеширование статики на 30 дней
        add_header Cache-Control "public, no-transform";
    }

    # Обслуживание медиафайлов
    location /media/ {
        alias /var/www/example.com/media/; # Укажите реальный путь к медиа
        expires 30d;
        add_header Cache-Control "public, no-transform";
    }
}

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