如何使用Nginx重写和更改参数的大小写?

我需要执行一个Nginx永久重定向,并且更改参数的大小写。

目前,重写规则如下所示:

location / {
    rewrite ^/old_url/(.*)/(.*).html$ "http://cdn.example.com/test/$1 $2.pdf" permanent;
}

我尝试使用Lua更改大小写,然后将$var1和$var2传递给重写第二个参数:

set_by_lua $var1 "return ngx.arg[1]:lower()" $1;
set_by_lua $var2 "return ngx.arg[1]:lower()" $2;

但它不起作用,因为$1和$2仅在rewrite指令作用域内可访问。

处理重定向的正确方法是什么?

点赞
用户1869597
用户1869597

所以,这是解决方案:

location ~* /old_url/(.*)/(.*).html {
    set_by_lua $var1 "return ngx.arg[1]:upper()" $1;
    set_by_lua $var2 "return ngx.arg[1]:upper()" $2;
    return 301 "http://cdn.example.com/test/$var1 $var2.pdf";
}

使用 location 匹配 URL,而不是使用 rewrite。然后可以在作用域内访问 $1$2 并使用 Lua 进行修改。

2016-08-19 14:05:49