MAATRIX / Блог / Nginx как реверс-прокси на Ubuntu 24.04: пошаговая установка

Nginx как реверс-прокси на Ubuntu 24.04: пошаговая установка

Nginx как реверс-прокси на Ubuntu 24.04: пошаговая установка

MAATRIX

Свежий сервер на Ubuntu 24.04, приложение слушает localhost, а наружу его нужно отдать по HTTPS с нормальными заголовками. Настроить Nginx как реверс-прокси на Ubuntu 24.04 можно за пятнадцать минут по чёткому чек-листу. Ниже — пошаговая установка с готовыми командами: от обновления системы до рабочего HTTPS-прокси с автопродлением сертификата. Прежде чем перейти к командам, коротко о том, зачем вообще ставить прокси перед приложением. Реверс-прокси принимает все входящие соединения и представляется клиенту единственным сервером, скрывая за собой ваш процесс на Node, Python или PHP. Он берёт на себя терминацию TLS, буферизует медленных клиентов, чтобы бэкенд не держал тысячи полуоткрытых соединений, и позволяет спрятать за одним доменом несколько сервисов. Именно поэтому Nginx ставят даже там, где приложение теоретически умеет слушать порт само: единая точка входа проще в управлении и безопаснее. Ubuntu 24.04 с её долгой поддержкой — удачная база под такую роль: свежие пакеты, актуальное ядро и стабильность на годы вперёд.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Шаг 1. Подготовка сервера Ubuntu 24.04

Начните с чистого VPS с root-доступом и публичным IP. Для роли реверс-прокси хватает минимальной конфигурации: 1 ядро и 1 ГБ RAM обрабатывают тысячи запросов в секунду, потому что сам Nginx почти не нагружает систему. Ресурсы наращивают под то, что стоит за прокси, а не под него.

Первым делом обновите систему до актуального состояния — на свежих образах это закрывает известные уязвимости и подтягивает свежие пакеты:

apt update && apt upgrade -y

Полезно сразу задать имя хоста и проверить, что время синхронизировано, — это важно для корректной работы TLS. Ubuntu 24.04 по умолчанию использует systemd-timesyncd, так что обычно синхронизация уже включена:

timedatectl status

Локацию сервера выбирайте по задаче. Для аудитории в России ниже пинг с RU-площадки, для доступа к зарубежным сервисам логичнее US, для Европы — UK. У MAATRIX доступны все три локации с оплатой из России картой, СБП или криптой, поэтому сервер под прокси можно взять там, где он ближе к вашим пользователям или к проксируемому сервису.

Шаг 2. Установка Nginx

В Ubuntu 24.04 Nginx ставится одной командой из штатного репозитория — версия там достаточно свежая для роли реверс-прокси:

apt install nginx -y
systemctl enable --now nginx

Флаг enable --now одновременно запускает сервис и прописывает его в автозагрузку, чтобы после перезагрузки VPS прокси поднимался сам. Проверьте, что Nginx работает и отвечает на локальный запрос:

systemctl status nginx
curl -I http://127.0.0.1

Ответ с кодом 200 OK и дефолтной страницей означает, что веб-сервер установлен корректно. Теперь его нужно настроить на проксирование вашего приложения.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

Арендовать VPS

Шаг 3. Настройка фаервола

Прежде чем открывать сайт наружу, закройте лишнее. В Ubuntu для этого используется ufw. Разрешите SSH, чтобы не потерять доступ, и веб-порты, а всё остальное закройте:

ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

Команда ufw enable спросит подтверждение и включит фаервол. Проверьте итоговые правила:

ufw status

Важный принцип: ваше приложение должно слушать только localhost, а не публичный интерфейс. Тогда снаружи к нему нельзя подключиться в обход прокси, и единственной точкой входа остаётся Nginx. Это и удобнее в управлении, и безопаснее — все правила доступа применяются на прокси и не обходятся прямым обращением к порту бэкенда.

Шаг 4. Конфиг реверс-прокси

Конфиги сайтов в Ubuntu лежат в /etc/nginx/sites-available/ и включаются симлинком в sites-enabled. Создайте файл /etc/nginx/sites-available/app.conf с проксированием на ваше приложение, например на порт 3000:

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        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;
    }
}

Разберём ключевые строки конфига, чтобы вы понимали, а не копировали вслепую. Директива proxy_pass указывает, куда передавать запросы — в примере это локальный порт 3000, где слушает приложение. Host $host доносит до бэкенда исходный домен, иначе он увидит 127.0.0.1 и может отдать не тот виртуальный хост или построить кривые ссылки. X-Real-IP и X-Forwarded-For передают настоящий адрес посетителя — без них в логах приложения окажется только адрес самого прокси, и перестанут работать геолокация, ограничение частоты запросов и баны по IP. Наконец, X-Forwarded-Proto $scheme сообщает приложению, что снаружи был HTTPS, — это критично для фреймворков, которые сами строят абсолютные ссылки и решают, слать ли редирект на защищённую версию.

Блок proxy_set_header обязателен: без него приложение не узнает реальный домен и IP посетителя, а фреймворк не поймёт, что снаружи HTTPS. Включите сайт, уберите дефолтный и примените конфигурацию:

ln -s /etc/nginx/sites-available/app.conf /etc/nginx/sites-enabled/
rm -f /etc/nginx/sites-enabled/default
nginx -t
systemctl reload nginx

Команда nginx -t проверяет синтаксис до применения — возьмите за правило запускать её перед каждым reload. Если тест прошёл, прокси уже отдаёт ваше приложение по 80 порту.

Шаг 5. Подключение HTTPS через Let's Encrypt

Прокси без шифрования сегодня не имеет смысла. В Ubuntu 24.04 сертификат Let's Encrypt проще всего выпустить через certbot, который сам пропишет настройки в конфиг:

apt install certbot python3-certbot-nginx -y
certbot --nginx -d example.com -d www.example.com

Certbot запросит почту, проверит домен и добавит блок listen 443 ssl с путями к сертификатам, а также настроит редирект с 80 на 443. Чтобы выпуск прошёл, домен должен A-записью указывать на IP вашего VPS. Автопродление уже включено таймером systemd, но убедиться не помешает:

systemctl status certbot.timer
certbot renew --dry-run

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

Шаг 6. Проверка, WebSocket и обслуживание

Убедитесь, что прокси отдаёт приложение по HTTPS и передаёт заголовки. Быстрая проверка — запрос через сам домен:

curl -I https://example.com

Если приложение использует WebSocket (чаты, живые обновления), добавьте в нужный location проброс апгрейда соединения, иначе сокет не поднимется:

location /ws/ {
    proxy_pass http://127.0.0.1:3000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
}

Обслуживание сводится к малому. Держите систему обновлённой через apt upgrade, следите за логами в /var/log/nginx/error.log, скрывайте версию сервера строкой server_tokens off; и держите порты закрытыми фаерволом. Раз в пару недель проверяйте, что после перезагрузки VPS прокси поднимается автоматически. Этого набора достаточно, чтобы реверс-прокси на Ubuntu 24.04 годами работал без сюрпризов. Если проект вырастет и за прокси появится несколько бэкендов, тот же Nginx легко превращается в балансировщик — но это уже следующий шаг, который тоже спокойно живёт на недорогом VPS с чистым IP.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

Арендовать VPS

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Частые вопросы

Сколько ресурсов нужно под Nginx как реверс-прокси на Ubuntu 24.04?

Минимум: 1 ядро и 1 ГБ RAM держат тысячи запросов в секунду, так как сам прокси почти не нагружает систему; ресурсы наращивают под бэкенд.

Обязательно ли приложению слушать только localhost?

Да, так к нему нельзя подключиться в обход прокси, и Nginx остаётся единственной точкой входа со всеми правилами доступа.

Как выпустить бесплатный HTTPS на Ubuntu 24.04?

Установите certbot python3-certbot-nginx и выполните certbot --nginx -d домен — он сам настроит SSL-блок и автопродление.

Как оплатить VPS под Nginx из России?

У MAATRIX доступна оплата картой российского банка, по СБП, криптовалютой или токеном MAAT, иностранная карта не нужна.

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.