我这边现在有一个需求,需要将一个uri进行修改,修改主要是为了提取一些信息,提取信息之后,需要rewrite修改后的uri,然后在后续的一个bodyfilter来使用前面提取的信息。我使用rewrite_by_lua,然后将信息存到变量里面,可是rewrite之后,变量都被清空了,我想问下,还有其他的方式做这个事情吗?子请求不能用,因为我有一个模块是不支持子请求的。谢谢~
我这边现在有一个需求,需要将一个uri进行修改,修改主要是为了提取一些信息,提取信息之后,需要rewrite修改后的uri,然后在后续的一个bodyfilter来使用前面提取的信息。 我使用rewrite_by_lua,然后将信息存到变量里面,可是rewrite之后,变量都被清空了,我想问下,还有其他的方式做这个事情吗? 子请求不能用,因为我有一个模块是不支持子请求的。 谢谢~
一般有两种方法: 1.通过URL传参数:ngx.exec("/a?path=/www"),/abc中可以用ngx.var.arg_path接收到信息。 2.通过ngx.ctx来做全局的参数。详细见: http://wiki.nginx.org/HttpLuaModule#ngx.ctx 如果是多个请求间共享信息可以采用ngx.shared.DICT。详见: http://wiki.nginx.org/HttpLuaModule#ngx.shared.DICT 2013-06-05 wgm.china 发件人:Simon Liu <simohay...@gmail.com> 发送时间:2013-06-05 21:26 主题:[openresty] Re: 请教一个rewrite_by_lua的问题 收件人:"openresty"<open...@googlegroups.com> 抄送: 忘了说了,我这里使用的是内部重定向(ngx.exec). On Wednesday, June 5, 2013 9:23:27 PM UTC+8, Simon Liu wrote: 我这边现在有一个需求,需要将一个uri进行修改,修改主要是为了提取一些信息,提取信息之后,需要rewrite修改后的uri,然后在后续的一个bodyfilter来使用前面提取的信息。 我使用rewrite_by_lua,然后将信息存到变量里面,可是rewrite之后,变量都被清空了,我想问下,还有其他的方式做这个事情吗? 子请求不能用,因为我有一个模块是不支持子请求的。 谢谢~ -- sp;
第一种方法我这边不能用,因为后续还会有一个模块来解析uri,如果加了参数,就会解析出错。第二种方法的话,内部重定向会销毁掉ctx的。我这里只是一个请求间传递信息,因此不需要dict。谢谢~On Wednesday, June 5, 2013 9:43:59 PM UTC+8, wgm.china wrote: 一般有两种方法: 1.通过URL传参数:ngx.exec("/a?path=/www"),/abc中可以用ngx.var.arg_path接收到信息。 2.通过ngx.ctx来做全局的参数。详细见: http://wiki.nginx.org/HttpLuaModule#ngx.ctx 如果是多个请求间共享信息可以采用ngx.shared.DICT。详见: http://wiki.nginx.org/HttpLuaModule#ngx.shared.DICT 2013-06-05 wgm.china 发件人:Simon Liu <simohay...@gmail.com> 发送时间:2013-06-05 21:26 主题:[openresty] Re: 请教一个rewrite_by_lua的问题 收件人:"openresty"<open...@googlegroups.com> 抄送: 忘了说了,我这里使用的是内部重定向(ngx.exec). On Wednesday, June 5, 2013 9:23:27 PM UTC+8, Simon Liu wrote: 我这边现在有一个需求,需要将一个uri进行修改,修改主要是为了提取一些信息,提取信息之后,需要rewrite修改后的uri,然后在后续的一个bodyfilter来使用前面提取的信息。 我使用rewrite_by_lua,然后将信息存到变量里面,可是rewrite之后,变量都被清空了,我想问下,还有其他的方式做这个事情吗? 子请求不能用,因为我有一个模块是不支持子请求的。 谢谢~ -- sp;