Haproxy does not fully support keep alives yet. It is scheduled to be fully implemented when 1.5 becomes "stable". Having said that, I have been using the 1.5 branch in a very large production environment for almost a year with no issues.
I would suggest using http-server-close which will only close the haproxy server to the backend server (meaning it will allow the client to use keep alives to haproxy). This will fix the issue of haproxy not modifying the 2nd, 3rd, etc request. It sounds like you want the same client to always go to the same backend. If this is the case then you can look at using a stick table or cookie affinity. https://code.google.com/p/haproxy-docs/wiki/cookie
If you really need keep alives all of the way to the back-end you may have to look at using a different product, but from your description I think that you can get away with using the persistence.