如何配置 haproxy 将带有子字符串的网站发布到真正的后端服务器

如何配置 haproxy 将带有子字符串的网站发布到真正的后端服务器

后端服务器真正发布的网站是 192.168.1.6:8888/abc 和 192.168.1.7:8888/abc ,haproxy 的 ip 是 192.168.1.5 ,如何在 haproxy 中设置用户访问 192.168.1.5:8888/abc 时,http 请求将被转发到真正的后端服务器(192.168.1.6:8888/abc 和 192.168.1.7:8888/abc)?默认后端服务器是 192.168.1.8:8088 和 192.168.1.9。(默认的 nginx 网站)

+++++++++++++我的配置是++++++++++++++

前端案例3
绑定192.168.1.5:8888

acl abc path_beg -i /abc

use_backend abc_servers if abc  

default_backend nginx1 

后端 abc_servers

mode tcp

balance roundrobin

server abc1 192.168.1.6:8888 cookie 

server abc2 192.168.1.7:8888 cookie 

后端 nginx1

balance roundrobin

server master1 192.168.1.8:8888 maxconn 1024 weight 5 check

server master2 192.168.1.9:80 maxconn 1024 weight 5 check

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

生效后我访问 192.168.1.5:8888 可以访问 nginx1 第一个服务器,但是访问 192.168.1.5:8888/abc 就报错:

////////////////////////////////////////////////////////

         404 Not Found
         nginx/1.17.9

////////////////////////////////////////////////////////

答案1

基本配置如下:

frontend web.jerrywang.org
    bind 192.168.1.5:8888
    use_backend api_servers if { path_beg /abc/ }
    # default_backend web_servers  # The users will get 503 for anything else

backend api_servers
    balance roundrobin
    cookie SERVERUSED insert indirect nocache
    option httpchk HEAD /
    default-server check maxconn 20
    server server1 192.168.1.6:8888 cookie server1
    server server2 192.168.1.7:8888 cookie server2

相关内容