2017-06-05 30 views
1

URLパスが送信者のcookie/ipに依存せずに繰り返される場合、リクエストを同じアップストリームサーバーにリダイレクトする基本nginx LBを作成しようとしています。例えば同じURLパスを持つすべてのリクエストを同じアップストリームサーバーに動的にリダイレクト

は、私はLBがA.comと呼ばれ、A.com/targetと呼ばれるターゲット持って言うことができます。 最初にリクエストがA.com/targetに送信されると、LBは上流のランダムなサーバーにリダイレクトされます。これまでのところ、問題は同じURLパスを使用する2番目のリクエストですその要求を行う担当者、そのためにクッキーは問題になりません)前回にリダイレクトされたのと同じサーバーにリダイレクトするためにLBが必要です。

私はちょうどそれが正しく動作するように私は誰かがnginxまたは他の単純なLBでそれを行う適切な方法を持っているかと尋ねたかった。

答えて

1

バージョン1.7.2で導入されたnginx上流ハッシュ機能の助けを借りて、URLでバランスをとることができます。 公式ドキュメントはhereです。

upstream backend { 
    hash $scheme://$host$request_uri; # put any variables here 

    server backend1.example.com; 
    server backend2.example.com; 
    server backend3.example.com; 
} 
+0

たとえば、regexキャプチャグループに対して実行するなど、uriの特定の部分で行うことはできますか? – Rewire

+0

$ scheme:// $ host $ request_uriを$ myvarに置き換え、myvarを名前付きキャプチャとして含む場所を定義します。 location〜^ /(?。*)$などです。 – silinxey

関連する問題