3

我有一个这样的 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

这可行,但网址必须像: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

但不支持。有没有办法只使用 haproxy 来做到这一点?我不想设置一个 apache 只是为了代理 tomcat。

4

1 回答 1

6

据我了解,您想重写/api//project/.

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

reqrep ^([^\ :]*)\ /api/(.*)     \1\ /project/\2

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

于 2012-08-22T12:53:11.730 回答