HAProxy 粘表

HAProxy 粘表

我遇到一个问题,如果是 http 或 https,我需要相同的 RTMP TCP 连接才能到达与其连接的同一服务器。以下适用于 http:

frontend http
    mode http
    bind :80
    default_backend web_servers

frontend rtmp
    mode tcp
    bind :1935
    default_backend rtmp

backend web_servers
    mode http
    option forwardfor
    balance roundrobin
    stick store-request src 
    stick-table type ip size 200k expire 2m
    server web1 10.0.0.2:8080 check
    server web2 10.0.0.3:8080 check

backend rtmp
    mode tcp
    stick match src table web_servers
    server web1 10.0.0.2:1935 
    server web2 10.0.0.3:1935 

我的问题是,如果我引入 https 连接,我将如何区分使用与其连接的同一后端服务器(是 http 还是 https)。我尝试查看是否可以使用 2 个“stick match src table”条目,但不起作用。例如,我尝试了以下内容,希望您了解我想要实现的目标。

frontend http
    mode http
    bind :80
    default_backend web_servers

frontend https
    bind :8081
    default_backend https

frontend rtmp
    mode tcp
    bind :1935
    default_backend rtmp

backend web_servers
    mode http
    option forwardfor
    balance roundrobin
    stick store-request src 
    stick-table type ip size 200k expire 2m
    server web1 10.0.0.2:8080 check
    server web2 10.0.0.3:8080 check

backend https
    balance roundrobin
    stick store-request src
    stick-table type ip size 200k expire 30m
    option forwardfor
    reqadd X-Forwarded-Proto:\ https
    server web1 10.0.0.2:8080 check
    server web2 10.0.0.3:8080 check


backend rtmp
    mode tcp
    stick match src table web_servers
    stick match src table https   <-- I added this
    server web1 10.0.0.2:1935 
    server web2 10.0.0.3:1935

当我尝试使用 https 时,上述方法不起作用。如果我注释掉一个,另一个就会起作用,因此存在冲突。我可能必须添加一个条件,我尝试了几个,但没有任何运气。有什么指点吗?提前谢谢。

相关内容