例如,我有头GET /yo?title=What a cool day HTTP/1.1我想用%20 GET /yo?title=What%20a%20cool%20day HTTP/1.1来代替空格。 我想replace,因为后端与Nginx不接受不正确的HTTP请求。 很遗憾,但是我没有访问nginx来修补或修改生成这个不正确的URL的代码。
我试过使用reqrep指令,但根据haproxy文档,它取代了整个search replace 。
根据StackOverflow上的这篇文章,URL中的空格是无效的,所以无论生成这些请求是有缺陷的。
我也对HAProxy文档进行了抨击,但我没有办法做到这一点。
其实,如果你确定知道不会超过8个空格,我想你可以使用reqrep这样的东西:
reqrep ^GET\ ([^\ \t]*)\ ([^\ \t]*)\ ([^\ \t]*)\ ([^\ \t]*)\ ([^\ \t]*)\ ([^\ \t]*)\ ([^\ \t]*)\ ([^\ \t]*)\ ([^\ \t]*) GET\ \1%20\2%20\3%20\4%20\5%20\6%20\7%20\8%20\9%20\ HTTP/1.1
虽然这不包括less于8个空格的url,那么您需要添加? 对每个子串参考search(和下面的空间)或设置8个reqrep来说明所有不同的排列。