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

nginx conf設定の問題

1

http {}セクションには

が設定されています リーリー

要求されたヘッダーは

に設定されます リーリー

次に、サーバーの {} セクションで、

リーリー

3 番目のマップ命令が前の値を上書きするため、出力される結果は常に 30 になります。

問題は、マップ パーツのさまざまなヘッダーに基づいて目的の値を取得する方法です。

2

問題 1 を解決するには、私が考える方法は次のとおりです。 リーリー

次に、場所の {} セクションで

を使用します。 リーリー

必要な値を取得するには; 恥ずかしながら、この if は失敗したようです。nginx は if

の使用を推奨しません。

それでは、功績と名声について深い知識を持っているクラスメートの中で、この質問に答えるのに役立つ人は誰でしょうか?
PHP中文网PHP中文网2688日前594

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

  • 阿神

    阿神2017-05-16 17:31:03

    わかりました、if を使用しましたが、nginx は if の使用を推奨していません。誰かがより良い解決策を持っていますか?


    @冰风 その人、あなたに返信するテキストはMD形式を使用できないようです、私はここであなたに返信します:

    しかし、あなたの答えは私の質問に対する答えではありませんでした。

    私のビジネスニーズは次のとおりです:

    リーリー

    つまり、リクエストには $http

    header

    1、$httpheader2、$httpheader3 のいずれか 1 つだけがあり、対応する値は a、b、c のいずれか 1 つです。 nginx はヘッダーのキーを決定し、キーに対応する値に基づいて確認された $route 値を返す必要があります。

    ビジネス例:

    curl -H "header_php:a" http://biz.domain.com/

    1. curl -H "header_python:b" http://biz.domain.com/ 最终$route为 111, 并 fastcgi_pass localhost:111
    2. curl -H "header_ruby:c" http://biz.domain.com/ 最终$route为 212, 并 fastcgi_pass localhost:212
    3. 最终$route为 313, 并 fastcgi_pass localhost:313それでは

    php-1 モニター 111、php-2 モニター 112、php-3 モニター 113

      python-1 モニター 211、python-2 モニター 212、python-3 モニター 213
    1. ruby-1 は 311 をリッスン、ruby-2 は 312 をリッスン、ruby-3 は 313 をリッスンします
    2. 最終的に、合計 9 つのビジネス プロセスがあり、それぞれがポートをリッスンします。
    なぜ私がそのような奇妙な要求をするのかは聞かないでください、それは私の隠れた功績と名声です~~~

    つまり、あなたの答えは私の動物的欲求を満たすことはできません

    返事
    0
  • 漂亮男人

    漂亮男人2017-05-16 17:31:03

    ホストはいくつかのことを理解する必要があります。 1. マップ命令内のステートメントは、デフォルトで N 個のうち 1 個を実行する必要があります。

    リーリー

    と同等です リーリー

    したがって、最後の送信 $route は 30;

    map は、複数の入力値と出力値の間のマッピング関係を確立するための命令です。入力値がマップに渡される前に定義され、割り当てられていることが最善です。それ以外の場合は、デフォルトが直接実行されます。

    オリジナルポスターを試してみることができます

    リーリー

    返事
    0
  • キャンセル返事