С HAProxy у вас обычно есть два варианта для обработки сценариев, связанных с TLS. TLS Passthrough
и TLS Termination
.
TLS Passthrough
Похоже, вы пытаетесь сделать это в приведенном вами примере.
В этом режиме HAProxy
никак не затрагивает трафик, а просто перенаправляет его на сервер. Когда задействован TLS, это означает, что бэкэнд должен иметь надлежащий сертификат для домена, к которому он обращается - если ваш HAProxy
обрабатывает трафик для myexample.com
, на бэкэнд-серверах должны быть установлены соответствующие сертификаты для myexample.com
.
Вы всегда можете проверить, какой сертификат обслуживается, используя openssl s_client
:
openssl s_client -connect localhost:443
TLS Termination
Кроме того, вы можете завершить трафик TLS на самом HAProxy
. Это позволит вам использовать любой бэкэнд (как зашифрованный, так и незашифрованный). В этом случае HAProxy
сам расшифровывает трафик для myexample.com
и перенаправляет его на сервер.
В вашем случае конфигурация будет выглядеть примерно так:
frontend foofront
bind 127.0.0.1:80
bind 127.0.0.1:443 ssl crt /path/to/cert/for/myexample.com
mode tcp
default_backend foo
backend foo
mode tcp
balance leastconn
server foo foo.bar.com:443 check ssl verify none # or verify all to enforce ssl checking
Вы можете найти больше информации об обоих подходах здесь .
Надеюсь, это поможет.