Используя Traefik, как мне переписать путь на основе хоста запроса? - PullRequest
0 голосов
/ 30 марта 2020

У меня есть ситуация, когда я хотел бы передать запрос типа https://something-dynamic.mydomain.com/resource/ на http://internal-service/something-dynamic/resource/ с использованием обратного прокси-сервера Traefik.

Пока что из читая документацию, я не могу найти никакого способа:

  1. Использовать совпадение из правила HostRegexp моего маршрутизатора в промежуточном программном обеспечении (например, addPrefix)
  2. Считать заголовок хоста или хоста в ReplacePathRegex middleware
  3. Использовать любое из Redirect* middleware без выдачи ответа 30 *

Возможно ли это даже с Traefik?

Ради полнота, это то, что я хотел бы сделать в конфигурации:

[http]
  [http.routers]
    [http.routers.demo]
      rule = "HostRegexp(`{bucketName:[a-z\\-]+}.demo.localhost`)"
      middlewares = ["addBucket"]
      service = "demo"

  [http.middlewares.addBucket]
    [http.middlewares.addBucket.addPrefix]
      # this obviously does not work
      prefix = "/{bucketName}/"

  [http.services]
    [http.services.demo.loadBalancer]
      passHostHeader = false
      [[http.services.demo.loadBalancer.servers]]
        url = "http://my-resource.s3-website.eu-central-1.amazonaws.com/"
...