Jan 18, 2020 2:31:40 PM [email protected] :

> Am Samstag, 18. Januar 2020 schrieb Aleksandar Lazic < [email protected] 
> [mailto:[email protected]] >:
>
> > Hi Bjoern.
> >
> > On 18.01.20 14:02, [email protected] [mailto:[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] < 
> > > http://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] < 
> > > http://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] < 
> > > http://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] < 
> > > http://abc.it/?v=2&code=7150&; b=2 [http://abc.it/?v=2&code=7150&b=2] > 
> > > abc.fr [http://abc.fr] < http://abc.fr [http://abc.fr] > ..
> > > abc.se [http://abc.se] < http://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=67 
> > > 80,g)] if { hdr_reg(host) -i ^abc\.de$ }
> > > http-request set-header X-Redirect-Url %[url,regsub(code=2400,code=71 
> > > 50,g)] if { hdr_reg(host) -i ^abc\.it$ }
> > >
> > > http-request redirect code 302 location https://%[hdr(host)]%[hdr(X-Re 
> > > direct-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] < http://abc.de [http://abc.de] > 1530
> > > abc.it [http://abc.it] < http://abc.it [http://abc.it] > 2400
> > > .
> > > .
> > >
> > > mobile_ids.map:
> > > abc.de [http://abc.de] < http://abc.de [http://abc.de] > 6780
> > > abc.it [http://abc.it] < http://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-D 
> > > esktop)],code=%[hdr(X-ID-Mobil e)],g)]
> > >
> > > http-request redirect code 302 location https://%[hdr(host)]%[hdr(X-Re 
> > > direct-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-l ua/ 
> > > [https://www.haproxy.com/blog/5-ways-to-extend-haproxy-with-lua/] < 
> > > 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/ques tions/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://stackoverflow.com/que stions/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/h aproxy-lua-api/2.0dev/index.ht 
> > > ml#map-class 
> > > [https://www.arpalert.org/src/haproxy-lua-api/2.0dev/index.html#map-class]
> > >  < https://www.arpalert.org/src/ haproxy-lua-api/2.0dev/index.h 
> > > tml#map-class 
> > > [https://www.arpalert.org/src/haproxy-lua-api/2.0dev/index.html#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.

I fully understand your point of view.
As I written I sadly don't think it's possible with native methods.

> Bjoern

Regards
Aleks


Reply via email to