Сервер Traefik: слишком много раз перенаправлялся - PullRequest
0 голосов
/ 19 июня 2020

Это мой сценарий:

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

В моем случае у меня есть следующий docker-compose.yml, который имеет два сервера и службу traefik в качестве точки входа, прослушивающей порт 80:

version: '3.7'

services: 

    traefik:
        image: "traefik:v2.2"
        container_name: "traefik"
        ports:
            - "80:80"
        networks: 
            - pg_database
        volumes:
            - "/var/run/docker.sock:/var/run/docker.sock:ro"
        command: 
            # entrypoints
            - "--entrypoints.web.address=:80"
            # providers
            - "--providers.docker=true"
            - "--providers.docker.endpoint=unix:///var/run/docker.sock"
            - "--providers.docker.exposedByDefault=false"

    service_one:
        image: custom-image
        restart: always
        expose:
            - 3000
        networks:
            - pg_database
        labels:
            # Explicitly tell Traefik to expose this container
            - "traefik.enable=true"
            # Add middleware path replace: /dashboard(/.*)? -> $1
            - "traefik.http.middlewares.pathreplacemiddleware.replacepathregex.regex=^\\/dashboard(\\/.*)?"
            - "traefik.http.middlewares.pathreplacemiddleware.replacepathregex.replacement=$$1"
            # Configure router (HTTP)
            - "traefik.http.routers.service_one_http.rule=Host(`mydomain.com`) && PathPrefix(`/dashboard/`)"
            - "traefik.http.routers.service_one_http.entrypoints=web"
            - "traefik.http.routers.service_one_http.middlewares=pathreplacemiddleware"
            - "traefik.http.routers.service_one_http.priority=2"

    service_two:
        image: custom-image
        expose:
            - 3000
        networks: 
            - pg_database
        labels:
            # Explicitly tell Traefik to expose this container
            - "traefik.enable=true"
            # Configure router (HTTP)
            - "traefik.http.routers.service_two_http.rule=Host(`mydomain.com`)"
            - "traefik.http.routers.service_two_http.entrypoints=web"
            - "traefik.http.routers.service_two_http.priority=1"

networks:
    pg_database:
        external: true

Нет проблем с доступом непосредственно к порту 80 (http) из внутренняя сеть компании. Проблема в том, что когда вы пытаетесь получить доступ через https извне, страница не загружается и показывает следующую ошибку: ERR_TOO_MANY_REDIRECTS.

Как видите, у меня нет правил перенаправления в traefik, поэтому я не могу понять, что могло случиться.

...