5

ユニコーンの前で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 つの問題があります。

  1. アップストリーム アプリケーションは、保持する必要がある有効な状況に対して 502 応答コードを返すことがあります。
  2. アップストリーム プロキシが実際にこの誤ったステータス コードを返しているとは確信していません。おそらく、nginx は (tcp?) バッファにアイテムを配置できず、nginx は誤解を招くステータス コードを返します。

この状況で nginx から返されるステータス コードを制御して、502 ではなく 503 にする方法はありますか?

4

1 に答える 1

0

バックエンドサーバーでこれに対処することを検討しましたか? バックエンド サーバーが受け入れるクライアントの数を調整して、サーバーへの要求が通常成功または失敗し、503 を返す糖蜜状態でスタックしないようにします。理想的には、バックエンド サーバーを調整できるようになります。使用可能なクライアントが不足したときに 503 を返し、バックエンド サーバーが実際にダウンしている場合、Nginx は引き続き 502 を返します。

于 2012-06-12T15:08:31.277 に答える