2016-06-13 11 views
2

ロードバランサの後ろにWildflyがあり、それらの間の接続は常にHTTPです。クライアントとロードバランサ間の接続には、HTTPまたはHTTPSを使用できます。HTTPをHTTPSにリダイレクトするためのundertow-handlers.confのルール

ロードバランサは、クライアントが使用しているプロトコルをWildflyに知らせるためのヘッダー(X-Forwarded-Proto)を設定します。

上記のすべての条件を考慮して、HTTPSにリダイレクトするためのアンダースコアルールを作成しようとしています。

これは私のより多くの成功した試行(このルールは引き-handlers.confファイルに書き込まれ、それがそのファイル内の唯一のことだ)のうちの1つである:「

正規表現(/(.* ) ')と 正規表現(パターン=' HTTP」、値= '%{I、Xフォワード・プロト}'、フルマッチ=真) - > リダイレクト(https://server.com/ $ {1})

クライアントが次のようなURLにアクセスしようとしたときhttp://server.com/m yappはhttps://server.comにリダイレクトされますが、パス/myappはありません。

完全パスを維持するためにアンダートールールを修正するにはどうすればよいですか?

+0

リダイレクトを適用するためにこのワイルドフールルール(Undertowに書かれています)を実際に知っていませんが、あなたの質問を読んでいる間に私の心に来たものを推測したいと思います: "regex( '/(.*) ')」は、「相対パス」のみと一致すると想定されているか、URL全体(たとえば「http://server.com/some_endpoint」)と一致するはずですか? – Miere

+0

これは相対パスにのみ一致し、他のシナリオでも使用していますしかし、これは2正規表現条件で述語を使うのは初めてですが、それが問題になるかどうかは分かりません。 –

答えて

4

試してみてください。

equals('http', %{SCHEME}) -> redirect(https://server.com/%U) 

それとも

equals('http', %{i,X-Forwarded-Proto}) -> redirect(https://server.com/%U) 

あなたは(あなたが引き波を持っている場合は、自動的にX-転送さ-プロトを処理するHTTPリスナーにプロキシアドレスフォワーディングを有効にした場合に応じて、それは%{SCHEME}の下に現れます)。

+0

これは完璧に動作します!ありがとう –

関連する問題