Haproxy 使用相同的端口用于 http 和 https

Haproxy 使用相同的端口用于 http 和 https

我希望我的 Web 应用程序仅在端口 4443 上运行。因此,我将这个端口添加到 haproxy 上的 docker 容器中。现在我想检查传入的请求,如果它不是 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 如果我调用 http:test.example.com:4443 但没有重定向,我会收到错误“https/1:SSL 握手失败”。

我怎样才能做到这一点?

这是我现在的 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

如果我直接使用 url 中的 https 调用它,它可以完美运行。

相关内容