Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I have an issue where I need the same RTMP TCP connection to hit the same server it connected with if it was http or https. The following works with 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 

My question is if I introduce https connection, how would I distinguish to use the same backend server it connects to if it is http or https. I tried to see if I can use 2 "stick match src table" entries, but that doesn't work. For example, I tried the following and I hope you get the idea of what I'm trying to accomplish.

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

The above doesn't work when I try with https. If I comment out one, the other will work so there is a conflict. I will probably have to add a condition and I've tried a few but not having any luck. Any pointers? Thanks in advance.

share|improve this question
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.