我正在尝试使用 HAProxy 设置代理。
版本:- HA-Proxy 版本 1.7.5 2017/04/03
我有两个 URL abc.com/foo 和 abc.com/bar,我希望将其重定向到我的后端服务器,这些服务器以 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,下面是我的配置。
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;
}
答案1
您不想使用重定向,因为这会将客户端重定向到给定的 URL。您只需要重写请求 URL。
reqrep ^([^\ :]*)\ /foo/(.*) \1\ /xyz/\2
reqrep ^([^\ :]*)\ /bar/(.*) \1\ /xyz/\2
https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#reqrep
客户端仍然会看到 /foo 或 /bar 路径,这只会在代理和后端服务器之间的通信中重写它。