Ingress-nginx 的 uri 改写功能
对于 ingress-nginx
来说配置请求麻烦一点,一些复杂的需求需要通过 Ingress
的 annotation
来实现,比如我们需要实现一个 url rewrite 的功能。
URL 路径做一个 Rewrite, 在 ingress-nginx 官方文档中也给出了说明:
配置目标应用的 ingress
创建一个 ingress,path 匹配规则为 /abb(/|$)(.*)
,rewrite-target 中可以使用 path 中的正则匹配
1 | apiVersion: extensions/v1beta1 |
需要注意 rewrite-target 对 ingress 中的所有 path 有效。
效果
1 | [root@ingress]# curl --cacert ca.crt https://test.sy.com/abc/check_health.jsp |
如果要是代理外部url怎么办呢,这边先导入下service和endpoints
外部服务导入到 kubernetes 中
创建一个service
1 | [root@ingress]# cat service.yaml |
创建一个 与 Service 同名的 endpoint
1 | kind: Endpoints |
创建ingress
1 | apiVersion: extensions/v1beta1 |
访问:
假设前面我们再加上一个跳转,让他默认跳转到10.48.22.145, 们可以通过 configuration-snippet
配置来完成,如下 Ingress 对象:
1 | apiVersion: extensions/v1beta1 |
访问效果: