Haproxy重定向规则路径元素变量不起作用

时间:2017-07-21 16:18:21

标签: redirect nginx haproxy

我在nginx中有以下重定向规则

rewrite ^/rty/(.*)$ example.com/$1?lead

我试图在haproxy中做同样的事情

acl uri_lc path_reg ^/lc/(.*)$
http-request redirect location example.com/$1?lead  code 301 if uri_lc

重定向工作但路径元素变量$ 1似乎不适用于haproxy。

1 个答案:

答案 0 :(得分:0)

您可以使用http-request's set-pathset-query重写请求。

# remove /rty part
http-request set-path %[path,regsub(/rty,,g)] 

# set query string
http-request set-query lead 

# redirect -  this is actually a pretty tricky way to redirect
# to the modified request without giving path
http-request redirect scheme http code 301

# empty prefix could be use as well
# http-request redirect prefix ' ' code 301

在1.6以上的版本中,您可以使用reqrep来模仿类似的功能。例如:

reqrep ^([^\ :]*)\ /rty/(.*)     \1\ /\2
redirect scheme http code 301

注意:我已经跳过了acl部分作为练习(但看起来没问题)。