При добавлении TLS в контейнер docker nginx, как контейнер nginx -прокси должен связываться с тем же портом? - PullRequest
0 голосов
/ 21 января 2020

Я нахожусь в уникальной ситуации, когда пытаюсь написать docker -компонентный файл для сконфигурированных контейнеров, которые уже запущены, и я полагаю, я вышел из строя. Сейчас я пытаюсь добавить к нему безопасность TLS.

Я натолкнулся на jwilder / nginx -proxy , который выглядит как отличное решение, поскольку я считаю, что запустил бы прокси-контейнер. Но как связать с тем же портом, на котором работает контейнер nginx?

Мой nginx находится на порту 80, выставлен 80. Прокси находится на 80. Я также пытался docker-compose up с удалением порта из nginx, но безрезультатно.

TLS всегда кажется трудной для настройки, но я продолжаю пытаться погрузиться в проблему без страха, и, возможно, это Это просто недоразумение основных сетевых концепций, которые удерживают меня.

Мой docker-compose.yml выглядит следующим образом.

version: '3.1'

services:
  nginx:
    image: nginx:latest
    ports:
        - "80:80"
    expose:
      - "80"
    environment:
      - VIRTUAL_HOST=long-qualified-subdomain.domain.com
    volumes:
      - /opt/var/www/site:/var/www/site:rw
      - /opt/etc/nginx/conf.d:/etc/nginx/conf.d:rw
    links:
        - php-fpm
  php-fpm:
    image: php-fpm:pdo_mysql
    restart: always
    volumes:
      - /opt/var/www/site:/var/www/site:rw
  nginx-proxy:
    image: jwilder/nginx-proxy
    ports:
      - "80:80"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
  mysql:
    image: mariadb
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=XXXXXX
    volumes:
      - /var/lib/mysql

Любая помощь или направление будут очень признательны, спасибо!

1 Ответ

0 голосов
/ 21 января 2020

Попробуйте изменить - "80:80" в одном из контейнеров на что-то вроде - "8080:80" (или на какой-нибудь другой открытый порт на вашем хосте, кроме 8080.

, который откроет этот контейнер для другого порта чем 80 на хост-компьютере, но при этом он остается портом 80 внутри контейнера. Обычно обратному прокси-серверу нужно указывать только на внутренний порт контейнера, а не на открытый порт (при условии, что у вас есть контейнеры) в той же сети Docker).

Вас также может заинтересовать другой популярный контейнер Nginx, который также автоматически обрабатывает сертификаты и включает в себя тонну предварительно настроенных обратных прокси-серверов для многих наиболее популярных контейнеры: https://hub.docker.com/r/linuxserver/letsencrypt

Это то, чем я пользуюсь около полутора лет, и все это превращается в кусок пирога.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...