В результате добавления промежуточного программного обеспечения Traefik StripPrefix в ярлыки для создания докеров получается 504 - PullRequest
0 голосов
/ 21 октября 2019

Я разработал несколько полнофункциональных веб-приложений, которые я пытаюсь перенаправить с помощью Traefik. Я хочу воспользоваться преимуществами динамической конфигурации с помощью ярлыков docker-compose. Я хотел бы применить опцию промежуточного программного обеспечения stripPrefix, чтобы я мог использовать ту же самую маршрутизацию приложений, как если бы каждое приложение обслуживалось в корне. Тем не менее, как только эти правила будут применены, это приведет к ответу 504 Gateway Timeout.

Вот мои настройки:

  • Traefik 2.0.1
  • Docker 19.03.2, Compose 1.24.1
  • NGINX: последние изображения
  • A global докерская сеть, в которой работает контейнер Traefik
  • Несколько мультиконтейнерных приложений, каждое из которых включает в себяВеб-сервер NGINX
  • Все приложения имеют свои собственные сети local, а контейнеры NGINX также находятся в сети global.
  • Каждое приложение настроено для прослушивания на / * 1022. *

Вот определение docker-compose.yml для поврежденного контейнера NGINX:

nginx:
        image: nginx:latest
        container_name: "mps_nginx"
        volumes:
        - ./nginx/confs/nginx.conf:/etc/nginx/default.conf
        - ./static:/www/static
        restart: "always"
        labels:
            - traefik.http.routers.mps.rule=Host(`localhost`) && PathPrefix(`/mps`)
            - traefik.http.middlewares.strip-mps.stripprefix.prefixes=/mps
            - traefik.http.routers.mps.middlewares=strip-mps@docker
        networks:
        - default
        - mps

Отягчающая сторона, когда я закомментирую метки middlewares, работает нормально, но не можетнайдите соответствующий шаблон URL.

До этого я тестировал свой подход с использованием контейнера whoami, определенного в Учебное пособие по быстрому старту Traefik :

# Test service to make sure our local docker-compose network functions
  whoami:
    image: containous/whoami
    labels:
      - traefik.http.routers.whoami.rule=Host(`localhost`) && PathPrefix(`/whoami`)
      - traefik.http.middlewares.strip-who.stripprefix.prefixes=/whoami
      - traefik.http.routers.whoami.middlewares=strip-who@docker

Aзапрос к http://localhost/whoami возвратам (среди прочихнгс) GET / HTTP/1.1.

Именно так я и ожидал, что мои подходы к маршрутизации будут работать для всех других моих приложений. Панель инструментов Traefik горит зеленым цветом для каждого промежуточного программного обеспечения, которое я регистрирую, и все же все, что я вижу, - это ошибки 504.

Если у кого-то есть какие-либо подсказки, я был бы искренне признателен.

1 Ответ

0 голосов
/ 23 октября 2019

Существует проблема с префиксом, не заканчивающимся на '/'. Протестируйте свою конфигурацию так:

      - "traefik.http.routers.whoami.rule=Host(`localhost`) && (PathPrefix(`//whoami/`) || PathPrefix(`/portainer`))"
      - "traefik.http.middlewares.strip-who.stripprefix.prefixes=/whoami"
...