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

Один и тот же порт Haproxy для http и https

Я хочу, чтобы мое веб-приложение работало только на порту 4443. Поэтому я добавил этот порт в свой контейнер докеров на haproxy. Теперь я хочу проверить входящий запрос, и если это не https, он должен перенаправить на него. Например: http: test.example.com: 4443 -> https: test.example.com: 4443. Это работает, только если я привязываю порт без сертификата ssl.

Если я привяжу его так: bind *: 4443 ssl crt /usr/local/etc/ssl/chaparron.ml.pem alpn h2, я получаю сообщение об ошибке «https / 1: SSL handshake failure», если я вызываю http: test.example .com: 4443, но без перенаправления.

Как я могу это сделать?

Это мой haproxy.cfg прямо сейчас

global
        maxconn 50
        tune.ssl.default-dh-param 2048
        log stdout format raw local0

defaults
        log global
        mode http
        timeout tunnel 1h
        timeout http-request 100s

frontend https
        mode http
        bind *:4443 ssl crt /usr/local/etc/ssl/nextcloud.ml.pem alpn h2
        http-request redirect scheme https code 301 if !{ ssl_fc }
        default_backend nextcloud
        timeout client 30s

backend nextcloud
        mode http
        timeout connect 20s
        option http-server-close
        server app1 app:80
        timeout server 30s

Он отлично работает, если я вызываю его напрямую с https в URL-адресе.