您不能让两个任务在同一个端口上侦听。HTTP 在默认端口 80 上侦听,HTTPS 在默认端口 443 上侦听。您将需要管理 HAProxy 程序以进行相应的转发。
我发现这个漂亮的页面建议你像这样设置你的配置:
全球的
stats socket ./haproxy.stats 级别管理员
前端 ft_http
绑定:80
模式http
default_backend bk_http
前端 ft_https
绑定:443
模式 tcp
default_backend bk_https
后端 bk_http
模式http
平衡循环
坚持 src 表 bk_https
默认服务器间 1s
服务器 s1 192.168.1.1:80 检查 id 1
服务器 s2 192.168.1.2:80 检查 id 2
后端 bk_https
模式 tcp
平衡循环
stick-table 类型 ip 大小 200k 过期 30m
坚持src
默认服务器间 1s
服务器 s1 192.168.1.1:443 检查 id 1
服务器 s2 192.168.1.2:443 检查 id 2
请注意上面的配置如何将 Node.js 端口设置为 80 和 443。由于 Node.js 没有管理员权限,您可能需要编辑端口以使其像这样工作:
后端 bk_http
模式http
平衡循环
坚持 src 表 bk_https
默认服务器间 1s
服务器 s1 192.168.1.1:8000 检查 id 1
服务器 s2 192.168.1.2:8000 检查 id 2
后端 bk_https
模式 tcp
平衡循环
stick-table 类型 ip 大小 200k 过期 30m
坚持src
默认服务器间 1s
服务器 s1 192.168.1.1:8001 检查 id 1
服务器 s2 192.168.1.2:8001 检查 id 2
您还需要将 Node.js 代码更改为:
https.createServer(api.credentials, api.server).listen(8001);
http.createServer(api.server).listen(8000);
我不熟悉 HAProxy,所以我可能会离开。