簡體   English   中英

是否可以在k8s Ingress Controller中重寫HOST標頭?

[英]Is it possible to rewrite HOST header in k8s Ingress Controller?

由於某些依賴Host標頭才能正常運行的舊版應用程序,我需要具有一個Ingress(代理等),該In能夠重寫Host標頭並將其傳遞給下游(后端)。 是否有任何支持此功能的Ingress Controller?

例:

最終用戶通過foo.com/a對於后端afoo.com/b對於后端b訪問我們的網站。 但是由於ab是舊版應用,因此它僅接受:

  • Host: a.foo.com時, a接受連接
  • bHost: 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支持重寫uriauthority (主機標頭),如該鏈接中所述: 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM