nginx的stream模块可以实现包的处理,然后转发吗?
huntinux opened this issue · 2 comments
huntinux commented
TCP是一个流协议。 通常开发时会在TCP载荷部分使用自定义协议来表示包的概念。 比如 length + data的模式。 客户端按照协议进行打包,然后发送。服务器则收到一个完整的包后,解包,处理,发送响应。
我在《Nginx完全开发指南》 一书中,看到了定制的stream模块,包括 discard 、 time、 chargen。 这几个例子的服务器都没有从客户端接收包的动作。
那么,通过修改nginx的stream模块是否可以实现如下的功能: 收到一个完整的包,然后对这个包进行处理,然后再proxy_pass出去吗。 是否有相关的例子?
谢谢~~
chronolaw commented
应该可以,需要做preread模块,这方面暂时没有例子。
chronolaw commented
如果要做较复杂的处理,建议使用stream Lua,见19.7