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.

