перенаправить неизвестный адрес в traefik - PullRequest
0 голосов
/ 20 июня 2020

Как настроить траэфик для перенаправления всех неизвестных адресов? Я имею в виду следующее - я использую docker swarm с traefik, и у меня есть несколько сервисов с правилами, установленными в ярлыках:

  • "traefik.http.routers.app.rule=Host(`app.example.com`)"
  • "traefik.http.routers.else.rule=Host(`else.example.com`)"
  • et c.

Я хочу, чтобы обрабатывал запросы, для которых не найдено ни одного правила соответствия , например lalala.example.com -> example.com.

Я попытался добавить следующее в свой раздел ярлыков контейнера traefik:

- "traefik.http.routers.default.rule=HostRegexp(`{host:.+}`)"
- "traefik.http.routers.default.entrypoints=web,websecure"
- "traefik.http.routers.default.priority=1"
- "traefik.http.routers.default.middlewares=default-redirect"
- "traefik.http.middlewares.default-redirect.redirectregex.regex=.*"
- "traefik.http.middlewares.default-redirect.redirectregex.replacement=https://example.com"

Однако это не работает, каждая попытка запросить несуществующий адрес заканчивается на:

Websites prove their identity via certificates. Firefox does not trust this site because it uses a certificate that is not valid for lalala.example.com. The certificate is only valid for <some_random_id>.traefik.default.
 
Error code: MOZILLA_PKIX_ERROR_SELF_SIGNED_CERT

Letsencrypt отлично работает с моими существующими службами, и я также перенаправляю весь http на https, если это необходимо.

1 Ответ

0 голосов
/ 21 июня 2020

Попробуйте использовать следующие метки для установки перенаправления через промежуточное ПО

- traefik.http.middlewares.default_host.redirectregex.regex=^https://(.*)?example.com(.*)$$
- traefik.http.middlewares.default_host.redirectregex.replacement=https://example.com
- traefik.http.middlewares.default_host.redirectregex.permanent=true
- traefik.http.routers.http_catchall.rule=HostRegexp(`{any:.+}`)
- traefik.http.routers.http_catchall.entrypoints=web,websecure
- traefik.http.routers.http_catchall.middlewares=bevision

Вам также необходимо убедиться, что позволяет encrypt обрабатывать сертификаты SSL для всех доменов (для этого вам понадобится сертификат с подстановочными знаками)

- traefik.http.routers.wildcard.tls=true
- traefik.http.routers.wildcard.tls.certresolver=route53
- traefik.http.routers.wildcard.tls.domains[0].main=example.com
- traefik.http.routers.wildcard.tls.domains[0].sans=*.example.com
...