acl - 如何根据请求正文使用 HAProxy 路由流量(反向代理)

标签 acl haproxy

我正在尝试根据下面的 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

然后继续定义您的后端。

有关访问正文内容的更多信息,请访问 here有关 ACL 的信息可以找到 here

关于acl - 如何根据请求正文使用 HAProxy 路由流量(反向代理),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23259843/

相关文章:

google-app-engine - 授予 Google Cloud Storage REST API 的目录级权限

java - 不使用Spring ACL,实现基于实体 "creator"的方法级安全检查

tls1.2 - 代理中的 TLS 1.3 降级至 1.2

SSL证书编译成pem文件

elasticsearch - Kibana资讯主页上的错误 “Bad gateway”是什么意思?

linux - 尽管用户在 SUSE Linux 上具有 rwx 权限,但他们对文件夹的访问被拒绝

Neo4j 通过具有属性过滤器的多个关系的定向路径

C# - Windows ACL - 应用继承权限

mysql - HAProxy:从 DBCP 断开连接,为什么?

tcp - 我可以将 ZeroMQ 与基于软件的负载均衡器 HAProxy 一起使用吗?