HAPROXY : Same host with different path


#1

Hello ,

I am using haproxy where my requirement is same host but different paths.

http://hostaaa/x/
http://hostaaa/y/

And I am using below settings in haproxy.cfg
*************************************************************************************************************8
frontend main *:80

acl url_x path_beg /x/
acl url_y path_beg /y/

use_backend x-backend if url_x
use_backend y-backend if url_y

#---------------------------------------------------------------------

static backend for serving up images, stylesheets and such

#---------------------------------------------------------------------
backend static
balance roundrobin
server static 127.0.0.1:4331 check

#---------------------------------------------------------------------

round robin balancing between the various backends

#---------------------------------------------------------------------
backend x-backend
reqrep ^([^\ ])\ /x(/.) \1\ \2
cookie SERVERID insert indirect nocache
server x_0 host1:80 check cookie x_0
server x_1 host2:80 check cookie x_1
server x_2 host1:80 check cookie x_2

backend y-backend
reqrep ^([^\ ])\ /y(/.) \1\ \2
cookie SERVERID insert indirect nocache
server y_server0 hostaaa:8080 check cookie y_server0


hostaaa is also part of backend y-backend.

Appreciate support!!

Thanks

Regards,
M


#2

And what is your question?


#3

I am not able to achieve this with above settings in HAPROXY configuration file.

If I use default_background x_backend or default_background y_backend then it will work for respected default background.


#4

Share the complete configuration and the output of haproxy -vv please.


#5

I am just changing the haproxy.cfg file and starting it (in centos7) sudo systemctl start haproxy.

Below is the full haproxy configuration

#---------------------------------------------------------------------

Example configuration for a possible web application. See the

full configuration options online.

http://haproxy.1wt.eu/download/1.4/doc/configuration.txt

#---------------------------------------------------------------------

#---------------------------------------------------------------------

Global settings

#---------------------------------------------------------------------
global
# to have these messages end up in /var/log/haproxy.log you will
# need to:
#
# 1) configure syslog to accept network log events. This is done
# by adding the ‘-r’ option to the SYSLOGD_OPTIONS in
# /etc/sysconfig/syslog
#
# 2) configure local2 events to go to the /var/log/haproxy.log
# file. A line like the following can be added to
# /etc/sysconfig/syslog
#
# local2.* /var/log/haproxy.log
#
log 127.0.0.1 local2

chroot      /var/lib/haproxy
pidfile     /var/run/haproxy.pid
maxconn     4000
user        haproxy
group       haproxy
daemon

# turn on stats unix socket
stats socket /var/lib/haproxy/stats

#---------------------------------------------------------------------

common defaults that all the ‘listen’ and ‘backend’ sections will

use if not designated in their block

#---------------------------------------------------------------------
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000

#---------------------------------------------------------------------

main frontend which proxys to the backends

#---------------------------------------------------------------------

frontend main *:80

acl url_x path_beg /x/
acl url_y path_beg /y/

use_backend x-backend if url_x
use_backend y-backend if url_y

#---------------------------------------------------------------------

static backend for serving up images, stylesheets and such

#---------------------------------------------------------------------
backend static
balance roundrobin
server static 127.0.0.1:4331 check

#---------------------------------------------------------------------

round robin balancing between the various backends

#---------------------------------------------------------------------
backend x-backend
reqrep ^([^\ ])\ /x(/.) \1\ \2
cookie SERVERID insert indirect nocache
server x_master0 xxx.xx.xx.163:80 check cookie x_master0
server x_master1 xxx.xx.xx.171:80 check cookie x_master1
server x_master2 xxx.xx.xx.181:80 check cookie x_master2

backend y-backend
reqrep ^([^\ ])\ /y(/.) \1\ \2
cookie SERVERID insert indirect nocache
server y_server0 xxx.xx.xx.67:8080 check cookie y_server0


#6

Can you should the log output of those request please?