linux-labs

← Практика

Настроить reverse proxy на nginx

Конфигурация службы · Среднее · 25 мин · 150 баллов

Настроить reverse proxy на nginx

На сервере работает приложение-бэкенд: оно слушает 127.0.0.1:3000 и отвечает только локально. Нужно опубликовать его наружу через nginx: запросы на порт 80 должны проксироваться на бэкенд.

Задача

Настрой nginx так, чтобы:

  1. nginx слушал порт 80 и проксировал запросы на http://127.0.0.1:3000 (proxy_pass);
  2. curl http://localhost/ возвращал ответ бэкенда (код 200, тело от приложения);
  3. конфигурация была валидной (nginx -t), а служба — перезагружена и активна.

Подсказки по подходу

  • Конфиг сайта обычно лежит в /etc/nginx/sites-available/ и включается симлинком в sites-enabled/ (либо кладётся в /etc/nginx/conf.d/).
  • Базовый блок: server { listen 80; location / { proxy_pass http://127.0.0.1:3000; } }; полезно пробросить заголовки (proxy_set_header Host $host;).
  • Не забудь убрать/переопределить дефолтный сайт, если он держит порт 80.
  • После правки: sudo nginx -t и sudo systemctl reload nginx.

Всё нужное уже установлено. Интернет на машине отсутствует — и не понадобится: бэкенд локальный.

Подсказки

Подсказка 1

Сначала убедись, что бэкенд жив: curl -I http://127.0.0.1:3000/ должен ответить. Теперь задача — отдать его через nginx на порту 80.

Подсказка 2

Создай конфиг сайта (например /etc/nginx/sites-available/proxy):

server {
    listen 80 default_server;
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
    }
}

Включи его симлинком в sites-enabled/ и отключи конфликтующий default.

Подсказка 3

Проверь и примени: sudo nginx -t, затем sudo systemctl reload nginx. Убедись: curl http://localhost/ отдаёт ответ бэкенда (код 200).

Поднимет вашу личную эфемерную Linux-ВМ для задания — обычно пара секунд. После работы её можно остановить.