Ответ
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 является ключевым компонентом современной веб-инфраструктуры, обеспечивая высокую производительность и надежность.