我有一個簡單的入口組態檔-
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /link2/link3/
name: tut-ingress
namespace: default
spec:
rules:
- host: tutorial.com
http:
paths:
- path: /link1/
pathType: Prefix
backend:
service:
name: nginx-ingress-tut-service
port:
number: 8080
其中請求到達/link1或被/link1/重寫到
/link2/link3/. 當我使用它訪問它時,我會看到http://tutorial.com/link1/
正確的結果,但是當我使用它訪問它時
http://tutorial.com/link1,我得到一個 404 not found。具有以下nginx-ingress-tut-service端點-
//link1/link2/link3
我是網路領域的初學者,任何幫助將不勝感激。
當我將其更改為-
- path: /link1
它開始作業正常,但任何人都可以告訴為什么它不能與/link1/.
有用的資源 - https://kubernetes.io/docs/concepts/services-networking/ingress/#examples
https://kubernetes.github.io/ingress-nginx/examples/rewrite/
編輯-還請解釋當您在中撰寫完整的 HTTP 鏈接時會發生什么
nginx.ingress.kubernetes.io/rewrite-target
uj5u.com熱心網友回復:
答案發布在評論中:
好吧,
/link1/不是前綴,/link1因為前綴必須與目標字串的長度相同或更長
如果你有
- path: /link1/
/要匹配的字串必須在路徑末尾有一個字符。一切正常。在這種情況下,如果您嘗試通過鏈接訪問,http://tutorial.com/link1您將收到 404 錯誤,因為 ingress 是期待 http://tutorial.com/link1/的。
有關更多資訊,您可以查看有關路徑型別的重寫規則和檔案的示例:
Ingress 中的每條路徑都需要具有相應的路徑型別。不包含顯式的路徑
pathType將無法通過驗證。支持三種路徑型別:
ImplementationSpecific: 使用這種路徑型別,匹配取決于 IngressClass。實作可以將其視為單獨的pathType或將其視為與Prefix路徑Exact型別相同。
Exact: 完全匹配 URL 路徑并且區分大小寫。
Prefix: 基于由 . 分割的 URL 路徑前綴匹配/。匹配區分大小寫,并在逐個元素的路徑元素基礎上完成。路徑元素是指由/分隔符分割的路徑中的標簽串列。 如果每個 p都是請求路徑的p 的元素前綴, 則請求是路徑p的匹配 項 。
編輯: 根據檔案,這應該可以作業,但看起來nginx ingress 有一個新問題。問題仍未解決。您可以使用本主題中發布的解決方法或嘗試更改您的類似以下內容:
- path: /link1(/|$)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/445327.html
標籤:Kubernetes 网址 url重写 Kubernetes入口
下一篇:ReactRouterDom問題-localhost:3000/products到localhost:3000/products/2作業正常,但是當我重繪頁面時,我在控制臺中收到一些錯誤
