HAProxy请求重写

我正在尝试使用HAProxy设置传递代理。

版本: – HA-Proxy版本1.7.5 2017/04/03

我有两个urlabc.com/foo和abc.com/bar,我希望它被redirect到我的后端服务器服务请求为10.0.0.1/xyz/

例如,如果我的请求是abc.com/foo/login,所以这个请求应该作为10.0.0.1:7003/xyz/login到我的后端服务器,但前端应该只显示abc.com/foo/login 。

我尝试使用下面

"http-request redirect code 301 location http://%[hdr(host)]%[url,regsub(^/foo/,/bar/,)] if { path_beg /foo }" 

但是它将URL更改为abc.com/xyz

我一直在使用nginx,下面是我的configuration相同。

 server { listen 8443; underscores_in_headers on; location /Recharge { proxy_pass http://backend/RetailerApp; proxy_read_timeout 15; } location /Gateway { proxy_pass http://backend/RetailerApp; proxy_read_timeout 15; } } upstream backend_preprod { server 10.5.214.237:7005; server 10.5.214.237:7004; } 

您不想使用redirect,因为这会将客户端redirect到给定的URL。 您只需要重写请求URL。

 reqrep ^([^\ :]*)\ /foo/(.*) \1\ /xyz/\2 reqrep ^([^\ :]*)\ /bar/(.*) \1\ /xyz/\2 

https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#reqrep

客户端仍将看到/ foo或/ barpath,这只会在代理和后端服务器之间的通信中重写它。