ingress 路由地址重写与规则解释

Posted 安享落幕

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ingress 路由地址重写与规则解释相关的知识,希望对你有一定的参考价值。

nginx rewrite 地址重写规则

rewrite ^(.*)$  /msie/$1 break; 这里的$1调用的是是前面括号中匹配的内容,那$是什么意思?
^(.*)$    :   ^ 代表以什么开头, $代表以什么结尾, . 指代除换行符以外的所有字符, * 代表0个或者任意多个, 整体代表匹配任何请求;

$1 匹配第一个括号的内容, $2匹配第二个括号内容,这里只有一个括号,就是匹配括号的任意请求都转发到/mise/目录下。 如原来的请求为 www.abc.com/a.html就会转发到www.abc.com/msie/a.html下。

ingress 路由地址重写

Ingress配置的规则

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: example-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /service/
backend:
serviceName: app1
servicePort: 8080

#通过example.com/app1/就可以访问到app1的/service/目录,这里需要注意,app1中需要定义/service/路由,否则会出现错误,以上的配置文件最终的nginx规则是: example.com/service/ --> app1:8080/

需求:上面的path定义生成的规则是: host.example.com/service/ ⇒ app1:8080/。如果app1中服务路由并不是定义在根目录(/),假设我们的实际情况是: host.example.com/service/ ⇒ app1:8080/s1/,那么则需要做一个rewrite

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: example-ingress
annotations:
nginx.ingress.kubernetes.io/configuration-snippet: |
rewrite /service/(.*) /s1/$1 break;
spec:
rules:
- host: example.com
http:
paths:
- path: /service/
backend:
serviceName: app1
servicePort: 8080

以上是关于ingress 路由地址重写与规则解释的主要内容,如果未能解决你的问题,请参考以下文章

Ingress 原理及实例

企业运维实战--k8s学习笔记6.Ingress加密认证以及地址重写

部署Ingress Controller1.31 以及使用案例

k8sIngress(部署,域名访问,加密,认证,地址重写)

企业运维实战--k8s学习笔记 通过Ingress-nginx实现k8s七层负载均衡Ingress加密认证以及地址重写

LNMP部署(地址重写)