我需要配置我们的 HAProxy 1.5 服务器,以将长 URL 中的特定查询字符串值重写为新值。在下面的示例中,dc 需要从 12345 更改为 54321。我计划在后端配置中执行此操作:
原始网址:http://www.domain.com/dl?dc=12345&pid=1234&other=1234&someother=1234
重写后的 URL:http://www.domain.com/dl?dc=54321&pid=1234&other=1234&someother=1234
我尝试了以下操作,但服务器返回 400 错误:
reqirep (.dc=)12345(.) \1\54321\2
我还尝试了另一种:
reqirep ([^\ ]*dc=)12345(.*) \1\54321/\2
任何帮助将不胜感激!
麦克风
作为回应 -
所以 - 我应该尝试修改“请求行”,它看起来像这样:
获取 /dl?dc=12345&pid=1234&other=1234&someother=1234 HTTP/1.1
你能建议语法吗?
答案1
根据HAProxy 手册中有关 reqirep 的部分搜索正则表达式必须匹配整个 HTTP 请求行。您引用的两个正则表达式都无法做到这一点。有关详细信息,请参阅HAProxy 手册中有关请求行的部分它描述了它的格式并且应该清楚地说明您需要匹配什么。