Обратный прокси для Docker Swarm с динамическими портами

У меня следующие настройки:

  • Docker swarm с 1 мастером и 2 рабочими.
  • Служба Portainer, которая управляет роем.
  • Веб-приложение, использующее nginx, работающее на главной машине.

Я хочу использовать nginx для обратного прокси-сервера остальных служб роя для завершения SSL.

Я успешно использую обратный прокси-сервер на портах домашней страницы portainer и webapp.

Однако мой пользователь может запустить «сеанс», который будет выполняться на случайном порте в (большом) диапазоне и будет доступен с порта x на главном узле.

Когда я использую оператор местоположения для одного из этих портов, допустим, мы делаем что-то вроде следующего в конфигурации nginx (в правильном месте в конфигурации), это не работает:

location /x {
    proxy_pass http://127.0.0.1:x;
    proxy_redirect off;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

Почему это так ?

0
задан 23 November 2018 в 10:00
1 ответ

Я думаю, что есть лучший способ решить эту проблему. Используйте обратный прокси Traefik (или аналогичный) в качестве службы Swarm и используйте метки служб, чтобы определить, какие порты следует маршрутизировать на определенные службы. Таким образом, конкретный список портов контейнера, который вам нужно опубликовать, будет динамически перенаправлен на него через traefik. Traefik может общаться с Docker / Swarm API и обновлять свои правила прокси на основе того, что происходит в Swarm в режиме реального времени. См. Мой пример и видео на https://github.com/BretFisher/dogvscat

0
ответ дан 5 December 2019 в 05:02

Теги

Похожие вопросы