Http-request and tcp-request content stop evaluation?


I want to have several different stick-tables with different keys (to keep track of source IPs, but also URLs, etc).

It seems that the first http-request or tcp-request “empties” the request or stops the evaluation, for instance with this conf file :

log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy

log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http

backend ipstore
stick-table type ip size 100 expire 1h store http_req_cnt,http_req_rate(15m)

backend urlstore
#stick-table type string len 50 size 100 expire 2h store conn_cnt
stick-table type ip size 100 expire 1h store conn_cnt

frontend front1
bind *:80
tcp-request content track-sc0 src table ipstore
#http-request track-sc0 src table ipstore
tcp-request content track-sc0 base table urlstore
#http-request track-sc0 base table urlstore
default_backend back1

backend back1
server web1

When I do some http requests, they are tracked correctly in ipstore (first stick-table), but there is nothing in urlstore. I don’t remember reading something like this in the documentation (in fact I read that tcp-request content doesn’t stop evaluation). Did I miss something?

I use version 1.6.13-1ppa1~trusty on Ubuntu 14.04 (but I think I already noticed it on other versions like 1.7)

Best regards,
Gurvan Kervern

The formatting tools don’t work for some reason so I can’t separate the code itself and underline the important parts. I hope it remains readable :stuck_out_tongue:

No one else has that problem?