Коротко о главном

Nginx часто ставят перед приложением на Node.js, Python или Go. Он принимает TLS, отдаёт статику, балансирует нагрузку и скрывает backend от интернета. Настройка кажется простой, но ошибки в заголовках и таймаутах встречаются постоянно.

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

Этот материал — быстрый старт по Nginx как обратный прокси. За 15 минут вы получите рабочую конфигурацию и поймёте, куда смотреть дальше.

Установка

В Debian, Ubuntu и Linux Mint используется пакетный менеджер APT:

sudo apt install nginx certbot python3-certbot-nginx

В Fedora и RHEL-совместимых системах пакет ставится через DNF:

sudo dnf install nginx certbot python3-certbot-nginx

В Arch Linux и производных пакет доступен в официальных репозиториях:

sudo pacman -S nginx certbot certbot-nginx

Минимальная настройка

1. Создайте конфиг сайта

Не правьте основной nginx.conf для каждого сайта. Используйте sites-available и симлинк в sites-enabled.

sudo nano /etc/nginx/sites-available/example.conf
sudo ln -s /etc/nginx/sites-available/example.conf /etc/nginx/sites-enabled/

2. Проверьте и перезагрузите

nginx -t проверяет синтаксис. Reload применяет конфигурацию без разрыва соединений.

sudo nginx -t
sudo systemctl reload nginx

3. Включите HTTPS

Certbot получит сертификат и добавит редирект. Убедитесь, что домен указывает на сервер, а порт 80 доступен.

sudo certbot --nginx -d example.com -d www.example.com
sudo certbot renew --dry-run

4. Настройте WebSocket

Для WebSocket нужны заголовки Upgrade и Connection, иначе соединение будет сбрасываться.

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

Минимальный конфиг

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

server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass http://127.0.0.1:3000;
        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;
    }
}

Шпаргалка по командам

  • Создайте конфиг сайта: sudo nano /etc/nginx/sites-available/example.conf
  • Проверьте и перезагрузите: sudo nginx -t
  • Включите HTTPS: sudo certbot —nginx -d example.com -d www.example.com
  • Настройте WebSocket: proxy_http_version 1.1;
  • Диагностируйте ошибки: sudo tail -f /var/log/nginx/error.log

Практические советы

Эти рекомендации проверены на повседневных задачах. Начните с тех, которые закрывают вашу текущую боль, а не со всего списка сразу.

Совет 1. Не открывайте backend-порт в интернет, если он слушает localhost.

Не открывайте backend-порт в интернет, если он слушает localhost.

Совет 2. Передавайте X-Forwarded-* заголовки, иначе приложение видит неверный I

Передавайте X-Forwarded-* заголовки, иначе приложение видит неверный IP и схему.

Совет 3. Ограничивайте размер тела запроса для загрузок.

Ограничивайте размер тела запроса для загрузок.

Совет 4. Настройте gzip или brotli для текстовых ответов.

Настройте gzip или brotli для текстовых ответов.

Что дальше

Быстрый старт не означает «настроить навсегда». Когда базовый сценарий заработает, вернитесь к конфигурации и проверьте, что она переживёт перезагрузку: файлы на месте, служба включена в автозагрузку, путь к данным не зависит от текущего каталога.

Дальше имеет смысл разобраться с резервной копией и журналами Nginx как обратный прокси. Это не самая заметная часть работы, но именно она превращает эксперимент в инструмент, которым можно пользоваться каждый день.

Чек-лист

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

Короткие ответы на частые вопросы

Нужно ли запускать всё от root?

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

Что делать, если после перезагрузки ничего не работает?

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

Как обновлять без сюрпризов?

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

Итог

Этого достаточно, чтобы начать. Дальше углубляйтесь по мере задач: документация Nginx как обратный прокси станет понятнее, когда появится реальный сценарий использования.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте