繁体   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