I really like this feature, and it was something actually on my todo list of things to look into adding to haproxy. However there is one thing I would consider supporting. Instead of requiring the index of the capture keyword in the config, which is very cumbersome and awkward in my opinion, support using the header name.
Now I imagine the immediate response to this is going to be that this would require searching for the header by name every time capture.req.hdr is used, and the captured headers are stored in a simple array not maintaining the header names. This would complicate the code and possibly slow haproxy down. But, an alternate idea would be to transform the header name into its index at the time of parsing configuration. This would let the user use a header name, but the actual haproxy code which translates capture.req.hdr wouldn't change at all. It would be a lot less fragile when someone updates their config to capture an additional header, but forgets to update all indexes (plus having to keep track of indexes in the first place). -Patrick