CohortX
Блог

Nginx для новичка: что нужно знать

2 августа 2026 г. · 2 мин чтения · Read in English · Антон Молотило

Зачем он нужен

Ваше приложение умеет отвечать на запросы. Возникает вопрос: зачем ставить впереди ещё что-то?

Причин несколько:

  • Защищённое соединение. Удобнее настроить в одном месте, чем в каждом приложении.
  • Отдача файлов. Картинки и стили веб-сервер отдаёт в разы эффективнее приложения.
  • Несколько проектов на одной машине. Он распределяет запросы по доменам.
  • Ограничение нагрузки и защита от простейших атак.
  • Приложение не смотрит в интернет напрямую. Это безопаснее.

Как устроена настройка

Файл настройки состоит из блоков. Основной — описание сайта: какой домен обслуживаем и что делать с запросами.

Минимальный вариант для приложения, которое слушает внутренний порт:

server {
    listen 80;
    server_name example.ru;

    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;
    }
}

Разберём: слушаем обычный веб-порт, обслуживаем указанный домен, все запросы передаём приложению на внутренний порт.

Строки с заголовками важны: без них приложение не узнает настоящий адрес посетителя и решит, что все запросы идут с самого сервера.

Отдача файлов напрямую

Картинки и прочую статику лучше отдавать без участия приложения:

location /static/ {
    alias /var/www/myapp/static/;
    expires 30d;
}

Второй строкой говорим браузеру кэшировать на месяц. Заметно ускоряет повторные заходы.

Полезные команды

Проверить настройку перед применением:

nginx -t

Всегда делайте это перед перезагрузкой. Ошибка в настройке при перезапуске уронит сайт, а проверка ловит её заранее.

Применить настройку без разрыва соединений:

systemctl reload nginx

Посмотреть журналы:

tail -f /var/log/nginx/error.log

Типичные ошибки

Забыли передать заголовки. Приложение видит все запросы как локальные, ломается определение адреса и защищённого соединения.

Перезапустили без проверки. Опечатка в файле — сайт лежит.

Указали неверный путь к файлам. Частая причина того, что стили не подгружаются: путь в настройке не совпадает с реальным.

Не увеличили размер загружаемых файлов. По умолчанию стоит небольшой предел, и загрузка картинки падает с непонятной ошибкой. Настраивается отдельным параметром.

Настроили защищённое соединение, но не перенаправление. Сайт открывается по обоим адресам, и посетители попадают на незащищённый.

Что знать про порядок обработки

Правила выбора блока обработки неочевидны: точное совпадение адреса важнее, чем совпадение по началу строки, а оно, в свою очередь, взаимодействует с правилами по образцу.

Практический вывод: если правило не срабатывает, дело чаще всего в том, что раньше сработало другое, более приоритетное. Смотреть надо весь файл, а не только своё правило.

Нужно ли это новичку

Не в первую очередь. Но если вы разворачиваете проект на своём сервере, без этого не обойтись — а сам факт, что вы настраивали веб-сервер руками, на собеседовании отличает вас от тех, кто нажимал кнопки в панели.

Хватит читать — пора делать

На CohortX можно найти команду под пет-проект и получить тот самый опыт, о котором спрашивают на собеседовании.

Похожие статьи