我遇到一个问题,如果是 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 时,上述方法不起作用。如果我注释掉一个,另一个就会起作用,因此存在冲突。我可能必须添加一个条件,我尝试了几个,但没有任何运气。有什么指点吗?提前谢谢。