我在这里写这篇文章,是因为我使用 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