У меня есть следующие настройки:
Я хочу использовать 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;
}
Почему это так?
Я думаю, что есть способ лучше решить эту проблему. Используйте обратный прокси Traefik (или аналогичный) в качестве службы Swarm и используйте метки служб, чтобы определить, какие порты следует маршрутизировать на определенные службы. Таким образом, конкретный список портов контейнера, который вам нужно опубликовать, будет динамически перенаправлен на него через traefik. Traefik может взаимодействовать с Docker / Swarm API и обновлять свои правила прокси на основе того, что происходит в Swarm в режиме реального времени. Смотрите мой пример и видео на https://github.com/BretFisher/dogvscat