ユニコーンの前でNginxを使用しています。アプリケーションの負荷が高く、すべてのユニコーン ワーカーがビジー状態の場合、nginx はゲートウェイが正しく構成されていないことを示す 502 応答を返します。私はこの動作に問題はありませんが、この状態では、nginx に 503 応答コード (サーバーがビジーです。後で再試行してください) を返してもらいたいと考えています。これは、はるかに適切な応答です。
私はこの答えを見ました: nginxでproxy_passゲートウェイがダウンしているときに返されるHTTPステータスコードを変更することは可能ですか?
アップストリーム プロキシから返されたいくつかのステータス コードを書き換える方法について説明します。
location / {
proxy_pass http://backend;
proxy_intercept_errors on;
error_page 502 503 504 =503 @proxyisdown; # always reply with 503
}
location @proxyisdown {
add_header Retry-After 500;
index my_pretty_error_page.html;
}
しかし、これには 2 つの問題があります。
- アップストリーム アプリケーションは、保持する必要がある有効な状況に対して 502 応答コードを返すことがあります。
- アップストリーム プロキシが実際にこの誤ったステータス コードを返しているとは確信していません。おそらく、nginx は (tcp?) バッファにアイテムを配置できず、nginx は誤解を招くステータス コードを返します。
この状況で nginx から返されるステータス コードを制御して、502 ではなく 503 にする方法はありますか?