Назад | Перейти на главную страницу

Стол HAProxy Stick

У меня проблема, когда мне нужно одно и то же TCP-соединение RTMP, чтобы подключиться к тому же серверу, к которому оно подключено, если это был http или https. Следующее работает с 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. Если я закомментирую одно, другое будет работать, поэтому возникнет конфликт. Мне, вероятно, придется добавить условие, и я пробовал несколько, но безуспешно. Есть указатели? Заранее спасибо.