概述使用代理协议的kubernetes nginx入口最终以损坏的标题结束
我尝试在代理协议的谷歌容器上设置Nginx入口(nodeport),以便真正的IP可以被转发到后端服务,但结束了与头破碎。
2017/02/05 13:48:52 [error] 18#18: *2 broken header: \” ~ ]H k m[| I iv. {y Z 嵦v Ȭq 2Iu4P z; o$ s \” + /,0̨̩ /\” while reading PROXY protocol,clIEnt: 10.50.0.1,server: 0.0.0.0:443
如果没有代理协议,事情运作良好。 根据https://blog.mythic-beasts.com/2016/05/09/proxy-protocol-Nginx-broken-header/这是由于协议v2使用(二进制),但Nginx只能说v1 。 任何build议?
GKE:使用kubernetes v1.6 + source ip默认保存,可以在x-real-ip下的头文件中找到,而不需要设置任何额外的Nginx配置。
AWS:通过将其添加到注释中,可以保留源IP
APIVersion: v1 kind: Service Metadata: name: nginx-ingress namespace: nginx-ingress annotations: service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: \’*\’ labels: app: nginx-ingress
签出此链接https://github.com/kubernetes/ingress/tree/master/examples/aws/Nginx
刚刚遇到这个问题,我自己。 对我来说,我并不是一个负载均衡器(除了我的Nginx入口),所以我实际上并不需要proxy-protocol集。
但是,我得到127.0.0.1作为客户端IP仍然。 诀窍是在我使用的Nginx入口版本中存在一个错误(0.9.0-beta.5)。 更新我的容器图像到gcr.io/Google_containers/nginx-ingress-controller:0.9.0-beta.8修复了这个问题,我收到了正确的X-Forwarded-For头。
请注意,更高的版本(在撰写本文时为beta.11)还有问题,所以我暂时停留在beta.8上。
您可以在https://console.cloud.Google.com/gcr/images/Google-containers/GLOBAL/nginx-ingress-controller上查看可用的版本。
如果您想查看可用的配置选项,请查看https://github.com/kubernetes/ingress/tree/master/controllers/Nginx 。
总结
以上是内存溢出为你收集整理的使用代理协议的kubernetes nginx入口最终以损坏的标题结束全部内容,希望文章能够帮你解决使用代理协议的kubernetes nginx入口最终以损坏的标题结束所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容