我们在Nginx上运行了一个API,它应该返回JSON对象。这个服务器有很多负载,所以我们做了很多性能改进。
API从客户端收到ID。服务器有一堆代表这些ID的文件。因此,如果将ID作为文件找到,则后端将返回该文件的内容(即JSON)。如果该文件不存在,则不会调用后端,Nginx simple会为此发送404,因此我们保存了性能(没有后端系统必须运行)。
现在我们偶然发现了一个问题。由于我们仍然需要支持旧系统,我们无法为客户分发404页面,因为这会导致问题。我想出的是,返回一个空的JSON字符串({}
),带有'假'200状态代码。这需要是一个高性能的解决方案,仍然能够处理所有负载。
这可能吗,如果可以,怎么做?
答案 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,并向请求客户端显示{}
。