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

时间:2016-08-19 12:35:18

标签: nginx url-rewriting lua

我需要执行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只能在重写指令范围内访问。

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

1 个答案:

答案 0 :(得分:2)

所以,这是解决方案:

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";
}

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