chronolaw/ngx_cpp_dev

nginx的stream模块可以实现包的处理,然后转发吗?

huntinux opened this issue · 2 comments

TCP是一个流协议。 通常开发时会在TCP载荷部分使用自定义协议来表示包的概念。 比如 length + data的模式。 客户端按照协议进行打包,然后发送。服务器则收到一个完整的包后,解包,处理,发送响应。

我在《Nginx完全开发指南》 一书中,看到了定制的stream模块,包括 discard 、 time、 chargen。 这几个例子的服务器都没有从客户端接收包的动作。

那么,通过修改nginx的stream模块是否可以实现如下的功能: 收到一个完整的包,然后对这个包进行处理,然后再proxy_pass出去吗。 是否有相关的例子?

谢谢~~

@chronolaw

应该可以,需要做preread模块,这方面暂时没有例子。

如果要做较复杂的处理,建议使用stream Lua,见19.7