我有这样的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获得相同的结果。
我尝试添加网址前缀:
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才能做到这一点?我不想只为代理tomcat设置apache。
答案 0 :(得分:6)
根据我的理解,您希望将/api/
重写为/project/
。
如果是,请将以下行添加到后端配置中:
reqrep ^([^\ :]*)\ /api/(.*) \1\ /project/\2
请注意,您必须在前端和服务器上启用http-server-close选项,以便将重写规则应用于会话中的所有请求。