如何通过acl匹配某些基于TCP的L7协议以供以后使用_后端?

问题描述 投票:0回答:0

我在端口 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 的新手。

haproxy
© www.soinside.com 2019 - 2024. All rights reserved.