大家好, 我这里有一个场景,需要将用户请求先转发到一个决策服务器,然后根据返回的决策响应决定是否继续转发请求到真正服务器。 我目前思路是使用cosocket来进行请求的多次转发,功能上应该没问题了。但是请求体如何处理有点苦恼, 1. 为了满足上述要求,请求体必须要先行缓存,没办法做到流式转发。 2. 由于不支持sendfile,所以请求体必须缓存在内存里。 大家有没有类似场景,有没有什么更好的解决方案,望请不吝赐教哈。谢谢。 --
> 我这里有一个场景,需要将用户请求先转发到一个决策服务器,然后根据返回的决策响应决定是否继续转发请求到真正服务器。我觉得你的这个场景,使用 proxy_pass 更合适,nginx 自身已经做了非常好的打底。不需要所有事情重新造轮子。交换文件体积过大时,nginx 是使用临时文件完成的。
在 2016年3月14日星期一 UTC+8上午8:53:46,YuanSheng写道:> 我这里有一个场景,需要将用户请求先转发到一个决策服务器,然后根据返回的决策响应决定是否继续转发请求到真正服务器。我觉得你的这个场景,使用 proxy_pass 更合适,nginx 自身已经做了非常好的打底。不需要所有事情重新造轮子。交换文件体积过大时,nginx 是使用临时文件完成的。 可是,有一个问题,proxy_pass有什么办法能将同一个请求转发两次呢?我的场景是请求先转给策略服务器,然后再转给应用服务器的。类似于做了一层WAF。 --
> 可是,有一个问题,proxy_pass有什么办法能将同一个请求转发两次呢?我的场景是请求先转给策略服务器,然后再转给应用服务器的。类似于做了一层WAF。如果你的策略服务可以直接指定下一个节点的跳转地址,是不是可以呢?
在 2016年3月14日星期一 UTC+8上午11:33:21,YuanSheng写道:> 可是,有一个问题,proxy_pass有什么办法能将同一个请求转发两次呢?我的场景是请求先转给策略服务器,然后再转给应用服务器的。类似于做了一层WAF。如果你的策略服务可以直接指定下一个节点的跳转地址,是不是可以呢? 策略服务是一个外围的东西,可能是一个检测云,所以无法要求它做这样的转发。 类似这个方案:https://security.tencent.com/index.php/blog/msg/56 看来只能先缓存请求了,不过我做了个流式读取请求体临时文件并发送机制,性能应该会有所下降,但内存不会占用太高; cosocket如果能支持sendfile就好了。 thanks. --
https://github.com/pintsized/lua-resty-http对这个库增加一些改造,把大文件切割成小块,是否可以?