如何在lua或者nginx中获取查询参数?

我正在尝试实现这个- https://gist.github.com/MendelGusmao/2356310基于Lua和nginx的URL缩短器,我想要实现的唯一更改是当一些查询字符串参数与缩短的URL一起出现时,我需要取出该参数并插入到长URL中。

例如:http://google.com?test=2变成 http://abc.in/abc,当访问http://abc.in/abc?test=3时,我被重定向到-http://google.com?test=3

为此,我需要从请求的URI中获取查询字符串参数,有人可以帮忙提供一些代码吗?

点赞
用户1442917
用户1442917

你可以使用ngx.var.arg_name来访问查询参数,其中name是你想要访问的查询参数的名称。请参见本教程中的无限名称变量部分来了解查询参数处理的详细信息;你还可以查看我的博客文章以获取Lua nginx/openresty示例。

作为替代方案,你可以使用ngx.req.get_uri_args()来检索所有查询参数作为一个表。请参见同一教程中的此部分来对比这些方法的简要比较。

2014-10-01 04:38:39
用户1006422
用户1006422

你还可以使用ngx.var.QUERY_STRING来访问查询字符串并对其进行解码和解析。

2016-04-29 00:52:57
用户4692662
用户4692662

在这个例子中,你可以仅使用nginx使用$arg_test获取查询参数,test是查询参数的名称。

这在 [http://nginx.org/en/docs/http/ngx\_http\_core\_module.html#var\_arg\_] (http://nginx.org/en/docs/http/ngx_http_core_module.html#var_arg_) 中有记录。

2018-05-30 14:03:49