Ale*_*aev 6 traefik traefik-ingress
Traefik 入口控制器已经支持traefik.frontend.rule.type: PathPrefixStrip相当长一段时间了,当微服务的根路径需要在example.com/path/.
以下是带有清单的 yaml 示例:
\n\napiVersion: extensions/v1beta1\nkind: Ingress\nmetadata:\n name: example\n annotations:\n traefik.frontend.rule.type: PathPrefixStrip\nspec:\n rules:\n - host: example.com\n http:\n paths:\n - path: /path/\n backend:\n serviceName: example\n servicePort: http\nRun Code Online (Sandbox Code Playgroud)\n\n这种方法的问题在于,当客户端转到 \xe2\x80\x93 时,它不会添加尾部斜杠(example.com/path如果我理解正确的话),这只能通过额外的入口规则来实现。
traefik 的最新版本支持更广泛的注释集,这表明可以在一个规则内声明添加尾部斜杠。
\n\n这是我在 traefik 中解决这个问题的尝试1.7:
apiVersion: extensions/v1beta1\nkind: Ingress\nmetadata:\n name: example\n annotations:\n traefik.ingress.kubernetes.io/redirect-permanent: "true"\n traefik.ingress.kubernetes.io/redirect-regex: https?://example.com/path$\n traefik.ingress.kubernetes.io/redirect-replacement: https://example.com/path/\n traefik.ingress.kubernetes.io/request-modifier: "ReplacePathRegex: ^/path/(.*) /$1"\nspec:\n rules:\n - host: example.com\n http:\n paths:\n - path: /path\n backend:\n serviceName: example\n servicePort: http\nRun Code Online (Sandbox Code Playgroud)\n\n这是可行的,但我不确定该解决方案是否是最优雅和最高效的。哪些方面可以简化或改进?是否可以概括正则表达式以使复制粘贴更容易?
\n\n这是目标,只是回顾一下:
\n\nhttp://example.com/path\xe2\x86\x92 301 到http://example.com/path/
\n http://example.com/path/\xe2\x86\x92 示例微服务,路径/
\n http://example.com/path/abcde\xe2\x86\x92 示例微服务,路径/abcde
| 归档时间: |
|
| 查看次数: |
2970 次 |
| 最近记录: |