У меня есть ситуация, когда я хотел бы передать запрос типа https://something-dynamic.mydomain.com/resource/ на http://internal-service/something-dynamic/resource/ с использованием обратного прокси-сервера Traefik.
Пока что из читая документацию, я не могу найти никакого способа:
- Использовать совпадение из правила
HostRegexp
моего маршрутизатора в промежуточном программном обеспечении (например, addPrefix) - Считать заголовок хоста или хоста в
ReplacePathRegex
middleware - Использовать любое из
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/"