为了账号安全,请及时绑定邮箱和手机立即绑定

基于Traefik如何实现向后转发自动去掉前缀?

标签:
Kubernetes

前言

Traefik 是一个现代的 HTTP 反向代理和负载均衡器,使部署微服务变得容易。

Traefik 可以与现有的多种基础设施组件(Docker、Swarm 模式、Kubernetes、Marathon、Consul、Etcd、Rancher、Amazon ECS…)集成,并自动和动态地配置自己。

系列文章:

实践中, 往往会有这样的需求, 用户输入的url是https://ewhisper.cn/alert-manager/#/alerts, 但是转发到后端要变成http://alertmanager:9093/#/alerts, 如何基于 Traefik on K8S 实现?

答案是: 使用 StripPrefixRegex MiddleWare.

实战

直接创建如下的一个 MiddleWare:

apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: strip-prefix-1
spec:
  stripPrefixRegex:
    regex:
      - /[^/]+/

以上实现的功能就是去掉一层/<xxx>/ 前缀.

去掉两层前缀

去掉两层前缀也很简单:

apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: strip-prefix-2
spec:
  stripPrefixRegex:
    regex:
      - /[^/]+/[^/]+/

IngressRoute 使用

直接这样使用:

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: alertmanager
spec:
  routes:
    - kind: Rule
      match: Host(`ewhisper.cn`) && PathPrefix(`/alertmanager/`)
      middlewares:
        - name: strip-prefix-1
      services:
        - name: alertmanager
          port: 9093

🎉🎉🎉 完成!

EOF

三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消