【问题标题】:Custom response from Tarantool + Nginx来自 Tarantool + Nginx 的自定义响应
【发布时间】:2020-10-07 13:53:25
【问题描述】:
有实例:DMZ 中的 Nginx,使用 TNT_nginx_upstream_module + Tarantool Cartridge 作为 API 服务器。
当我得到良好结果的响应时 - 它是 200 OK + JSON 数据
如何设置其他响应?
- 400 错误请求
- 403 禁止
- 404 未找到
- 410 走了
- 500 内部服务器错误
- 503 服务不可用
【问题讨论】:
标签:
nginx
tarantool
nginx-upstreams
tarantool-cartridge
【解决方案1】:
Tarantool Nginx 上游模块被设计为遵循 JSON RPC,而不是通用 HTTP。有一种方法可以返回任意结果,在location 部分中使用rewrite_by_lua。它看起来像这样:
location /api {
default_type application/json;
rewrite_by_lua '
...
';
}
我没有在此处粘贴完整的 sn-p,因为它很长。你可以查一下here。
一般来说,如果你想要一个通用的 HTTP API,我也建议你不要使用上面提到的上游模块。最好用Lua写的HTTP server module,用Nginx做常规的反向代理。作为奖励,Lua HTTP 服务器加入了cartridge 模块。