带有前缀路径的nginx入口删除尾部斜杠



这就是我定义使用ingress访问服务的方式。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: client-ingress
spec:
rules:
- host: gemini.demo
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: client-service
port:
number: 80

基本上它是根据我的需要工作的,除了一个小细节。在浏览器中,如果没有以下路径,前缀斜杠将保留在域后面。

所以当我去http://gemini.demo时,我会得到http://gemini.demo/

如何去掉域末尾的斜杠?

根据RFC 2616(HTTP/1.1(第3.2.2节,URLhttp://www.example.com和http://www.example.com/是等效的,HTTP客户端在向服务器发送请求之前必须将前者规范化为后者:

"如果abs_path不存在于URL中,则必须将其给定为"abs_path"/"当用作资源的请求URI时(第5.1.2节(;

其中第5.1.2节规定:

"请注意,绝对路径不能为空;如果在原始URI中不存在,则必须将其给定为"0"/"(服务器根(">

RFC 3986(URI通用语法(第6.2.3节,基于方案的规范化中证实了这一点,注意:

"例如;http";scheme利用了一个权威组件;80〃;,并且定义了一个空路径,该空路径等效于"0"/&";,以下四个URI是等效的:

http://example.com
http://example.com/
http://example.com:/
http://example.com:80/

一般来说,使用具有空路径的权威的通用语法的URI应该被规范化为路径"/&";。同样,一个明确的":端口";,端口为空或该方案的默认端口的一个等价于端口及其":"分隔符被消除,因此应该通过基于方案的规范化来去除。例如,上面的第二个URI是";http";方案">

从技术上讲,RFC 3986第6.2.3节中描述的规范化对于例如仅索引URL的实现是可选的,尽管RFC 2616对希望实际发送HTTP请求的客户端来说是强制性的。尽管如此,考虑到标准允许这种规范化,并且搜索引擎通常不想故意在索引中添加重复项,可以合理地确定,几乎所有的搜索引擎都会将所有这些URL规范化为相同的。

因此,无论您使用http://www.example.com或http://www.example.com/.它们是等价的。

展望未来,如果你提供更多关于你正在执行的现场场景或测试的细节,这将是有帮助的。

最新更新