如何在haproxy中添加uri前缀

Gav*_*iel 3 haproxy

我有这样的haproxy配置:

frontend api
    mode http
    default_backend tomcat

backend tomcat
    mode http
    balance roundrobin
    option httpchk HEAD / HTTP/1.0
    server tomcat1 10.0.0.1:1234 weight 1 maxconn 512 check
    server tomcat2 10.0.0.2:1234 weight 1 maxconn 512 check
Run Code Online (Sandbox Code Playgroud)

这可行,但网址必须像:http://api.example.com/project/api/get-something我们想以某种方式设置haproxy以便网址http://api.example.com/api/get-something会得到相同的结果.

我试着添加url前缀:

    server tomcat1 10.0.0.1:1234/project/ weight 1 maxconn 512 check
    server tomcat2 10.0.0.2:1234/project/ weight 1 maxconn 512 check
Run Code Online (Sandbox Code Playgroud)

但它不受支持.有没有办法只使用haproxy才能做到这一点?我不想只为代理tomcat而设置apache.

小智 6

从我的理解,你要重写/api//project/.

如果是,请将以下行添加到后端配置中:

reqrep ^([^\ :]*)\ /api/(.*)     \1\ /project/\2
Run Code Online (Sandbox Code Playgroud)

请注意,您必须在前端和服务器上启用选项http-server-close,以便将重写规则应用于会话中的所有请求.