Stay Hungry.Stay Foolish.
nginx lua踩过的坑

获取servername一个坑

我在servername里面配置了

server_name   www.b.com www.a.com;

我想处理通过请求www.a.com的域名包,使用lua对www.a.com的包做了规则,结果死活不生效。原因是通过nginx的ngx.var.server_name取到的servername, 无论是www.a.com还是www.b.com的包,得到的servername都是www.b.com。

请求阶段的坑

access, header_filter, body_filter,log这几个阶段的context是适用于http的,但是有坑,开始我以为任何的请求都会经历这4个阶段,所以在里面大胆的使用ngx.ctx,结果发现如果配置了301,或者302,是不会经历acces阶段的,rewrite请求之后直接到了response的header_filter阶段。

lua内存的坑

lua对于内存的使用是有2g的限制的,开始不知道,结果使用ngx.ctx的时候一时爽,把返回chunk的数据都拼接到ngx.ctx里面,请求不结束,内存不释放,导致内存爆炸。

lua语言特别坑

  • lua table下标从1开始
  • lua table遍历时ipairs和pairs的区别
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
评论

暂无评论~~