【发布时间】:2016-01-30 03:02:58
【问题描述】:
我对 HAProxy 很陌生,但需要一个看起来相当罕见的要求。我需要根据主机标头在地图中查找一个项目,但我需要先应用一些字符串操作。
示例: 请求进入 i.domain.com 我需要去掉 i。并在我的地图中查找 domain.com。
我可以通过使用初始请求中的值创建一个新的临时标头来做到这一点,然后用一些正则表达式替换该值,如下所示:
http-request set-header X-Temp %[req.hdr(host)]
http-request replace-value X-Temp [a-zA-Z].(.*)(:)?.* \1
http-request set-header X-ID %[req.hdr(X-Temp),lower,map(/some.map,99999)]
当我真正需要的只是这样的单行时,这似乎很浪费:
http-request set-header X-ID %[(apply [a-zA-Z].(.*)(:)?.* \1 to req.hdr(host)),lower,map(/some.map,99999)]
我试图让 reqrep 做到这一点,但没有任何运气。如何在不实际将其保存回 http 请求标头的情况下操纵字符串以进行查找?
【问题讨论】:
标签: regex http-headers haproxy