我们有一个在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,并向请求客户端显示{}
。