微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

这就是我如何使用入口定义对我的服务的访问。

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),section 3.2.2,,URL http://www.example.comhttp://www.example.com/ 是等价的,HTTP 客户端在向服务器发送请求之前必须将前者规范化为后者:

“如果 abs_path 不存在于 URL 中,则在用作资源的请求 URI (section 5.1.2) 时,它必须以“/”形式给出。” >

第 5.1.2 节所述:

“请注意,绝对路径不能为空;如果原始 URI 中不存在,则必须以“/”(服务器根目录)形式给出。”

RFC 3986 (URI Generic Syntax)section 6.2.3,Scheme-Based Normalization 中确认了这一点,并指出:

"例如,由于"http"方案使用了权限组件,默认端口为"80",并且定义了一个空路径等效于"/",所以以下四个URI是等效的:

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

一般来说,一个使用通用语法的带有空路径的权限的 URI 应该被规范化为“/”的路径。同样,显式的“:port”,其端口为空或方案的默认值,等同于省略了端口及其“:”定界符,因此应通过基于方案的规范化删除。例如,上面的第二个 URI 是“http”方案的标准形式。

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

因此,无论您使用 http://www.example.com 还是 http://www.example.com/,对浏览器或搜索引擎都没有影响。它们是等价的。

接下来,如果您提供有关您正在执行的现场场景或测试的更多详细信息,将会很有帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。