redirect - Traefik 从一台主机重定向到另一台主机
问题描述
我们决定从子域结构转移到一个带有路径前缀的根域,但是我们在互联网上得到了许多旧的 URL。那么有什么办法可以将旧网址的重定向添加到新网址?例如,我们将子域 test.example.com 切换到 example.com/test,我可以使用 docker-swarm YAML 文件中的字符串正确访问站点,
traefik.frontend.rule: Host:example.com;PathPrefixStrip:/test
但是当我尝试添加到 Traefik 配置重定向时,例如:
[http.middlewares]
[http.middlewares.test-redirectregex.redirectRegex]
regex = "^https://(*).example.com/)"
replacement = "^https://example.com/${1}"
Traefik 说它不知道将这个请求转发到哪里 如果我要添加:
traefik.frontend.rule: Host:test.example.com,example.com;PathPrefixStrip:/test
Traefik 会为两个主机添加一个前缀。有没有办法在不添加第二个反向代理的情况下解决这个问题?
解决方案
假设您使用的是 Traefik 2.1,您可以使用以下 Traefik 中间件
[http.middlewares]
[http.middlewares.blog-redirect.redirectRegex]
regex = "^(https?://)(.*).example.com/(.*)$"
replacement = "${1}example.com/${2}/${3}"
permanent = true
激活上述中间件的重要步骤是在相应的路由器和服务上添加以下标签。例如,如果您blog
是一个服务并为它定义了一个blog
路由器,那么您需要将下表添加到服务中
traefik.http.routers.blog.middlewares=blog-redirect
此外,您的路由规则应类似于以下规则,以便能够处理两个域(或者您为每个服务定义多个路由)
- traefik.http.routers.blog.rule=Host(`example.com`) && Path(`/test`) || Host(`api.example.com``)
在这篇文章中,您可以找到有关流量和重定向的更多信息
推荐阅读
- wpf - 如何在 ArcGIS Runtime 中从本地栅格文件中获取波段计数
- python - Python {NameError} 名称 'self' 未在 __init__ 中定义
- string - Bash:字符串拆分问题
- android - 移动到 Activity 中的下一个片段时,Android 保持软件键盘打开
- node.js - express.static 不会使所有文件都静态
- javascript - JavaScript - 使用按钮在绿色和白色之间切换背景
- android - 如何在 nativescript 中使用 NotificationListenerService
- firebase - 在 Firebase 云功能中生成撤消电子邮件更改链接
- .net - dotnet CLI “错误:没有可用于包 'myCustomPackage' 的版本。”
- css - 应用 box-shadow
在材质界面中