[英]Is it possible to rewrite HOST header in k8s Ingress Controller?
由於某些依賴Host標頭才能正常運行的舊版應用程序,我需要具有一個Ingress(代理等),該In能夠重寫Host標頭並將其傳遞給下游(后端)。 是否有任何支持此功能的Ingress Controller?
例:
最終用戶通過foo.com/a
對於后端a
和foo.com/b
對於后端b
訪問我們的網站。 但是由於a
和b
是舊版應用,因此它僅接受:
Host: a.foo.com
時, a
接受連接 b
在Host: b.foo.com
時接受連接 可以使用以下注釋來完成: nginx.ingress.kubernetes.io/upstream-vhost: host.example.com
我不確定是否可以在NGINX Ingress Controller中找到合適的批注來修改Host標頭,以使其也符合您的要求。 但是,您可以考慮使用nginx.ingress.kubernetes.io/configuration-snippet
批注 ,以便將配置代碼段附加到特定Nginx控制器容器的nginx.conf
內部的位置塊:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/configuration-snippet: |
proxy_set_header Host www.example-host.com;
name: my-app
spec:
rules:
- host: my-app.example.com
http:
paths:
- backend:
path: /app
serviceName: my-app
servicePort: http
我們在此處為目標URL my-app.example.com
設置主機標頭www.example-host.com
。
我想將我的發現添加到我的這個問題中。
盡管我的解決方案未使用k8s Ingress Controller,但我們的集群使用的是Istio,Istio的VirtualService支持重寫uri
和authority
(主機標頭),如該鏈接中所述: https ://istio.io/docs/reference/config/istio 。 networking.v1alpha3 /#HTTPRewrite
要了解在我的情況下如何實現,您可以查看以下鏈接: https : //github.com/istio/istio/issues/11668
您可以在kubernetes上使用Ingress Nginx控制器,並設置head和Transer以后端和管理來自Ingress對象的服務連接。
此處共享用於從標頭重寫目標的鏈接。
https://kubernetes.github.io/ingress-nginx/examples/rewrite/
您可以添加ssl證書管理器,讓ingress nginx很好用。
使用入口注釋管理其他事物。
檢查此入口SSl設置,您可以根據需要對其進行修改
https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nginx-ingress-with-cert-manager-on-digitalocean-kubernetes
最后進入
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
tls:
- hosts:
- myapp.abc.com
secretName: ingress-tls
rules:
- host: myapp.abc.com
http:
paths:
- path: /my-service
backend:
serviceName: my-backend
servicePort: 80
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.