Получаем IP-адреса HTTPS-клиентов с HAProxy (frontend) на Nginx (backend) в режимах HTTP и TCP-балансировки

Thank you for reading this post, don't forget to subscribe!

В слу­чае балан­си­ров­ки и тер­ми­на­ции HTTP(S)-трафика на HAProxy (Layer 7) дан­ная зада­ча лег­ко реша­ет­ся добав­ле­ни­ем заго­лов­ка “X-Real-IP” и его обра­бот­кой на Nginx при помо­щи моду­ля ngx_http_realip_module . При балан­си­ров­ке TCP-тра­фи­ка от HTTPS-кли­ен­тов и пере­да­че его на веб-сер­ве­ра напря­мую без моди­фи­ка­ции или тер­ми­на­ции (Layer 4) доба­вить дан­ный заго­ло­вок невоз­мож­но, поэто­му тре­бу­ет­ся вос­поль­зо­вать­ся воз­мож­но­стя­ми, предо­став­ля­е­мы­ми Proxy Protocol

Балансировка на прикладном уровне (Layer 7): терминация HTTPS-трафика на HAProxy и передача по HTTPS на Nginx

В дан­ном при­ме­ре HTTPS-тра­фик от кли­ен­та тер­ми­ни­ру­ет­ся на HAProxy, моди­фи­ци­ру­ет­ся и пере­да­ет­ся на Nginx так же по HTTPS.

Балансировка на транспортном уровне (Layer 4): передача TCP-трафика с HAProxy на Nginx


В дан­ном при­ме­ре HTTPS-тра­фик кли­ен­тов не моди­фи­ци­ру­ет­ся (HAProxy вме­ши­ва­ет­ся в транс­порт­ный уро­вень) и его тер­ми­на­ция про­ис­хо­дит непо­сред­ствен­но на Nginx.

haproxy.cfg