For this request , I might get cookies with names like
abc_cnv1, abc_cnv2, abc_cnv3…abc_cnv5
all or some of them. The value of these cookies are of the format:
$integerB#$TermB#$integerC#$TermC
Eg:
1234#blahblah#45#Q1
Now this is the requirement:
If for any of the cookies in abc_cnv[1-5], $integerA equals $intergerB
choose an upstream based on $TermC.
I have figured out few of things:
Parsing $integerA - Using a regex in the location block
Choosing an upstream based on $TermC - using a map block
However, I’m stuck at reading cookies (not sure how to read only :
abc_cnv[1-5]). I understand it can be done using multiple ifs .
But I’m sure there should be a better way than that.
On Monday 03 September 2012 19:34:25 Harish S. wrote:
[…]
However, I’m stuck at reading cookies (not sure how to read only :
abc_cnv[1-5]). I understand it can be done using multiple ifs .
But I’m sure there should be a better way than that.
Ah. I did know how to read it individually. My mistake, should have
explained it more clearly. But testing for each of this variables
looks bad (is ther a way other than using a if clause ? )
location ~ ^/cnvpb/(\d+)/ {
set $cmpid $1;
proxy_pass http://$backend;
}
But unfortunately it fails saying - “invalid number of map
parameters”. I think its something to do with variable interpolation.
So a few questions:
How do I substitute a variable inside a regex ?
The regex works with a if condition. I kind of extended it from
here: Module ngx_http_rewrite_module. But there seems to
be a “space” between “[^;]” and “+” not sure why. Is that right?