2017-02-06 2 views
3

Ich versuche, Nginx Ingress (NodePort) auf Google Container mit Proxy-Protokoll, so dass die echte IP-Adresse an Back-End-Dienst weitergeleitet werden kann, aber endete mit defekten Header.Kubernetes Nginx Ingress mit Proxy-Protokoll endete mit defekten Header

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 

Wenn ohne das Proxy-Protokoll, funktioniert die Sache gut. Laut der https://blog.mythic-beasts.com/2016/05/09/proxy-protocol-nginx-broken-header/ wird dies aufgrund des Protokolls v2 verwendet (binary), aber nginx kann nur v1 sprechen. Irgendein Vorschlag?

Antwort

0

Gerade lief ich selbst in dieses Problem. Für mich war ich nicht hinter einem Load Balancer (außer meinem Nginx Ingress), also brauchte ich eigentlich keinen proxy-protocol Satz.

Allerdings bekam ich 127.0.0.1 als Client IP immer noch. Der Trick ist, dass es einen Bug in der Version des nginx Ingress gab, den ich benutzte (0.9.0-beta.5). Die Aktualisierung meines Containerbildes auf gcr.io/google_containers/nginx-ingress-controller:0.9.0-beta.8 behob das Problem und ich erhielt den richtigen Header X-Forwarded-For.

Beachten Sie, dass die höheren Versionen (bis zu Beta.11 zum Zeitpunkt des Schreibens dieses) das Problem verblieben, so dass ich vorerst auf Beta.8 geblieben bin.

Sie können die verfügbaren Versionen unter https://console.cloud.google.com/gcr/images/google-containers/GLOBAL/nginx-ingress-controller sehen.

Wenn Sie die verfügbaren Konfigurationsoptionen anzeigen möchten, lesen Sie https://github.com/kubernetes/ingress/tree/master/controllers/nginx.

1

GKE: Mit kubernetes v1.6 + Quelle IP ist standardmäßig erhalten und kann in den Kopfzeilen unter x-real-ip gefunden werden, ohne irgendeine zusätzliche nginx Config zu setzen.

AWS: Quell-IP kann durch Zugabe dieser zu den Anmerkungen

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 

Kasse Link https://github.com/kubernetes/ingress/tree/master/examples/aws/nginx

bewahrt werden
Verwandte Themen