@ru_docker

Страница 527 из 610
Михаил
20.11.2018
04:50:02
Ааааааа

Anton
20.11.2018
06:26:52
Добрый день, может кто поможет. Есть дата контейнер с nginx в котором билдится фронт В nginx.conf прописал proxy_pass http://ip:port; Есть несколько микросервисов с которыми фронт взаимодействует, которые открыты также через nginx Проблема в том что nginx на фронте выдает 400 или 500 p.s. все контейнеры добавлены в один network

уточню, все контейнеры доступны напрямую через localhost:port, но не через дата контейнер

Yuriy
20.11.2018
06:30:50
докерфайлы и конфиг nginx в студию, телепаты в отпуске

Google
Anton
20.11.2018
06:31:53
user nginx; worker_processes auto; pid /run/nginx.pid; # Must be presents here, not passed through command line daemon off; events { worker_connections 768; # multi_accept on; } error_log /dev/stderr warn; http { include /etc/nginx/mime.types; default_type application/octet-stream; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; server_tokens off; client_max_body_size 128m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; proxy_buffering off; gzip off; gzip_disable "msie6"; upstream front { server frontfinal_nginx_1:19999; } upstream core { server corefinal_app_1:9999; } upstream media { server media_app_1:29999; } proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $server_name; # Also you can use this variable: `%APP_BASE_URL%` server { listen 80 default_server; listen [::]:80 default_server; server_name _; charset utf-8; access_log /dev/stdout combined; index index.html index.htm index.txt readme.txt readme.md; root %ROOT_DIR%; include errorpages.conf; location ~ /\.(ht|git) { deny all; } location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar|less)$ { expires off; sendfile off; try_files $uri =404; } location / { try_files $uri $uri/ /index.html?$query_string; proxy_pass http://front; } } server { # server_name api.freshplan.ru; location /api { proxy_pass http://core; } } server { # server_name media.freshplan.ru; location /media { proxy_pass http://media; } } # custom }

докерфайлов слишком много, да и запускаю через докеркомпоз

nginx: build: context: . dockerfile: Dockerfile restart: always working_dir: /usr/share/nginx/html environment: ROOT_DIR: '/usr/share/nginx/html' volumes: - ./src:/app/dist:ro # - $PWD/src:/app/dist:ro ports: ['19999:80'] networks: - frontend-network - web labels: - "traefik.enable=true" - "traefik.backend=front-be" - "traefik.frontend.rule=Host:front.localhost"

это докеркомпоз фронта, только сам процесс

Yuriy
20.11.2018
06:34:52
что то мне подсказывает что вот это

upstream front { server frontfinal_nginx_1:19999; } upstream core { server corefinal_app_1:9999; } upstream media { server media_app_1:29999; }

лишнее

в location сразу проще прокинуть

или у вас кучка nginx'ов?

Anton
20.11.2018
06:35:35
у меня их куча

я несовсем уверен что правильно делаю

upstream можно убрать, но это не поменяет ситуацию

Yuriy
20.11.2018
06:36:40
у вас labels так то для traefik имеются

Google
Anton
20.11.2018
06:37:10
labels да есть, я пытаюсь разными путями решить проблему

через traefik тоже пока не выходит

Yuriy
20.11.2018
06:37:37
выкинуть секцию что я написал выше, прописать вот такого вида

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"; }

кусок конфига с боевого контейнера

ну и прописывать это все не в nginx.conf а в vhost.conf

или в default.conf

Anton
20.11.2018
06:40:15
один вопрос, что мне прописывать в proxy_pass? имя контейнера ? У меня ведь везде nginx container, но выводит в списке уже по имени директории

погуглив нашел что надо использовать внутренний ip контейнера

Yuriy
20.11.2018
06:40:40
да имя как в docker-compose.yml

Anton
20.11.2018
06:41:00
да имя как в docker-compose.yml
так у меня везде же будет nginx:port

Yuriy
20.11.2018
06:41:28
compose файл в студию

Anton
20.11.2018
06:42:14
compose файл в студию
выше был, разница в переменных и открытых портах только

Дмитрий
20.11.2018
06:42:22
Compose же вроде обеспечивает сетевую связанность

Yuriy
20.11.2018
06:42:44
т.е запускаете из разных композ файлов?

Anton
20.11.2018
06:42:55
да

они связаны network

Yuriy
20.11.2018
06:43:18
ну как минимум имена сервисам разные дать

Anton
20.11.2018
06:44:14
ну как минимум имена сервисам разные дать
это принципиально? сейчас докер сам добавляет к сервису имя директории и все работает

Yuriy
20.11.2018
06:44:59
доступны они через dns будут все равно по имени которое в композ файле прописано

Google
Yuriy
20.11.2018
06:45:23
docker ps что выдает?

Anton
20.11.2018
06:45:58
docker ps что выдает?
список контейнеров)

Yuriy
20.11.2018
06:46:12
Anton
20.11.2018
06:46:17


Yuriy
20.11.2018
06:47:16
в вашем случае traefik будет лучше

Anton
20.11.2018
06:47:34
говорят он под прод не готов еще(

Yuriy
20.11.2018
06:47:35
т.к он по labels'ам умеет

общая схема такова Кучка Контейнеров—->Traefik—-»Nginx который смотрит в инет

в таком случае на nginx'е прописать один локешн на traefik

хотя traefik вполне себе годная прокся

Anton
20.11.2018
06:50:07
вроде понял но переспрошу, дата контейнер с портом 80,443 прокси ведет на порт 19999 traefik тот уже переводит на те контейнеры которые нужно?

Yuriy
20.11.2018
06:50:34
да вам одного traefik хватит на все контейнеры

Anton
20.11.2018
06:53:15
у меня сейчас в label у сервиса прописано - - "traefik.frontend.rule=Host:core.localhost" а мне нужно чтобы переходило c /api Мне тут прописать localhost:port/api верно?

Aleksey
20.11.2018
06:55:15
список контейнеров)
Список контейнеров, активных на данный момент.

Yuriy
20.11.2018
07:37:53
Дмитрий
20.11.2018
07:56:45
говорят он под прод не готов еще(
Если не открывать служебный порт во внешний мир - вполне готов. Подтверждено довольно крупной конторой уже больше года

Anton
20.11.2018
08:02:48
все же не могу настроить нормально 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) запустил сервисы где ошибка может быть?

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

это конфиг traefik

Maxim
20.11.2018
14:29:25
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
что ожидаешь в итоге, что пытаешься сделать? из описания не очень понятно зачем тебе реверсивный прокси доступный на порту

Google
Anton
20.11.2018
14:45:43
У меня развернут фронт статично в nginx контейнере, он запрашивает данные с Апи и с медиа сервиса. Оба сервиса развёрнуты отдельно со своими докеркомпоз файлами.

Моя задача чтобы фронт мог получить эти данные

Maxim
20.11.2018
14:57:33
все же не могу настроить нормально 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 из конфинов и обращайся к ним по именам

Anton
20.11.2018
16:28:18
Мне выше подсказали не открывать публично traefik порты

Maxim
20.11.2018
16:28:21
зачем он тебе тогда?

Anton
20.11.2018
16:28:41
у тебя traefik за nginx ?
Нет, у меня и nginx и traefik

Maxim
20.11.2018
16:28:58
Нет, у меня и nginx и traefik
это понятно, какие задачи должен решить traefik ?

зачем он тебе в этой схеме?

Anton
20.11.2018
16:29:33
это понятно, какие задачи должен решить traefik ?
Перенаправлять запросы на определённые сервисы

Maxim
20.11.2018
16:29:55
Перенаправлять запросы на определённые сервисы
а твой nginx разве не справляется с этим?

Anton
20.11.2018
16:30:13
У меня несколько микросервисов, в которых свой nginx

Maxim
20.11.2018
16:30:15
смысл в traefik если сам nginx может решить что куда направлять

У меня несколько микросервисов, в которых свой nginx
у меня 10 nginx и их количество не имеет значение

ptchol
20.11.2018
16:30:52
Maxim
20.11.2018
16:32:33
Вероятно во встроенной интеграции с sd
ок, давай еще раз с начала. Расскажи какую задачу тебе нужно решить? 1) есть nginx с каким то приложением. Каким? lua? php? 2) nginx направляет запросы к traefik для обращения к двум сервисам которые стоят за traefik. Верно? 3) ...

Anton
20.11.2018
16:34:10
Это только 2 сервиса, а у меня их 7

Страница 527 из 610