I am trying to configure Haproxy v1.5 for Jabber connections which run on several ports on the same IP. To keep the configuration as simple as possible, I would like to use a single frontend and one or more backends. Is there a way for me to pass the source port to the backend or to use a ACL to route to a different backend based on port?
frontend Jabber_IN
bind 10.60.0.12:5222 name port5222
bind 10.60.0.12:5223 name port5223
bind 10.60.0.12:9090 name port9090
bind 10.60.0.12:9091 name port9091
bind 10.60.0.12:7070 name port7070
bind 10.60.0.12:7443 name port7443
bind 10.60.0.12:5229 name port5229
mode tcp
option tcplog
option tcpka
timeout client 60m
timeout server 60m
timeout http-keep-alive 1m
default_backend Jabber
backend Jabber
tcp-check connect
tcp-check send PING\r\n
tcp-check expect string +PONG
server Server1ZoneD 10.60.30.209:80 check
server Server1ZoneE 10.60.47.4:80 check
server Server2ZoneD 10.60.17.8:80 check
server Server2ZoneE 10.60.45.219:80 check
Best Answer
Using a single frontend and multiplexing to the backends is indeed possible. You will be required to add one backend section per backend server, e.g.
etc.
In your frontend, split the traffic like this
etc.