HaProxy-根据查询字符串定向到后端服务器

时间:2018-08-17 16:33:56

标签: load-balancing haproxy

我正在使用HaProxy在两个服务器之间进行负载平衡。我的移动应用程序连接到负载均衡器控制的这2台服务器之一。我的应用主要是向负载均衡器发出以下http请求:

http://www.example.com/file.php?action=getdata

,这将被重定向到这2台服务器之一,这没有问题,但是我总是需要将这些请求定向到server2,因为这些特定操作存储在server2的数据库中。

http://www.example.com/file.php?action=gettokenhttp://www.example.com/file.php?action=savetoken

如何使用haproxy的配置文件实现此目的?当前看起来像:

frontend haproxynode
bind *:80
mode http
default_backend backendnodes
backend backendnodes
balance roundrobin
option forwardfor
http-request set-header X-Forwarded-Port %[dst_port]
http-request add-header X-Forwarded-Proto https if { ssl_fc }
option httpchk HEAD / HTTP/1.1\r\nHost:localhost
server node1 ip:80 check
server node2 ip:80 check

1 个答案:

答案 0 :(得分:0)

use server node2 if { url_param(action) -m str gettoken } || { url_param(action) -m str savetoken }

http://cbonte.github.io/haproxy-dconv/1.6/configuration.html#7.3.6-url_param

使用url_sub有点草率,因为它会检查整个查询字符串。