之前用网上搜的hello world模块在机器上跑了一遍。然后今天按照自己的意愿把模块修改。然后遇到一些问题,现在总结一下:
(1)注意命名问题,即模块源代码文件命名以及源代码里面变量命令。刚刚开始出出现一个问题,就是连接成最后的二进制文件时,找不到我写的模块,然后看了下发现config文件中的模块命名与源代码中模块命名不一致。
(2)我要修改返回给用户的数据部分,这部分可以放在filter模块去操作,也可以在handler模块实现,即改变ngx_chain_t数据链即可,ngx_chain_t被申明为ngx_chain_s链表,可以在改链表的任何地方添加数据。添加数据即创建ngx_chain_t节点即可,然后连接到ngx_chain_s链表上,示例代码如下:
out.next = &out_time;//out_time是我创建的新的节点,并在里面填写数据
out_time.next=NULL;//注意改out_time变量buf成员赋值
(3)使用curl命令发请求测试,发现curl命令处理完之后一直在等待,仔细看了下是因为
r->headers_out.content_length_n 的值大于数据体中的数据大小,因此把该部分设置为与数据体数据部分大小一样的值即可。收到了的数据大小就等于content_length_n值。