Anthony
через traefik тоже пока не выходит
Yuriy
выкинуть секцию что я написал выше, прописать вот такого вида
Yuriy
location / { proxy_pass http://wildfly:8080; add_header Access-Control-Allow-Origin *; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; } location /websocket { proxy_pass http://wildfly:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } location /glonass { proxy_pass http://nodered:1880; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; }
Yuriy
кусок конфига с боевого контейнера
Yuriy
ну и прописывать это все не в nginx.conf а в vhost.conf
Yuriy
или в default.conf
Anthony
один вопрос, что мне прописывать в proxy_pass? имя контейнера ? У меня ведь везде nginx container, но выводит в списке уже по имени директории
Anthony
погуглив нашел что надо использовать внутренний ip контейнера
Yuriy
да имя как в docker-compose.yml
Anthony
да имя как в docker-compose.yml
так у меня везде же будет nginx:port
Yuriy
compose файл в студию
Anthony
compose файл в студию
выше был, разница в переменных и открытых портах только
Dmitry
Compose же вроде обеспечивает сетевую связанность
Yuriy
т.е запускаете из разных композ файлов?
Anthony
да
Anthony
они связаны network
Yuriy
ну как минимум имена сервисам разные дать
Anthony
ну как минимум имена сервисам разные дать
это принципиально? сейчас докер сам добавляет к сервису имя директории и все работает
Yuriy
доступны они через dns будут все равно по имени которое в композ файле прописано
Yuriy
docker ps что выдает?
Anthony
docker ps что выдает?
список контейнеров)
Anthony
Yuriy
в вашем случае traefik будет лучше
Anthony
говорят он под прод не готов еще(
Yuriy
т.к он по labels'ам умеет
Yuriy
общая схема такова Кучка Контейнеров—->Traefik—-»Nginx который смотрит в инет
Yuriy
в таком случае на nginx'е прописать один локешн на traefik
Yuriy
хотя traefik вполне себе годная прокся
Anthony
вроде понял но переспрошу, дата контейнер с портом 80,443 прокси ведет на порт 19999 traefik тот уже переводит на те контейнеры которые нужно?
Yuriy
да вам одного traefik хватит на все контейнеры
Anthony
у меня сейчас в label у сервиса прописано - - "traefik.frontend.rule=Host:core.localhost" а мне нужно чтобы переходило c /api Мне тут прописать localhost:port/api верно?
да, это я
список контейнеров)
Список контейнеров, активных на данный момент.
Dmitry
говорят он под прод не готов еще(
Если не открывать служебный порт во внешний мир - вполне готов. Подтверждено довольно крупной конторой уже больше года
Anthony
все же не могу настроить нормально traefik мои шаги 1) запустил дата контейнер и открыл 80/443 2) изменил nginx.conf location / location /api proxy_pass http://nginx:19999; location /media proxy_pass http://nginx:19999; 3) запустил traefik на 19999 порту 4) добавил label сервисам 5) запустил сервисы где ошибка может быть?
Anthony
debug = true checkNewVersion = true logLevel = "ERROR" defaultEntryPoints = ["http"] [entryPoints] [entryPoints.http] address = ":19999" [retry] [docker] endpoint = "unix:///var/run/docker.sock" domain = "localhost" watch = true exposedbydefault = false
Anthony
это конфиг traefik
Maxim
debug = true checkNewVersion = true logLevel = "ERROR" defaultEntryPoints = ["http"] [entryPoints] [entryPoints.http] address = ":19999" [retry] [docker] endpoint = "unix:///var/run/docker.sock" domain = "localhost" watch = true exposedbydefault = false
что ожидаешь в итоге, что пытаешься сделать? из описания не очень понятно зачем тебе реверсивный прокси доступный на порту
Anthony
У меня развернут фронт статично в nginx контейнере, он запрашивает данные с Апи и с медиа сервиса. Оба сервиса развёрнуты отдельно со своими докеркомпоз файлами.
Anthony
Моя задача чтобы фронт мог получить эти данные
Maxim
все же не могу настроить нормально traefik мои шаги 1) запустил дата контейнер и открыл 80/443 2) изменил nginx.conf location / location /api proxy_pass http://nginx:19999; location /media proxy_pass http://nginx:19999; 3) запустил traefik на 19999 порту 4) добавил label сервисам 5) запустил сервисы где ошибка может быть?
вот тут порты неправильные, 19999 это точка входа в проект, внутри сервисы у тебя доступны по именам сервисов если они в одной сети. удали 19999 из конфинов и обращайся к ним по именам
Anthony
Мне выше подсказали не открывать публично traefik порты
Maxim
зачем он тебе тогда?
Anthony
у тебя traefik за nginx ?
Нет, у меня и nginx и traefik
Maxim
Нет, у меня и nginx и traefik
это понятно, какие задачи должен решить traefik ?
Maxim
зачем он тебе в этой схеме?
Anthony
это понятно, какие задачи должен решить traefik ?
Перенаправлять запросы на определённые сервисы
Maxim
Перенаправлять запросы на определённые сервисы
а твой nginx разве не справляется с этим?
Anthony
У меня несколько микросервисов, в которых свой nginx
Maxim
смысл в traefik если сам nginx может решить что куда направлять
Maxim
У меня несколько микросервисов, в которых свой nginx
у меня 10 nginx и их количество не имеет значение
Denis
Maxim
Вероятно во встроенной интеграции с sd
ок, давай еще раз с начала. Расскажи какую задачу тебе нужно решить? 1) есть nginx с каким то приложением. Каким? lua? php? 2) nginx направляет запросы к traefik для обращения к двум сервисам которые стоят за traefik. Верно? 3) ...
Anthony
Это только 2 сервиса, а у меня их 7
Anthony
В каждом свои процессы
Anthony
Вообще я пытался выше решить через nginx , но мне опять подсказали что лучше traefik использовать
Anthony
Сейчас решаю задачу запросить данные из двух php сервисов
Denis
Нгинкс может выступать базовым ингресом, направляет на некий сервис а за списком апстримов, редиректами и остальным 'апликейшн роутингом ' уже следит траеф который сервится как часть сервиса.
Dan
Я, например, так на трaeфик не перешёл, и продолжаю пользуваться реверс прокси nginx. Но, должен сказать, что мне этого более чем достаточно для моих скромных задачек.
Anthony
В жата контейнере собран фронт статикой и нужно чтобы все запросы шли на него, а сам js уже шёл на /API и /media
Denis
Получаем слабый контракт между командами. Что есть круто
Denis
Это больше организационная задача чем техническая
Anthony
Это больше организационная задача чем техническая
А может есть уже готовый пример, чтобы посмотреть в верном направлении иду?
Maxim
На скриншоте видно что запущено пару композиций и несколько внешних сервисов и наверное тебе нужно их подружить как то, верно?
Anthony
Друг с другом они тоже работают
Anthony
Но фронт не работает с ними ещё
Maxim
Друг с другом они тоже работают
Эти композиции в одной сети?
Anthony
Я добавлял в одну сеть
Maxim
Я добавлял в одну сеть
А фронт добавил в эту сеть?
Anthony
И для traefik тоже
Anthony
Да все добавлял
Maxim
Тогда зачем тебе порты?))) Обращайся по именам сервисов
Anthony
У меня в каждой композиции есть nginx, и у него дефолтное имя "nginx"