Take the 2-minute tour ×
Server Fault is a question and answer site for 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

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.