Am Samstag, 18. Januar 2020 schrieb Aleksandar Lazic <[email protected]>:
> Hi Bjoern. > > On 18.01.20 14:02, [email protected] wrote: > >> Am Samstag, 18. Januar 2020 schrieb Aleksandar Lazic <[email protected] >> <mailto:[email protected]>>: >> >> Hi. >> >> On 18.01.20 13:11, [email protected] <mailto:[email protected]> >> wrote: >> >> Hi, >> >> i want to redirect the following (the value of the code param >> should be rewritten): >> >> abc.de/?v=1&code=1530&b=3 <http://abc.de/?v=1&code=1530&b=3> >> -> abc.de/?v=1&code=6780&b=3 <http://abc.de/?v=1&code=6780&b=3> >> abc.it/?v=2&code=2400&b=2 <http://abc.it/?v=2&code=2400&b=2> -> >> abc.it/?v=2&code=7150&b=2 <http://abc.it/?v=2&code=7150&b=2> abc.fr < >> http://abc.fr> .. >> abc.se <http://abc.se> .. >> . >> . >> >> When i don't use maps, i can accomplish the task with the >> following lines (but this needs many of those lines): >> >> http-request set-header X-Redirect-Url >> %[url,regsub(code=1530,code=6780,g)] if { hdr_reg(host) -i ^abc\.de$ } >> http-request set-header X-Redirect-Url >> %[url,regsub(code=2400,code=7150,g)] if { hdr_reg(host) -i ^abc\.it$ } >> >> http-request redirect code 302 location https:// >> %[hdr(host)]%[hdr(X-Redirect-Url)] >> >> >> But i want to use map files to reduce duplication and make it >> easier to add new items. >> >> I have these map files (domain is the lookup key): >> >> desktop_ids.map: >> abc.de <http://abc.de> 1530 >> abc.it <http://abc.it> 2400 >> . >> . >> >> mobile_ids.map: >> abc.de <http://abc.de> 6780 >> abc.it <http://abc.it> 7150 >> . >> . >> >> http-request set-header X-ID-Desktop >> %[hdr(host),lower,map_str(/etc/haproxy/desktop_ids.map)] >> http-request set-header X-ID-Mobile %[hdr(host),lower,map_str(/etc >> /haproxy/mobile_ids.map)] >> >> What i would need is the following: >> http-request set-header X-Redirect-Url >> %[url,regsub(code=%[hdr(X-ID-Desktop)],code=%[hdr(X-ID-Mobile)],g)] >> >> http-request redirect code 302 location https:// >> %[hdr(host)]%[hdr(X-Redirect-Url)] >> >> But that's not possible, you cannot use variables in the regex or >> substitution field of regsub. I've also tried "http-request >> replace-header", but same problem, you cannot use variables for the >> "match-regex". >> >> Maybe is it possible to cut the "code" param from the query >> string and append it with the new value to the query string. But this needs >> some complex regex and handling of multiple conditions in query string >> (plus ordering of query string params is different than). >> >> Is there a possibility to use variables in regsub or in the >> "match-regex" of replace-header? >> >> >> I think you will need a small lua action handler which do the job. >> In the blog post are some examples which can help you to reach your >> target. >> https://www.haproxy.com/blog/5-ways-to-extend-haproxy-with-lua/ < >> https://www.haproxy.com/blog/5-ways-to-extend-haproxy-with-lua/> >> >> Maybe you can start with the example on stackoverflow and add the map >> handling >> into the code. >> >> https://stackoverflow.com/questions/50844292/how-to-make-ha- >> proxy-to-follow-redirects-by-itself/50872246#50872246 < >> https://stackoverflow.com/questions/50844292/how-to-make- >> ha-proxy-to-follow-redirects-by-itself/50872246#50872246> >> https://www.arpalert.org/src/haproxy-lua-api/2.0dev/index.ht >> ml#map-class <https://www.arpalert.org/src/haproxy-lua-api/2.0dev/index.h >> tml#map-class> >> >> It would be interesting to know which haproxy version do you use. >> haproxy -vv >> >> Best regards / Mit freundlichen Grüßen >> >> Bjoern >> >> >> Hth >> Aleks >> >> >> Hi Aleks, >> >> i'm using HAProxy 1.8. I wanted to avoid using lua for "only" doing some >> redirects. I was searching for a native method in HAProxy. All "building >> blocks" are present, except that you cannot use variables in the >> match-regex etc. (or maybe there is possibility?) >> > > I don't know any possibilities without lua, maybe someone else on the ML. > Do you see any chance to update to 2.1 with lua? > > Please keep the ML in the loop, thanks. > > Bjoern >> > > Best regards > Aleks > Hi, upgrading to latest LTS (2.0) is on the roadmap. We're already doing some other stuff in lua with HAProxy 1.8. Lua Map() class is also available in 1.8, but i would prefer a native method for the redirects. Bjoern

