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

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

API从客户端收到一个ID。 服务器有一堆代表这些ID的文件。 所以如果这个ID是作为一个文件被find的,这个文件的内容(即JSON)将被后端返回。 如果文件不存在,不调用后端,Nginx简单的发送一个404,所以我们保存性能(没有后端系统必须运行)。

现在我们偶然发现了一个问题。 由于旧系统,我们仍然需要支持,我们不能为客户提供404页面,因为这会导致问题。 我想到的是,返回一个空的JSONstring,而不是( {} )与一个'假'200状态代码。 这需要是一个高性能的解决scheme,仍然能够处理所有的负载。

这是可能的,如果是这样,怎么办?

 error_page 404 =200 @empty_json; location @empty_json { return 200 "{}"; } 

参考:

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

然后在你的nginx配置中在你的位置块中添加这一行

 try_files $uri /empty.json; 

(阅读更多关于try_files )

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