Маршрутизация всего трафика через nginx-reverse-proxy
Дата: 2026-02-08
Статус: Рекомендация / план внедрения
Зачем переходить на nginx-reverse-proxy как единую точку входа
Сейчас весь трафик 80/443 с хоста по iptables попадает в BBB-CONT22-1 (10.218.14.37), где HAProxy и Nginx делают маршрутизацию по доменам. Из‑за этого:
- При остановленном BBB-CONT22-1 недоступны все домены, в том числе denkart.cdto.group и docs, хотя они обслуживаются docs-denkart и Cockpit на хосте.
- Единая точка входа по факту — тяжёлый контейнер BBB, а не отдельный reverse proxy.
Правильнее сделать единой точкой входа контейнер nginx-reverse-proxy (10.218.14.200):
- Один лёгкий вход — только nginx-reverse-proxy должен быть поднят, чтобы маршрутизация работала.
- Отказоустойчивость — при остановке BBB-CONT22-1 продолжают работать denkart.cdto.group, docs.cdto.group (через docs-denkart и Cockpit).
- Соответствие документации — в паспорте и плане оптимизации уже указано: «reverse proxy (nginx-reverse-proxy) и проброс портов через iptables».
- Ясная схема — интернет → хост (iptables) → nginx-reverse-proxy → по Host в нужный бэкенд (docs-denkart, BBB-CONT22-1, хост Cockpit).
Текущая и целевая схема
Сейчас
Роутер (89.179.242.240) → хост (192.168.1.112) → iptables DNAT
→ BBB-CONT22-1 (10.218.14.37) :80, :443
→ HAProxy :443 (SSL) → Nginx :8443 / :81
→ docs-denkart (denkart, docs) / BigBlueButton (school)
Если BBB-CONT22-1 остановлен — весь веб-доступ падает.
Целевая схема
Роутер (89.179.242.240) → хост (192.168.1.112) → iptables DNAT
→ nginx-reverse-proxy (10.218.14.200) :80, :443
→ по Host:
denkart.cdto.group, denkart.cdto.life → Cockpit (10.218.14.1:9090)
docs.cdto.group, docs.cdto.life → docs-denkart (10.218.14.102)
school.cdto.life → BBB-CONT22-1 (10.218.14.37:80)
Если BBB-CONT22-1 остановлен — недоступен только school.cdto.life; denkart и docs продолжают работать.
Что нужно сделать
1. Настроить nginx в nginx-reverse-proxy
В контейнере nginx-reverse-proxy nginx должен:
- Слушать 80 (HTTP) и 443 (HTTPS).
- Терминировать SSL на 443 (сертификаты Let's Encrypt для всех доменов: denkart.cdto.group, docs.cdto.group, school.cdto.life и при необходимости .life).
- Маршрутизировать по
server_name: - denkart.cdto.group, denkart.cdto.life →
proxy_pass https://10.218.14.1:9090(Cockpit). - docs.cdto.group, docs.cdto.life →
proxy_pass http://10.218.14.102:80(или :8090 в зависимости от того, что слушает docs-denkart). - school.cdto.life →
proxy_pass http://10.218.14.37:80(BigBlueButton).
За основу можно взять:
config/nginx/denkart-routing.conf(логика маршрутов),config/nginx/bbb-https-routing.confи снимокconfig/snapshots/nginx-docs-denkart-2026-01-23.conf(SSL и server_name для cdto.group).
Сертификаты: либо Certbot в самом nginx-reverse-proxy для всех доменов, либо копирование готового bundle/cert с хоста и настройка ssl_certificate / ssl_certificate_key.
2. Переключить iptables на nginx-reverse-proxy
Изменить проброс 80/443 с 10.218.14.37 (BBB-CONT22-1) на 10.218.14.200 (nginx-reverse-proxy):
- PREROUTING:
--dport 80→10.218.14.200:80 - PREROUTING:
--dport 443→10.218.14.200:443 - FORWARD и POSTROUTING (MASQUERADE) — для
10.218.14.200вместо10.218.14.37.
Готовый вариант правил — в скрипте config/iptables/port-forwarding-rules-nginx-proxy.sh (см. ниже).
3. Проверка
- Запустить только nginx-reverse-proxy и docs-denkart, оставить BBB-CONT22-1 остановленным.
- Применить iptables для 10.218.14.200.
- Проверить: https://denkart.cdto.group и https://docs.cdto.group должны открываться.
- Запустить BBB-CONT22-1 и проверить https://school.cdto.life.
4. Обновить документацию
После перехода обновить:
docs/host-server-passport.md— явно указать: «Трафик 80/443 пробрасывается в nginx-reverse-proxy (10.218.14.200)».docs/operations/domains-configuration.mdиdocs/operations/final-architecture.md— описать целевую схему с nginx-reverse-proxy как единственной точкой входа для веб-трафика.
Резюме
Да, правильнее настроить маршрутизацию всего трафика через nginx-reverse-proxy: один контейнер-шлюз, остальные сервисы — бэкенды. Тогда недоступность denkart.cdto.group не будет зависеть от того, запущен ли BBB-CONT22-1.