ホームページ  >  に質問  >  本文

Nginx リバースプロキシの長い接続の問題

サーバー A、B、C、D、E がいくつかあります...そのうち、A は外部ネットワークにアクセスできますが、他のサーバーはアクセスできません。http_proxy メソッドを使用して、A 経由で外部ネットワークにアクセスします。主な目的パートナーのインターフェイスにアクセスすることです。たとえば、http://api.xxx.com/get/user では、1 秒あたり約数百回アクセスされます。

ここ数日、A とパートナー サーバー (Z とします) の間で長い接続を維持できるかどうかを確認してみました。変更とテストの後、Z から返されるヘッダーにはすでに http/ 1.1 接続をキープアライブとして実行していますが、ソケットの -wait 時間が依然として非常に長いです。さらに、A のログでは、nginx の $connection パラメーターが常に増加しています。これはなぜですか?

以下は A のプロキシ パス設定です:

リーリー

私の設定に問題があるのでしょうか?インターネットのことが理解できず、ただいじっているだけです。知識のある方、アドバイスをいただければ幸いです。ありがとうございます

PHP中文网PHP中文网2713日前747

全員に返信(2)返信します

  • 高洛峰

    高洛峰2017-05-16 17:26:38

    公式ブログを見てこの質問を転送したので、ご自身で解決したかどうかわかりませんが、お手伝いに来ました。

    まず最初に、設定について説明します。どこから来たのかはわかりません。例として、proxy_pass を例に挙げます。これは、元のアドレスを指します。マシン ( 10.0.0.100/api/user (10.0.0.100) であるとします。$host は 10.0.0.100、$request_uri は/api/user であるため、ここで何か奇妙なことが起こりました。A にアクセスし、A にプロキシします。もう疲れ果てて少し眠いので、この状況で何が起こるかについては説明しません

    。 ----------------決定は上流のあなたです----------------
    ここで、アクセスする必要がある外部ネットワーク IP を 123.123.123.123 に設定します。$host$request_uri リーリー
    また、一部のパラメーターの意味がわからない場合は、ビジネス シナリオに適していない可能性があるため、追加しないでください
    ここでは、アップストリームのこの

    パラメータ

    の説明に焦点を当てます。 HTTP 1.1 仕様では、HTTP/2 のようなリクエスト識別子がないことがわかっており、キープアライブ TCP 接続は一度に 1 つの http リクエストしか送信できません。これが、リクエストが返されるまで送信できない理由です。パフォーマンス Web サーバー (Tengine など) が js などの静的ファイルを 1 つにマージするのはなぜですか (時間と接続を節約するため)
    ここで 10 という数字を使用するのはなぜですか? 外部ホストをリクエストして返すのに 100 ミリ秒かかると仮定すると、1 秒あたり 100 回の要件を完了するには、1 つの TCP が 10 回のリクエストを完了する必要があります。 , おおよそのアルゴリズムはこんな感じです。実際にはこの数値を計算値よりも適当に大きく設定すると安定性が高まるかも知れませんkeepalive
    ご質問がございましたら、メッセージを残してください

    返事
    0
  • phpcn_u1582

    phpcn_u15822017-05-16 17:26:38

    すみません: 現時点でバックエンド サーバーが動的である場合、アップストリームのキープアライブを使用して nginx とバックエンドの接続が長くなることを確認するにはどうすればよいですか?ありがとう!

    返事
    0
  • キャンセル返事