kubernetes基础知识之ingress之重写URL

360影视 动漫周边 2025-09-09 20:58 1

摘要:直接访问IP是访问不到的,原因是做了正则表达式的匹配路径重写规则。

kubernetes 重写URL统一资源定位符可以把一个请求的地址URL重定向到另外一个路径。

前端:frontend

后端:backed

touch ingress.yaml

vim ingress.yaml

apiVersion: networking.k8s.io/v1

kind: Ingress

name: rew.87long.com

namespace: ingress-nginx

annotations:

nginx.ingress.kubernetes.io/rewrite-target: /$2

spec:

ingressClassName: nginx

rules:

- host: rew.87long.com

paths:

- path: /api/(/|$)(.*)

pathType: ImplementationSpecific

backend:

name: nginx-service

number: 80

kubectl create -f ingress.yaml

打开主机hosts文件,添加域名解析IP:

$ip rew.87long.com

查看ingress:

kubectl get ingress -n ingress-nginx

直接访问IP是访问不到的,原因是做了正则表达式的匹配路径重写规则。

应该访问的方式是:域名/api

除此之外,斜杠之后还可以匹配斜杠或者字符串的请求路径。

这样做的好处是:改写了后端服务的URL路径,或者是统一资源定位服务。

前端:frontend

后端:backend

可以利用重写方案,把后端的一些URL路径重新定位到新的service服务里面,这就是重写的意义。

重写和重定向的区别:

在ingress控制器中,rewrite重写和Redirect重定向是两种不同的操作。

重写rewrite是指修改请求的路径,但是客户端不会察觉到这个变化,它仅在服务器内部发生,在kubernetes中,可以通过ingress的注解来配置重写规则。

比如在一个服务部署在/api的路径下,但是希望用户访问时不需要输入/api,那么可以使用重写将请求从根路径/重写到/api。

当然,倒过来也可以。把一个对根/的请求,也可以再加上不同的访问路径。

rewrite重写规则,添加或者减少URL中的路径都是可以的。

重定向是Redirect,是指服务器向客户端发起一个新的URL,让客户端进行新的请求。客户端会收到一个HTTP 3xx的状态码,然后根据其中的重定向地址进行新的请求。这意味着客户端会知道发生了重定向,它会发起新的请求。

比如一个旧网站的网址是http://www.87long.com,但是你希望把所有的请求都转发到HTTPS://www.baidu.com,这时就可以使用重定向将所有的HTTP请求重定向到HTTPS。

重定向就是代理域名的意思,通过A域名解析到B域名。

重定向可以使用curl 域名 -I 去查看。

只要网站的地址发生变化,都可以使用重定向去做到。

重写和重定向是不同的作用,需要注意区分。

重写和重定向的区别是:

影响范围:rewrite重写只是在服务器内部修改请求路径,不会影响到客户端。而redirect重定向则会向客户端发送一个新的URL,让客户端发起新的请求。

状态码不同:Rewrite重写不涉及状态码的改变,而Redirect重定向会向客户端发送一个重定向的HTTP状态码,例如301永久重定向、302临时重定向等。

可见性来说: Rewrite重写对于客户端来说是透明的,而Redirect则会告知客户端发生了重定向。

在选择Rewrite重写还是Redirect时,需要根据具体的需求来决定。如果你希望在不修改客户端请求的情况下修改路径,那么使用重写Rewrite。如果你希望客户端知道发生了重定向,并且根据新的URL访问新的请求,那么使用Redirect重定向。

玉渊潭秋景

鼓励的话语:强者不是没有眼泪,而是含着眼泪依然奔跑!

来源:Kaimai杂货铺

相关推荐