У меня проблема с настройкой HAProxy в режиме TCP с http2.
Моя основная цель - обслуживать статическую страницу обслуживания по HTTPS.
Вот моя конфигурация HAProxy:
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
tune.ssl.default-dh-param 2048
ssl-default-bind-options no-sslv3 no-tls-tickets
ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
defaults
log global
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
frontend http
mode http
bind *:80
redirect scheme https
frontend https
mode tcp
bind *:443 ssl crt /etc/ssl/certificate.pem alpn h2,http/1.1
default_backend web
backend web
mode tcp
balance roundrobin
server www1 192.168.0.100:443 check
server www2 192.168.0.101:443 check
server www3 192.168.0.102:443 check
backend maintenance
mode tcp
errorfile 503 /etc/haproxy/errors/503.http
Когда я переключаюсь на интерфейс раздел default_backend к поддержание он не работает - HAProxy не обслуживает ни одну страницу. Аналогичное решение с режимом http работает нормально. Но тогда я не могу использовать SSL с http2 и nginx на бэкэнде.
На стороне backend есть nginx с включенным http2 (без SSL).
Я не могу обслуживать nginx, потому что использовать несколько веб-серверов - чушь. В будущем я планирую расширить стек веб-серверов до десятка серверов.
Я думал о том, чтобы поставить простой автономный сервер для обслуживания одной статической страницы обслуживания, но я не знаю ни одного приложения / библиотеки, которое позволило бы использовать http2 без SSL. Я думаю, что пока это позволяет только nginx.
Я прочитал документацию по HAProxy от корки до корки, и нет никаких полезных примеров, описывающих конфигурацию http2 и SSL. В конце концов, даже Google беспомощен.