【发布时间】:2018-04-18 11:48:51
【问题描述】:
我有一个 openresty nginx 来代理 elasticsearch。因此,grafana 客户端联系 nginx,然后 nginx 从 elasticsearch 获取响应。如果来自 elasticsearch 的响应正文包含键 "timedout": true
,则目标是将 http 状态更改为 504使用 body_by_filter_lua_block 读取响应正文,但该指令不支持更改 http 状态。
http {
lua_need_request_body on;
server {
listen 8000;
location / {
proxy_pass "http://localhost:9200"
header_filter_by_lua_block {
ngx.header.content_length = nil
}
body_filter_by_lua_block {
if string.find(ngx.arg[1], "\"timedout\":true") then
ngx.arg[1] = nil
}
}
}
}
上面的代码只是将响应体设为 nil 。但是有没有办法改变http状态?或者如果 nginx 不支持它,是否有任何其他代理服务器可以完成这项工作?
任何帮助将不胜感激。
【问题讨论】: