Thank you!
Will it work on 1.5.2?

Ul

10.03.2017, 17:26, "Cyril Bonté" <[email protected]>:
>>  De: "Ульянка Да" <[email protected]>
>>  À: "Michael Ezzell" <[email protected]>
>>  Cc: "HAproxy Mailing Lists" <[email protected]>
>>  Envoyé: Vendredi 10 Mars 2017 14:18:12
>>  Objet: Re: Does reqrep work?
>>
>>  Thank you!
>>  I was too clever to append '/' at the end, without it reqrep works
>>  fine.
>>  But further I need not just rewrite but redirect it so that client
>>  see rewritten URL:
>>
>>  acl coll path_beg /ABC/collection/
>>  reqrep ^([^\ :]*)\ /ABC/collection/(.*) \1\ /collection/collection_\2
>>  redirect prefix / code 301 if coll
>>
>>  It seems to me that it doesn't work, ie. browser still shows
>>  /ABC/collection...
>
> Indeed, the acl is evaluated after you rewrote the URL, hence it doesn't 
> match.
>
> You may prefer something like :
>     acl coll path_beg /ABC/collection/
>     http-request redirect location 
> %[path,regsub(^/ABC/collection/,/collection/collection_)] if coll
>
> btw, haproxy 1.5.2 is quite old, you should plan an upgrade.
>
>>  Ul
>>
>>  10.03.2017, 12:45, "Michael Ezzell" <[email protected]>:
>>
>>  On Mar 10, 2017 4:16 AM, "Ульянка Да" < [email protected] > wrote:
>>
>>  Update:
>>  reqrep changes requests, but harmfully, that results in error 400
>>  (bad request).
>>  How to debug the harm keeping in mind that traffic is SSLed?
>>
>>  SSL isn't really relevant, because your incorrect rewrite is
>>  corrupting the request *inside* HAProxy. The request never leaves
>>  the proxy. What you need to remember is that you are rewriting a
>>  line in a buffer that contains a raw HTTP request.
>>
>>  reqrep ^([^\ :]*)\ /ABC/collection/(.*)/ \1\
>>  /collection/collection_\2/
>>
>>  You're overlooking the "[space]HTTP/1.x" at the end of the start
>>  line.
>>
>>  reqrep ^([^\ :]*)\ /ABC/collection/(.*)/(\ HTTP.+)$ \1\
>>  /collection/collection_\2/\3
>>
>>  Note that your expression as written also only works at all when the
>>  path ends with a trailing slash, which may or may not be what you
>>  really want. That behavior is preserved in my example.
>>
>>  If you're using HAProxy 1.6 or later, there is a simpler solution to
>>  use, which looks something like this:
>>
>>  http-request set-path
>>  %[path,regsub(^/ABC/collection/,/collection/collection/)] if {
>>  path_beg /ABC/collection/ }
>>
>>  This also differs from your example, since it does not require a
>>  trailing slash in the path but would match and rewrite any path
>>  beginning with the pattern shown.

Reply via email to