Всем привет. Столкнулся с такой проблемой. Было принято решение использовать схему соединения для доступа к сайтам Haproxy1/tcp -> Haproxy2/https -> nginx/http
Haproxy1/tcp - выступает в качестве балансировщика, сервер находится в первом облаке.
Haproxy2/https - занимается https и гонит трафик на nginx. в этом случае haproxy и nginx находятся в локальной сети ДЦ.
Задача реализовать данную статью (https://habr.com/ru/post/247297/). Только у меня как писал выше в схеме еще один прокси сервер.
Нужна именно Балансировка на транспортном уровне (Layer 4): передача TCP-трафика с HAProxy на Nginx.
Сложность сейчас в том, что при настройке сервера haproxy1 сайт работает нормально, передает tcp трафик и все круто, но на сервере harproxy2 я получаю IP не юзера, который зашел на сайт, а самого haproxy1
defaults
log global
option redispatch
option tcp-smart-accept
option tcp-smart-connect
retries 3
maxconn 2000
timeout connect 5000
timeout check 3000
timeout client 50000
timeout server 50000
frontend https_frontend_ssl_pass
mode tcp
bind *:443
default_backend web_server_tcp
backend web_server_tcp
mode tcp
balance roundrobin
server s1_tcp 2.2.2.2:443 check
#server s2_tcp 2.2.2.2:443 send-proxy check
Проблема заключается в последней строчке, при использовании send-proxy сайт падает, а в логах haproxy2 получаю ошибку.
https_sites/1: SSL handshake failure
В моем случае я так понимаю, нужно докрутить Haproxy2/https. Но не знаю в какую сторону смотреть. В документации пока ответа не нашел. Настройка Haproxy2/https
frontend http_sites
mode http
option httplog
option dontlognull
bind *:80 process 1
acl letsencrypt-acl path_beg /.well-known/acme-challenge/
redirect scheme https code 301 if !letsencrypt-acl
use_backend letsencrypt-backend if letsencrypt-acl
default_backend nginx-backend
frontend https_sites
mode http
option httplog
option dontlognull
bind *:443 ssl crt /etc/haproxy/ssl process 1
http-request set-header X-Forwarded-Proto https
default_backend nginx-backend
backend nginx-backend
mode http
option forwardfor
option httpchk GET /
http-check send hdr Host localhost
server nginx-1 127.0.0.1:8080 weight 50 maxconn 1000 check inter 4s
backend letsencrypt-backend
mode http
server letsencrypt 127.0.0.1:8888