HAProxy 请求重写

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 }"

但它正在将 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 路径,这只会在代理和后端服务器之间的通信中重写它。

相关内容