如何在Traefik v1.x中不使用后端将多个域重定向到外部域?

时间:2019-07-09 06:51:36

标签: redirect networking traefik

我想从domain1.comdomain2.comdomain50.com重定向到external.com,但没有后端(仅301重定向)。 我确实听说过可以通过某些入口点正则表达式来实现,但是我想将许多域重定向到特定域。

参考文献:

2 个答案:

答案 0 :(得分:0)

发现了:

[entryPoints]
  [entryPoints.http]
  address = ":80"
    [entryPoints.http.redirect]
      regex = "^http://localhost/(.*)"
      replacement = "http://mydomain/$1"

答案 1 :(得分:0)

由于Traefik v1.x在没有后端的情况下不支持多个重定向,因此我解决了添加此hack的问题,从而部分解决了我的问题。

我基本上是通过一个重定向正则表达式来完成的,对于第一个组 使用一个前端+伪造的后端,然后对于第二个 来说,仅对入口点级别进行一次重定向,因为入口点还支持基于正则表达式的重定向。

这是对我有用的完整配置:

[entryPoints]
  [entryPoints.http]
  address = ":80"
    [entryPoints.http.redirect]
    entryPoint = "https"
    permanent = true

[entryPoints.https]
  address = ":443"
    [entryPoints.https.redirect]
      # Group 1
      regex = "https://(www.)?(d1.com|d2.com|d3.com)(.+)?"
      replacement = "https://www.x1.com$3"
      permanent = true
    [entryPoints.https.tls]

[file]
watch = true

[backends]
  [backends.fake]
    [backends.fake.servers.s1]
      url = "http://1.2.3.4"

[frontends]
  [frontends.r2]
    entryPoints = ["https"]
    backend = "fake"
    [frontends.r2.redirect]
      # Group 2
      regex = "https://(www.)?(d4.com|d5.com|d6.com)(.+)?"
      replacement = "https://www.x2.com$3"
      permanent = false

有关此问题的完整讨论可以在Traefik官方论坛中找到: External domain redirection without backend proxy using Traefik v1.x