亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

基于 Traefik 如何實現 path 末尾自動加斜杠?

標簽:
Kubernetes

前言

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

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

实践中,一个很常见的需求,用户输入的 url 是 ewhisper.cn/alert-manager, 如果什么都不做会返回 404, 需要自动加斜杠变成 ewhisper.cn/alert-manager/, 如何基于 Traefik on K8S 实现?

答案是:用 redirectRegex MiddleWare + 正则。

实战

直接创建如下的 MiddleWare:

apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: auto-add-slash
spec:
  redirectRegex:
    permanent: true
    regex: ^(https?://[^/]+/[-a-z0-9_]+)$
    replacement: ${1}/

📝说明如下:

正则匹配的内容为:

  • ^(https?: 以 https 或 http 开头的内容;? 表示匹配前一个字符 0 或 1
  • [^/]+/: 匹配 URL 第一个 / 之前的内容
  • [-a-z0-9_]+: 匹配第一个 / 之后的内容,往往为字母数字和中划线及下划线

最终,^(https?://[^/]+/[-a-z0-9_]+)$ 该 group 匹配的内容示例如:https://ewhisper.cn/monitor-alertmanager, 并将其替换为:${1}/, 即将匹配的 group 后面加上 /, 示例如:https://ewhisper.cn/monitor-alertmanager

🐾 注意:

上面的 MiddleWare 可能无法适应所有的情况, 读者可以领会其要点, 并根据自己的需求做适当调整.

IngressRoute 使用

直接这样使用:

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

🎉🎉🎉 完成!

EOF

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

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消