Docker Nginx Reverse Proxy Bad Gateway с использованием контейнеров wordpress и mysql

Я также ищу другие вопросы, но они мне не подходят. (Обратный прокси-сервер Docker nginx дает 502 Bad Gateway или плохой шлюз docker nginx 502)

В моей ситуации я устанавливаю docker-ce на свой личный сервер VPS, как указано:

Client:
 Version:      18.03.1-ce
 API version:  1.37
 Go version:   go1.9.5
 Git commit:   9ee9f40
 Built:        Wed Jun 20 21:43:51 2018
 OS/Arch:      linux/amd64
 Experimental: false
 Orchestrator: swarm

Server:
 Engine:
  Version:      18.03.1-ce
  API version:  1.37 (minimum version 1.12)
  Go version:   go1.9.5
  Git commit:   9ee9f40
  Built:        Wed Jun 20 21:42:00 2018
  OS/Arch:      linux/amd64
  Experimental: false

потом

вытащить стандартную последнюю версию wordpress, mysql и jwilder/nginx обратного прокси

И используйте стандартные коды, как указано

MySQL:

docker run --name myweb_com_mysql -v /opt/docker-volumes/myweb_com_mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD="myweb41#D_fG" --restart unless-stopped -d mysql

Вордпресс:

docker run --name myweb_com_wordpress --link myweb_com_mysql:mysql -p 127.0.0.1:48010:80 -v /opt/docker-volumes/myweb_com_wordpress:/var/www/html -e VIRTUAL_HOST="myweb.com,www.myweb.com" --restart unless-stopped -d wordpress

и ОБРАТНЫЙ ПРОКСИ NGINX:

docker run -d -p 80:80 --name nginx-proxy  -v /var/run/docker.sock:/tmp/docker.sock jwilder/nginx-proxy

Что не так с этим?

С уважением


person Dr. X    schedule 08.07.2018    source источник


Ответы (2)


Джейсон Уайлдер пишет об этом в своем README.md:

использование

Чтобы запустить его:

$ docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy

Затем запустите любые контейнеры, которые вы хотите проксировать, с env var VIRTUAL_HOST=subdomain.youdomain.com

$ docker run -e VIRTUAL_HOST=foo.bar.com ...

Я вижу, что вы поставили команды в обратном порядке, начиная с nginx-proxy последним. Поэтому это не работает.

Небольшое примечание: я глубоко уважаю Джейсона за общественную работу, которую он делает. Но в какой-то момент я сам перестал использовать его nginx-proxy и просто начал использовать простой nginx образ, добавляя к нему конфиги на лету в своем DevOps-процессе. Причина в том, что отображение /var/run/docker.sock внутри контейнер представляет огромную угрозу безопасности. Другая причина заключается в том, что nginx-proxy в то время не был очень стабильным и не пересылал определенные данные в мои контейнеры (например, некоторые заголовки для Jira). Не уверен, как это работает сейчас, мой DevOps достаточно стабилен с моим собственным решением, и я бы никогда не стал подвергать свою производственную / тестовую / промежуточную среду упомянутому риску безопасности.

В любом случае. Я генерирую файлы типа myweb.conf, которые включают:

server {
  server_name myweb.com;

  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://myweb:80;
  }
}

Обратите внимание proxy_pass http://myweb:80; — если контейнеры находятся в одной сети, nginx имеет другие контейнеры в своей сети /etc/hosts. Но я обычно получаю IP-адрес от работающего контейнера для создания файла conf. Береженого Бог бережет.

Затем я запускаю контейнер nginx и добавляю туда файл. Обычно я делаю это с docker-compose:

version: '3.4'

services:
  service-nginx:
    image: nginx:latest
    container_name: service-nginx
    restart: always
    volumes:
      - ${nginx_basepath}/nginx.conf:/etc/nginx/nginx.conf
      - ${nginx_basepath}/conf.d/:/etc/nginx/conf.d/
    ports:
      - "80:80"

Я сохраняю myweb.conf в ${nginx_basepath}/conf.d/ и он автоматически появляется среди конфигов nginx, так что nginx об этом знает. После этого nginx просто нужно перезагрузить с помощью docker exec -i service-nginx nginx -s reload.

Удачи!

person Alex Karshin    schedule 08.07.2018

привет насколько я понимаю --ссылка устарела, рекомендуется создать свою собственную сеть

https://docs.docker.com/network/links/#connect-using-network-port-mapping

Я надеюсь это тебе поможет

введите здесь описание ссылки

person user3212262    schedule 08.07.2018
comment
Я не понимаю . Может дать код, как указано выше - person Dr. X; 09.07.2018