基于 Traefik 如何实现 path 末尾自动加斜杠?
前言
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 编写.
基于 Traefik 如何实现 path 末尾自动加斜杠?的更多相关文章
- nginx url自动加斜杠的问题
nginx url自动加斜杠问题及301重定向 时间:2016-02-04 15:14:28来源:网络 导读:nginx url自动加斜杠问题及301重定向,URL指向一个目录并且在最后没有包含斜杠, ...
- 关于tomcat会在url末尾自动追加斜杠(/)
今天,突然发现一个问题, 比如我的请求路径为 http://ip:port/my_project/myapp, 在浏览器中敲入这个地址,然后会显示 http://ip:port/my_project ...
- mv目录前后要加斜杠,否则会当成文件
mv目录要加斜杠,否则会当成文件
- PHP中让json_encode不自动转义斜杠“/”的方法
最近将使用爬虫爬取的链接保存到 mysql 数据库中时,发现我将链接使用 json_encode 保存时候,在数据库中却显示了转义字符,我并不需要这转义的,看起来不清晰而且占用存储空间. 后来发现在默 ...
- url中是否加斜杠/
通常来说,不加斜杠的形式(如”example.jsp”)请求的是相对于当前页面路径的资源 http://localhost:8080/webapp/examole:加斜杠的形式(”/example.j ...
- ereg()替换为preg_match(),ereg_repalce替换为preg_replace得加斜杠
PHP 5.3 ereg() 无法正常使用,提示“Function ereg() is deprecated Error”是因为它长ereg 函数进行了升级处理,需要像preg_match使用/ /来 ...
- SpringMVC路径问题回顾,加斜杠和不加斜杠的问题(六)
绝对路径:全的路径. 相对路径:有参照的路径. 加斜杠和不加斜杠的问题如下:(分前台和后台路径,明白这两个就知道什么意思了) 如果是页面,这个图片路径出现在jsp页面,所以是前台路径,前台路径的参照物 ...
- json_encode不自动转义斜杠“/”的方法
默认的情况之下使用 json_encode 对数组进行 json 格式的转换时候会自动的将数据中含有斜杠的字符串进行转义,如图 两种解决办法 其一,正则替换: $a = str_replace(& ...
- python 编码 自动加双斜杠问题
小编最近在进行utf-8转码的时候,遇到一个问题: 当其他编码中含有斜杆,如: 当取出该字符串时,会自动把斜杆转换成双斜杠 导致转码报错: 这时候可以在转码的时候加上,即可转换成功了 .decode( ...
- apache的rewrite规则来实现URL末尾是否带斜杠
1.url: http://www.test.com/user/ 跟:http://www.test.com/user 这两个URL对于用户来说应该是一样的,但从编程的角度来说,它们可以不相同 但我们 ...
随机推荐
- Node.js(一)基本node.js读取删除
npm init -y(初始化项目) npm uninstall (xxx模块名称)=>(移除模块) var text2=require("./text2"); //解构 c ...
- CentOS 7.9 安装 rocketmq-4.9.2
一.CentOS 7.9 安装 rocketmq-4.9.2 地址: https://rocketmq.apache.org https://github.com/apache/rocketmq ht ...
- Redis高可用之主从复制原理演进分析
Redis高可用之主从复制原理演进分析 在很久之前写过一篇 Redis 主从复制原理的简略分析,基本是一个笔记类文章. 一.什么是主从复制 1.1 什么是主从复制 主从复制,从名字可以看出,至少需要 ...
- python用ffmpeg进行视频处理
1.下载及安装 在ffmpeg官网https://ffmpeg.zeranoe.com/builds/可以下载到需要的版本,然后解压到D盘,添加环境变量(如D:\ffmpeg\bin) 在cmd输入f ...
- 读书笔记《A Philosophy of Software Design - John Ousterhout 软件设计哲学》
软件设计哲学这本书很薄,值得一读.这本书将大家平时碰到的很多软件问题从更深刻的层面进行了抽象分析,同时又给出了具体的解决方案.可以说既有理论高度,又能贴近实践. 但针对软件问题,这本书并没有提出太多与 ...
- AR路由器如何配置Portal认证(二层网络)
规格 适用于所有版本.所有形态的AR路由器. 说明: 4GE-2S.4ES2G-S.4ES2GP-S和9ES2单板不支持NAC功能. 组网需求 如图所示,某公司接待室需要部署一套身份认证系统,对接入网 ...
- 【Java集合框架001】为什么重写equals就要重写hashcode?
一.前言 如果面试官问:你重写过 hashcode 和 equals 么,为什么重写equals时必须重写hashCode方法? 遇到这样的问题,应该怎样回答呢?其实,equals和hashCode都 ...
- Spring Security(3)
您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来- 前面运行写好的代码之所以没有任何显示,是因为还没有对Spring Security进行配置,当然啥也不显示了.这就好比你坐在车上,却不打开发动机 ...
- rpm环境安装dpkg包管理工具
rpm环境安装dpkg包管理工具 索引:dpkg-scanpackages.dpkg.dpkg-query.dpkg-source.dpkg-scansource 在centos.redhat.麒麟服 ...
- Vue 路由跳转显示空白页面的问题
在写一个登录界面跳转到首页时,路由如下 export default new VueRouter({ routes: [ { path: "/", name: "Logi ...