我在端口 6666 上公开了一个 TCP 前端,它接收流量,并且必须根据 TCP 有效负载中检测到的应用程序协议,将请求代理到能够服务应用程序请求的本地服务器。
对于 HTTP,我让它工作,当收到 HTTP 请求时,它成功地将请求代理到我的本地 HTTP 服务器。对于 Telnet、SSH 和 FTP,我无法使其工作,因此我将不完整的行注释掉,并希望您帮助撰写它们。
以下是我的 HAProxy 配置的一部分:
# ...
frontend tcp_sniff
bind *:6666
mode tcp
tcp-request inspect-delay 5s
acl is_http req.payload(0,0) -m reg "^(GET|POST|PUT|DELETE|HEAD|OPTIONS)\s+([^ ]+)\s+HTTP\/\d+\.\d+\r\n([^\r\n]*: [^\r\n]*\r\n)*\r\n(.*)\$"
#acl is_telnet ...
#acl is_ssh ...
#acl is_ftp ...
use_backend http_backend if is_http
#use_backend telnet_backend if is_telnet
#use_backend ssh_backend if is_ssh
#use_backend ftp_backend if is_ftp
backend http_backend
mode tcp
server http_server1 127.0.0.1:80
backend telnet_backend
mode tcp
server telnet_server1 127.0.0.1:23
backend ssh_backend
mode tcp
server ssh_server1 127.0.0.1:22
backend ftp_backend
mode tcp
server ftp_server1 127.0.0.1:21
PS。我知道这是一个奇怪的用例,但它不适用于生产,它是私有且特殊的东西,我想在我的几台机器上运行,并且我需要初始设置方面的帮助,我是 HAProxy 的新手。