我正在尝试根据下面的 POST 正文中标识的 URL 将以下请求路由到适当的服务器。我希望通过使用 HAProxy 的反向代理来完成此任务。
例如我想将所有请求定向到 HAProxy,然后让 HAProxy 检查 POST 正文中是否存在某些值(例如通知 url 值“pingpong”),如果是这种情况,则将流量路由到我将在配置。
POST /someURL/file.jsp HTTP/1.1
Host: 10.43.90.190:80
Content-Type: application/json
Connection: keep-alive
Accept: */*
Content-Length: 256
{"Info": {"groupName":"thisgroup1","Id":"M1234R456","id2":"TUP1234",
"countryCode":"USA","carrierCode":"USAIC","e164Address":"123456768789",
"notificationURL":"http:\/\/www.pingpong.com\/notify",
"timestamp":"2014-03-04T17:33:30.000Z"}}
有没有办法使用acl来搜索请求正文中的内容“pingpong”,并根据这个值,我会适本地路由它?
谢谢!
最佳答案
这可以使用简单的访问控制列表(ACL)来完成。然而,直到 Haproxy 1.6(2015 年 10 月)这才成为可能,您可以在前端中包含此选项:
选项http-buffer-request
此选项允许 Haproxy 访问正文。然后你可以使用 req.body 来访问正文。示例:
frontend http-in
bind *:80
option http-buffer-request
acl redirect_pingpong req.body -m reg [insert your regular expression here]
use_backend pingpong_backend if redirect_pingpong
default_backend web_bk
然后继续定义您的后端。
关于acl - 如何根据请求正文使用 HAProxy 路由流量(反向代理),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23259843/