9

JSON オブジェクトを返すことになっている Nginx で実行されている API があります。このサーバーには多くの負荷がかかるため、パフォーマンスを大幅に改善しました。

API はクライアントから ID を受け取ります。サーバーには、これらの ID を表す一連のファイルがあります。そのため、ID がファイルとして見つかった場合、そのファイルの内容 (JSON) がバックエンドによって返されます。ファイルが存在しない場合、バックエンドは呼び出されず、Nginx シンプルはそのために 404 を送信するため、パフォーマンスが節約されます (バックエンド システムを実行する必要はありません)。

今、私たちは問題に遭遇しました。まだサポートしなければならない古いシステムのため、問題が発生するため、クライアントに 404 ページを配布することはできません。私が思いついたのは{}、「偽の」200ステータスコードを使用して()代わりに空のJSON文字列を返すことです。これは、すべての負荷を処理できるようにするために、高性能のソリューションである必要があります。

これは可能ですか?

4

2 に答える 2

18
error_page 404 =200 @empty_json;

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

参照:

于 2013-11-12T14:48:28.930 に答える
2

empty.json空のオブジェクトのみを含むeg という名前のファイルをドキュメントルートにいつでも作成できます{}

次に、nginx 構成で、この行をロケーション ブロックに追加します。

try_files $uri /empty.json;

( try_filesの詳細を読む)

これにより、クライアントから要求されたファイルが存在するかどうかがチェックされ、存在しない場合は代わりに empty.json が表示されます。これにより、200 HTTP OK が生成{}され、要求元のクライアントに a が表示されます。

于 2013-11-12T13:23:41.747 に答える