Я хочу, чтобы мое веб-приложение работало только на порту 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-адресе.