HAProxy:SSL/TLS 终止 + 端口转发

HAProxy:SSL/TLS 终止 + 端口转发

我在这里写这篇文章,是因为我使用 HAProxy 作为带有 SSL/TLS 终止的反向代理,并且我不知道如何配置它以将特定端口上的 HTTPS 请求转发到我的 HTTP 后端服务器上的相同端口。

我正在寻找做这样的事情:

https://www.example.com:端口 ----> http://www-backend:端口

PORT 是 8000 到 9000 之间的端口范围(这些端口在后端服务器上开放)

www-backend 对应于我的后端服务器之一

我以前已经使用 NGINX 完成过此操作,但从未使用 HaProxy 完成过。

你可以帮帮我吗 ?

这是我当前的 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 expose-fd listeners
        stats timeout 5s
        user haproxy
        group haproxy
        daemon

        tune.ssl.default-dh-param 4096

defaults
        log     global

        mode    http
        option  httplog
        option  dontlognull
        option forwardfor
        option http-server-close
        option http_proxy

        timeout connect 5000
        timeout client  50000
        timeout server  50000
        errorfile 400 /etc/haproxy/errors/400.http
        errorfile 403 /etc/haproxy/errors/403.http
        errorfile 408 /etc/haproxy/errors/408.http
        errorfile 500 /etc/haproxy/errors/500.http
        errorfile 502 /etc/haproxy/errors/502.http
        errorfile 503 /etc/haproxy/errors/503.http
        errorfile 504 /etc/haproxy/errors/504.http

        stats enable
        stats hide-version
        stats refresh 5s
        stats uri /hastats


#Define http frontend
frontend www-http
        bind *:80
        reqadd X-Forwarded-Proto:\ http
        default_backend www-backend

        # Test URI to see if its a letsencrypt request
        acl letsencrypt-acl path_beg /.well-known/acme-challenge/
        use_backend letsencrypt-backend if letsencrypt-acl

#Define https frontend
frontend www-https
        bind *:8000-9000 crt /etc/haproxy/certs/example.com.pem
        bind *:443 crt /etc/haproxy/certs/example.com.pem
        reqadd X-Forwarded-Proto:\ https
        default_backend www-backend

#Define www-backend
backend www-backend
        mode http
        http-request set-header X-Forwarded-For %[src]
        reqadd X-Forwarded-Proto:\ https
        option http-server-close

        balance roundrobin
        redirect scheme https if !{ ssl_fc }
        server web1 xxx.xxx.xxx.101 check port 80
        server web2 xxx.xxx.xxx.102 check port 80

#Define letsencrypt backend
backend letsencrypt-backend
        server letsencrypt 127.0.0.1:8080

相关内容