Перейти к содержанию

Внешний reverse proxy

Последнее обновление 12 сентября 2026Открыть как Markdown

Если в организации уже есть балансировщик или reverse proxy, который держит TLS и публикует внутренние сервисы, nginx из состава дистрибутива не нужен. Инстанс ставится в режиме без nginx, панель и API публикуются портами на хост, а всё остальное делает ваш прокси.

Установка

./install.sh --non-interactive \
  --tls-mode none \
  --host 10.0.0.5 \
  --admin-panel-http-port 8081 \
  --backend-http-port 8080 \
  --generate-admin-password

В интерактивном режиме тот же результат даёт пункт none на вопросе о режиме публикации. В этом режиме установщик спрашивает один адрес сервера и два порта:

  • --admin-panel-http-port — порт панели на хосте, по умолчанию 8081.
  • --backend-http-port — порт API на хосте, по умолчанию 8080.

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

Публикацию включает оверлей docker-compose.publish-backend.yml, установщик подключает его сам.

Что настроить на прокси

Что Куда проксировать
Панель администратора http://<хост инстанса>:8081
API backend http://<хост инстанса>:8080 — если к API обращаются адаптеры или веб-приложения снаружи

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

Что настроить в .env

Панель должна знать свой публичный адрес — иначе Django отклонит вход с ошибкой CSRF.

Переменная Значение
LOCAL_PANEL_URL Публичный HTTPS-адрес панели, например https://2fa.example.com
CSRF_TRUSTED_ORIGINS Тот же адрес с протоколом
ALLOWED_HOSTS Имя, под которым панель открывается через прокси
LOCAL_URL Оставьте http://local-backend:8080 — панель обращается к backend по docker-сети, а не через прокси

После правки .env перезапустите стек:

docker compose up -d

Заголовки прокси

Прокси должен передавать Host и X-Forwarded-Proto: https, иначе панель будет строить ссылки по HTTP.

Проверка

./doctor.sh

Для этой схемы важны три строки отчёта:

  • согласованность LOCAL_PANEL_URL и CSRF_TRUSTED_ORIGINS — они должны совпадать;
  • Хост → backend :8080/health доступен — публикация API на хост работает;
  • связь панели с backend по внутренней сети.

Сертификаты в отчёте не проверяются: в режиме без nginx они на стороне прокси.

Затем откройте панель по публичному адресу и войдите — если вход обрывается ошибкой CSRF, проверьте CSRF_TRUSTED_ORIGINS и заголовки прокси.

Ограничения

  • При нескольких репликах local-backend оверлей docker-compose.publish-backend.yml не используется: фиксированный порт хоста занять дважды нельзя. См. Несколько реплик local-backend.
  • RADIUS через HTTP-прокси не проходит: UDP-порты публикуются на хост напрямую и настраиваются в RADIUS-клиентах по адресу сервера.

Смотрите также

Связаться с нами

Подберём сценарий под вашу инфраструктуру, рассчитаем стоимость и запустим бесплатный пилот на 30 дней.

Отправляя заявку, вы соглашаетесь на обработку персональных данных.