Назад | Перейти на главную страницу

Обслуживание HAProxy в режиме tcp и http2

У меня проблема с настройкой 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 беспомощен.

Может тебе стоит заменить

default_backend

Чтобы

use_backend

Вот пример: из github