Как обслуживать статическое содержимое через Traefik

В настоящее время у меня есть докер, в котором один контейнер nginx обслуживает статическое содержимое для ряда сайтов wordpress и передает динамические запросы к соответствующим контейнерам php-apache. Когда я развертываю новый контейнер php-apache, я просто добавляю новую конфигурацию виртуального хоста nginx и обновляю службу.

Эта установка очень проста и удобна в обслуживании, но выдача и обновление сертификата HTTPS - это настоящая PITA, поскольку все должно быть выполняется вручную (я использую zerossl / client).

Traefik кажется отличным решением для обратного прокси + HTTPS, но поскольку это не веб-сервер, ему нужны два бэкэнда для репликации вышеупомянутой настройки, перенаправляя трафик на статический (nginx) или динамический (php-apache) контейнер на основе хоста запроса и / или пути.

Хотя я думаю, что это решение будет работать нормально, я удваиваю количество контейнеров, которые мне нужны.

Я мог бы продолжать использовать свой прокси-сервер nginx как единый сервер для всех интерфейсов Traefik, эффективно используя Traefik только в качестве конечной точки HTTPS, но это кажется немного излишним.

Мне интересно, может ли кто-нибудь предложить решение лучшая настройка.

Спасибо

0
задан 10 July 2018 в 13:07
1 ответ

Посмотрите на некоторые из моих примеров из "реального мира": https://github.com/Berndinox/compose-v3-collection

1) докер сеть создать прокси -d оверлей

2) Запустить traefik / proxy.yml - docker stack deploy -c proxy.yml Внимание: если вы запускаете более одного контейнера traefik и хотите использовать ACME, вам необходимо сохранить конфигурацию в хранилище ключей и значений (Consul, ETCD). Смонтированный том не будет работать в среде с несколькими экземплярами с ACME. Нормальные сертификаты (.crt, .key) будут работать и могут быть определены внутри traefik.toml.

3) Создайте свои Сервисы и пометьте их для traefik, например Wordpress:

  wordpress:
      image: wordpress
      environment:
        - WORDPRESS_DB_USER=wordpress
        - WORDPRESS_DB_PASSWORD=${DBPWD}
        - WORDPRESS_DB_HOST=mariadb
      volumes:
        - html:/var/www/html
      deploy:
        labels:
          - "traefik.port=80"
          - "traefik.docker.network=proxy"
          - "traefik.frontend.rule=Host:${WWWDOMAIN}"
          - "traefik.backend=wordpress"
          - "traefik.frontend.entryPoints=http,https"
        replicas: 1
      networks:
        proxy:
          aliases:
            - wordpress
        default:
      depends_on: 
        - mariadb

Большинство контейнеров имеют встроенный веб-сервер (Wordpress, Nextcloud , minio, ghost ...), что не должно быть проблемой.

Вы можете масштабировать Traefik, вы также можете масштабировать Wordpress, а Traefik автоматически добавляет новые конечные точки на лету! Приятно, не так ли?

  • некоторые параметры должны быть установлены / изменены в моих примерах, чтобы они соответствовали вашей среде.
  • Для управления томом в небольшом окружении я использовал: https://github.com/CWSpear/local-persist
0
ответ дан 5 December 2019 в 05:39

Теги

Похожие вопросы