【发布时间】:2018-01-31 09:18:59
【问题描述】:
我也有类似的需求https://github.com/openresty/lua-nginx-module/issues/220
我的用例
- 我正在通过使用
proxy_pass将文件转发到远程服务器。 - 代理通过后,我需要将
$body_bytes_sent传递给远程网址。 - 我想过做一个
content_by_lua块,将ngx.capture转发到proxy_pass块,ngx.say()返回来自ngx.capture的内容。随后是一个带有 $body_bytes_sent 的请求到远程 url。但我需要支持流式传输,这是不行的。而且文件可能会变得很大,这对ngx.capture()不利。 - 我想过做一个
log_by_lua块,但是cosockets apis 被禁用了。 https://github.com/openresty/lua-nginx-module#log_by_lua
【问题讨论】:
-
不要觉得这有点矫枉过正,我们会做类似的事情,即跟踪请求信息,但是,您可以使用 beats 来搜索这些信息并在 NGINX 中定义日志文件。也许将其发布到 logstash 实例
-
包含
proxy_pass的块有一个查询微服务的access_by_lua块。在我们的设置中,微服务接收来自log_by_lua的数据,它可以确定是否应该访问特定的 url。 ----proxy_pass里面的远程服务器不受我们控制。所以我们不可能在那里完成。 --- 对 Logstash 进行了一些思考。但我认为这会使事情变得复杂,因为我需要将日志副本发送到微服务。 -
您是否发现“不会阻止 nginx 工作人员”通过 http 发送数据的东西?
-
很遗憾没有。还是有阻塞操作。