[英]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.