Я пытаюсь разместить HTTPS-сервер позади HAProxy load balancer. Сервер HTTPS работает на Node.js на порту 8000, имеет все правильные сертификаты и ключи SSL и работает, если я попытаюсь получить доступ к нему напрямую через URL-адрес, например. https://ssltest.mydomain.com:8000/
. Я также могу проверить соединение SSL, используя openssl s_client -connect ssltest.mydomain.com:8000
, и он показывает данные, которые кажутся правильными.SSL over HAProxy issue
Передний конец для этого HTTPS-сервера является другим поддоменом, например. app.mydomain.com
и он работает по порту SSL по умолчанию 443.
Но когда я пытаюсь получить доступ к https://app.mydomain.com
из своего браузера, я получаю сообщение об ошибке SSL. Приведенная выше команда проверки линии также не: openssl s_client -connect app.mydomain.com:443 -state -debug
Ниже, как мой HA Proxy конфигурации выглядит следующим образом:
global
log /dev/log local0 info
log /dev/log local0 notice
maxconn 20000
user haproxy
group haproxy
daemon
spread-checks 5
defaults
log global
mode tcp
option dontlognull
retries 3
option redispatch
timeout connect 30s
timeout client 30s
timeout server 30s
timeout check 5s
balance roundrobin
frontend https_proxy
bind :443
acl is_app hdr_dom(host) -i app.mydomain.com
acl is_rest hdr_dom(host) -i rest.mydomain.com
acl is_io hdr_dom(host) -i io.mydomain.com
use_backend core_https if is_app
use_backend core_rest_api if is_rest
use_backend core_www_io if is_io
backend core_https
server www1 10.0.0.174:8000 maxconn 25 check inter 5s rise 18 fall 2
backend core_www_io
server io1 10.0.0.174:8100 maxconn 25 check inter 5s rise 18 fall 2
backend core_rest_api
server api1 10.0.0.174:8200 maxconn 25 check inter 5s rise 18 fall 2
Я не могу понять, почему это не работает через HAProxy но работает напрямую, и я бы ДЕЙСТВИТЕЛЬНО оцените ваши предложения.
Я мало знаю о haproxy, но мне кажется, что вы хотите получить доступ к 3 различным бэкендам, в зависимости от хоста, который клиент отправляет в своем хосте: http-заголовок. Это не работает с SSL, потому что HTTP-заголовки не отправляются на сервер до тех пор, пока не будут согласованы SSL, и согласование SSL уже должно знать о целевом имени хоста, чтобы выбрать правильный сертификат. –
спасибо за ответ, но в этом случае не имеет значения, если это 1,3 или более разных хостов. Это не работает ни для одного из них, как я уже сказал, но работает при непосредственном подключении к хосту без HAProxy –