希望cosocket 可以支持 bind 、listen 等操作,完成worker进程间的通信。
2020 年 Q2 新功能征集
hcwzqmail
好滴,这个可以有,也欢迎你来一起 review 和 测试 PR 哈
zhaoxiaobiaogm
嗯嗯,我们一起加油
- Edited
1、增加http 和 stream的连接管理,比如可以实现长连接的关闭等
2、在worker阶段访问数据库等不用timer实现的方式。
3、区分是or自身返回或后端业务返回的HTTP状态码,比如后端返回502或自身返回的502。
4、在SSL阶段增加更多的接口,比如SSL套件设置等。
5、新增动态监听http或 stream端口
6、ngx.location.capture支持更改请求header,以替代resty.http支持负载均衡。
doujiang24 好的,会持续关注:哈哈
增加动态设置日志级别的功能
- Edited
去掉timer的功能限制, 至少在worker init之后去掉timer的限制, 可以使用capture等功能.
目前我的做法是发起一个请求到自己, 然后在这个请求里无限循环执行周期任务然后sleep, 以实现一个无限制的timer.
官方应该能更优雅的实现吧, 不用这么hack.
lua entry thread aborted: runtime error: /usr/local/openresty/lualib/resty/mysql.lua:31: ngx_lua 0.9.11+ required
stream模块的resty-mysql支持?
是不是可以做一些增强 nginx upstream 部分的功能,例如在保证处理效率的前提下又能在 lua 处理响应的 body,例如管理对上游的链接池等。
282441848
多谢报告,这里应该只需要很小的改动,应该很快就可以修复更新到 opm
firlas
你是希望在 timer 里面使用 ngx.location.capture 么?
这个理论上也可以搞,不过可能相对改动大一些。
timer 里面选择使用 location.capture 而不使用 cosocket 是出于什么目的呢
还有其他希望在 timer 里面支持的么?
imilli
哈哈,有点多,也欢迎大家一起来贡献,齐头并进发展更快
合并http与stream的lua vm, 在core模块lua block (https://github.com/openresty/meta-lua-nginx-module/pull/76),创建配置时就初始化lua vm
doujiang24 目前只遇到ngx.location.capture这个限制.
原因是原本content_by_lua阶段的逻辑使用了很多capture, 因为考虑capture比完整请求要轻量.
随着项目发展, 这些逻辑其中一些要跑在timer里了, timer不支持capture, 只好到处去ngx.get_phase()区分.
看文档时我在想, 既然timer已经"will take one (fake) connection"了, 那不能干脆 take one (fake) request么, 然后timer逻辑发生在这个fake request的content_by阶段, 能使用content阶段所有功能.
毕竟没看过源码, 很可能想的过于简单.
feng
这个 PR 只是完成 shdict 在 stream 和 http 之间共享呢
完全的合并两个 lua vm,这是另外一个话题,其实合并也不太好
firlas
确实 timer 还不是完整的请求,没有 content phase 这个概念了呢,执行上也没有了呢
要支持的话,还是有一些改动量的,当然也不是要引入 content phase 才可以,有其他路子
希望支持可以配置请求到所有worker的的“广播"
tweyseo 有一个这个 module,可以参考一下: https://github.com/slact/ngx_lua_ipc