http {}セクションには
が設定されています リーリー要求されたヘッダーは
に設定されます リーリー次に、サーバーの {} セクションで、
リーリー3 番目のマップ命令が前の値を上書きするため、出力される結果は常に 30 になります。
問題は、マップ パーツのさまざまなヘッダーに基づいて目的の値を取得する方法です。2
次に、場所の {} セクションで
を使用します。 リーリー必要な値を取得するには; 恥ずかしながら、この if は失敗したようです。nginx は if
の使用を推奨しません。それでは、功績と名声について深い知識を持っているクラスメートの中で、この質問に答えるのに役立つ人は誰でしょうか?
わかりました、if を使用しましたが、nginx は if の使用を推奨していません。誰かがより良い解決策を持っていますか?
@冰风 その人、あなたに返信するテキストはMD形式を使用できないようです、私はここであなたに返信します:
私のビジネスニーズは次のとおりです:
リーリーつまり、リクエストには $http
header1、$httpheader2、$httpheader3 のいずれか 1 つだけがあり、対応する値は a、b、c のいずれか 1 つです。 nginx はヘッダーのキーを決定し、キーに対応する値に基づいて確認された $route 値を返す必要があります。
ビジネス例:curl -H "header_php:a" http://biz.domain.com/
最终$route为 111, 并 fastcgi_pass localhost:111
最终$route为 212, 并 fastcgi_pass localhost:212
最终$route为 313, 并 fastcgi_pass localhost:313
それではphp-1 モニター 111、php-2 モニター 112、php-3 モニター 113
python-1 モニター 211、python-2 モニター 212、python-3 モニター 213-
ruby-1 は 311 をリッスン、ruby-2 は 312 をリッスン、ruby-3 は 313 をリッスンします -
- 最終的に、合計 9 つのビジネス プロセスがあり、それぞれがポートをリッスンします。
なぜ私がそのような奇妙な要求をするのかは聞かないでください、それは私の隠れた功績と名声です~~~つまり、あなたの答えは私の動物的欲求を満たすことはできません
ホストはいくつかのことを理解する必要があります。 1. マップ命令内のステートメントは、デフォルトで N 個のうち 1 個を実行する必要があります。
リーリーは
と同等です リーリーしたがって、最後の送信 $route は 30;
map は、複数の入力値と出力値の間のマッピング関係を確立するための命令です。入力値がマップに渡される前に定義され、割り当てられていることが最善です。それ以外の場合は、デフォルトが直接実行されます。
オリジナルポスターを試してみることができます
リーリー