Nginx返回一个带有假200状态代码的空json对象

时间:2013-11-12 13:13:04

标签: json performance nginx

我们在Nginx上运行了一个API,它应该返回JSON对象。这个服务器有很多负载,所以我们做了很多性能改进。

API从客户端收到ID。服务器有一堆代表这些ID的文件。因此,如果将ID作为文件找到,则后端将返回该文件的内容(即JSON)。如果该文件不存在,则不会调用后端,Nginx simple会为此发送404,因此我们保存了性能(没有后端系统必须运行)。

现在我们偶然发现了一个问题。由于我们仍然需要支持旧系统,我们无法为客户分发404页面,因为这会导致问题。我想出的是,返回一个空的JSON字符串({}),带有'假'200状态代码。这需要是一个高性能的解决方案,仍然能够处理所有负载。

这可能吗,如果可以,怎么做?

2 个答案:

答案 0 :(得分:14)

error_page 404 =200 @empty_json;

location @empty_json {
     return 200 "{}";
}

参考:

答案 1 :(得分:2)

您始终可以在文档根目录中创建一个文件,例如empty.json只包含空对象{}

然后在您的nginx配置中,在您的位置块中添加此行

try_files $uri /empty.json;

(了解更多关于try_files

这将检查客户端请求的文件是否存在,如果它不存在,则只显示empty.json。这会产生200 HTTP OK,并向请求客户端显示{}