HAProxy 请求重写

Fai*_*zam 3 haproxy

我正在尝试使用 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 }"
Run Code Online (Sandbox Code Playgroud)

但它正在将 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;
}
Run Code Online (Sandbox Code Playgroud)

use*_*333 5

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

reqrep ^([^\ :]*)\ /foo/(.*)     \1\ /xyz/\2
reqrep ^([^\ :]*)\ /bar/(.*)     \1\ /xyz/\2
Run Code Online (Sandbox Code Playgroud)

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

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