Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Linux: nginx

Что такое NGINX и какие задачи он решает?

Этот вопрос проверяет понимание того, что такое NGINX, зачем он используется в веб-инфраструктуре и какие основные роли может выполнять (web-сервер, reverse proxy, балансировщик нагрузки и т.д.).

Короткий ответ

Определение: NGINX — это высокопроизводительный веб-сервер и обратный прокси-сервер (reverse proxy), который часто используется для обслуживания веб-приложений.
Он умеет отдавать статические файлы, проксировать запросы на backend-приложения (Django, Flask, Node.js и др.), балансировать нагрузку между несколькими серверами и завершать TLS (HTTPS). Благодаря событийной архитектуре NGINX хорошо справляется с большим количеством одновременных подключений. Его часто ставят «перед» приложением как «фронт» для обработки HTTP/HTTPS, логирования, кэширования и защиты. В типичной схеме NGINX принимает запросы от клиента и перенаправляет их на backend, например, на приложение на Django или FastAPI.

Длинный ответ

1. Что такое NGINX

Определение:
NGINX — это высокопроизводительный веб-сервер и обратный прокси-сервер (reverse proxy), который также может выступать как балансировщик нагрузки, кэширующий прокси и терминатор TLS.

Ключевые особенности:

  1. Высокая производительность:

    • Использует неблокирующую событийную архитектуру.

    • Хорошо масштабируется при большом количестве одновременных соединений.

  2. Гибкость:

    • Может работать как:

      • web-сервер (отдача статических файлов),

      • reverse proxy для backend-приложений,

      • балансировщик нагрузки,

      • кэширующий прокси.

  3. Широкое применение:

    • Используется как фронт для приложений на Django, Flask, Node.js, PHP и др.

2. Основные задачи, которые решает NGINX

2.1. Web-сервер для статических файлов

NGINX может напрямую отдавать:

  • статический HTML,

  • CSS, JavaScript,

  • изображения,

  • файлы загрузки.

Пример: у вас есть frontend (статические файлы), который можно отдавать напрямую NGINX, а backend-приложение обрабатывает только API.

NGINX config

server {
    listen 80;
    server_name example.com;

    root /var/www/static_site;
    location / {
        try_files $uri $uri/ =404;
    }
}

2.2. Reverse proxy для backend-приложений

Обычно приложение (Django, Flask и т.д.) слушает на localhost:8000 или другом порту и не выставляется напрямую в интернет. NGINX стоит перед ним и проксирует запросы.

NGINX config

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:8000;
        # здесь также часто настраивают заголовки, timeout'ы и пр.
    }
}

Зачем это нужно:

  • безопасность (backend не торчит наружу),

  • удобная конфигурация HTTPS,

  • логирование,

  • сжатие и кэширование.

2.3. Балансировка нагрузки

Если у вас несколько backend-серверов, NGINX может распределять между ними запросы.

NGINX config

upstream backend_app {
    server 127.0.0.1:8001;
    server 127.0.0.1:8002;
    # можно настраивать веса, проверки состояния и т.п.
}

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend_app;
    }
}

Преимущества:

  • увеличение отказоустойчивости,

  • масштабирование по горизонтали (добавление новых серверов).

2.4. TLS-терминация (HTTPS)

NGINX часто используют для окончания TLS-сессии:

  • Клиент устанавливает HTTPS-соединение с NGINX.

  • NGINX расшифровывает трафик и проксирует обычный HTTP на backend.

Плюсы:

  • все управление сертификатами сосредоточено в одном месте,

  • backend-ы могут работать по простому HTTP внутри приватной сети.

2.5. Кэширование и сжатие

NGINX умеет:

  • кэшировать ответы backend-сервера,

  • сжимать ответы (gzip и др.),

  • уменьшать нагрузку на backend и ускорять отдачу данных пользователям.

3. Типичная схема использования NGINX с Python-приложением

Частая конфигурация:

  1. Клиент → NGINX (порт 80/443).

  2. NGINX:

    • отдает статические файлы,

    • проксирует запросы /api/ на backend.

  3. Backend:

    • Django/Flask/FastAPI под управлением gunicorn/uvicorn/uwsgi на 127.0.0.1:8000.

Преимущества такой схемы:

  • NGINX занимается сетевыми задачами и статикой.

  • Приложение фокусируется на бизнес-логике.

  • Масштабировать backend проще (добавить несколько процессов или серверов).

4. Вывод

  • NGINX — это универсальный и очень быстрый web-сервер и reverse proxy.

  • Он решает задачи отдачи статики, проксирования запросов, балансировки нагрузки и работы с HTTPS.

  • В типичной архитектуре Python-приложения NGINX стоит перед приложением и берет на себя сетевую часть и инфраструктурные задачи.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    4

Навыки

  • Linux

    Linux

Ключевые слова

#nginx

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.