Comparing two variables

hi

i wrote a module which is extracting certain values out of a session
that is stored in memcache and stores it into a variable in my nginx
config. so this seems to work fine so far.

now i’m trying to compare $uri with one of these variables and do a
rewrite accordingly. but it seems that the if that comes from nginx’
rewrite module cannot only compare a variable with a static string or
a static regex, but not with another variable.

is that true?

i’ve tried following and except this if everything works:


// get session from memcache
eval $session {
    set $memc_key $cookie_session_id;
    memc_pass session_memcache;
}

// extract username from session
php_session_parse $user $session

“symfony/user/sfUser/attributes|s:10:“subscriber”;s:11:“getNickname””;

// strip the formatting of the value, so that f.e. s:6:"drevil"

becomes drevil
php_session_strip_formatting $stripped_user $user;

// show all profile data
if ($stripped_user ~* $uri)
{
    rewrite . d41d8cd98f00b204e9800998ecf8427e:profile_prod$uri:full 

last;
}

// show public profile
rewrite . d41d8cd98f00b204e9800998ecf8427e:profile_prod$uri last;

i just found that with an = it works, but i need the comparison to be
case insensitive…

i was thinking if there is any way to lowercase or uppercase both
strings before the comparison, then i could do an =.

is there any way to lowercase or uppercase a string? otherwise i could
also write a very small module for that.

i would prefer to don’t have to use lua

Posted at Nginx Forum:
http://forum.nginx.org/read.php?2,206345,206350#msg-206350

Hello!

On Mon, Jun 13, 2011 at 03:44:42PM +0800, Mauro Stettler wrote:

is that true?

Yes, regexps must be static. You may try something like this as a
workaround:

set $tmp "$var1:$var2";
if ($tmp ~* "^(.*):\1$") {
    ...
}

Maxim D.

thanks a lot, thats a really smart idea and it works.

i’m thinking if i should maybe write a module which is simply
uppercasing or lowercasing a variable, so that i don’t need this
workaround anymore. do you think there would be other people happy
about having that? via google i haven’t found any existing module to
do that.

anyway for now i’m going to deploy the workaround.

thanks

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs