Welcome! Log In Create A New Profile

Advanced

Re: remove some parameters from $args

Yichun Zhang (agentzh)
October 06, 2013 01:44PM
Hello!

On Sun, Oct 6, 2013 at 3:59 AM, lahiru wrote:
> Hello,
> I'm using memcached + srcache. I need to modify the $args and
> take it as the cache key.
>

Easy if you're using the ngx_lua module at the same time. Below is a
minimal example that demonstrates this:

location = /t {
rewrite_by_lua '
local args = ngx.req.get_uri_args()
args.SID = nil
args.UID = nil
ngx.req.set_uri_args(args)
';

echo $args;
}

Here we use the "echo" directive from the ngx_echo module to dump out
the final value of $args in the end. You can replace it with your
ngx_srcache configurations and upstream configurations instead for
your case. Let's test this /t interface with curl:

$ curl 'localhost:8081/t?RT=62&SID=BC3781C3-2E02-4A11-89CF-34E5CFE8B0EF&UID=44332&L=EN&M=1&H=1&UNC=0&SRC=LK'
M=1&UNC=0&RT=62&H=1&L=EN&SRC=LK

Please see the related parts of the ngx_lua documentation for more details:

http://wiki.nginx.org/HttpLuaModule#ngx.req.get_uri_args
http://wiki.nginx.org/HttpLuaModule#ngx.req.set_uri_args

It's worth mentioning that, if you want to retain the order of the URI
arguments, then you can do string substitutions on the value of $args
directly, for example,

location = /t {
rewrite_by_lua '
local args = ngx.var.args
newargs, n, err = ngx.re.gsub(args, [[\b[SU]ID=[^&]*&?]], "", "jo")
if n and n > 0 then
ngx.var.args = newargs
end
';

echo $args;
}

Now test it with the original curl command again, we get exactly what
you expected:

RT=62&L=EN&M=1&H=1&UNC=0&SRC=LK

But for caching purposes, it's good to normalize the URI argument
order so that you can increase the cache hit rate. And the hash table
entry order used by LuaJIT or Lua can be used to normalize the order
as a nice side effect :)

Best regards,
-agentzh

_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx
Subject Author Posted

remove some parameters from $args

lahiru October 06, 2013 06:59AM

Re: remove some parameters from $args

Yichun Zhang (agentzh) October 06, 2013 01:44PM

Re: remove some parameters from $args

lahiru October 07, 2013 02:39AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 79
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready