Hi, All

Can anyone help me about haproxy use_backend doesn't work if dst port is 8080, 
protocol is POST when using 'if HTTP'.


The problem is that I want to balance my gateway http traffic to one program 
(which can proxy traffic, listen on 127.0.0.1:4800). And I write my haproxy.cfg 
as follow:


########################################
frontend f_tcp                       
  bind     :5900                
  mode      tcp                  
  maxconn  4096                 
                                      
  tcp-request inspect-delay       3s
  tcp-request content accept if HTTP
                                          
  use_backend             b_http if HTTP
  default_backend        b_tcp


backend         b_tcp                               
  mode            tcp                          
  fullconn        4096
  option          transparent                         
                                                     
backend         b_http                              
  mode            http                         
  log             global                       
  option          accept-invalid-http-response 
                                                         
   fullconn        4096                             
   server          s1 127.0.0.1:4800   
######################################


when the packet came to haproxy with dst port 80, all the packet are forward to 
127.0.0.1:4800, including method POST with dst port 80. But when a packet is 
method POST with dst port 8080, it does not forward to 127.0.0.1:4800, does any 
one know why?


Later on, I decide to use acl for packet dst port matching, an change of 
frontend is as follow, with backend not modify:
########################################
frontend f_tcp                       
  bind     :5800                
  mode      tcp                  
  maxconn  4096                 
                                      
  acl is_port_80 dst_port 80                  
  acl is_port_8080 dst_port 8080              
  use_backend             b_http if is_port_80 is_port_8080
  default_backend         b_tcp 


backend b_tcp                                          
.....
########################################


But it won't work completely, even the packet with dst port 80 are not send to 
127.0.0.1:4800. 


Can any one help me? Thanks in advance

Reply via email to