私はこれをネットで見つけるのに苦労しましたが、ついにそれを行う方法を見つけました。
問題は、http が内部で ELB の https ポートにリダイレクトされるとすぐに、ポート 80 にリダイレクトされてループを作成していたことです。これは、ELB が SSL をオフロードしてからポート 80 に再度接続するために発生します。
最後に、いくつかの調査の結果、ELB がオフロードした場合でも SSL tomcat がオリジン リクエストが SSL を使用するようになるように、X-Forwarded-Proto を管理するための正しい書き換えルールを得ました。
これは、Tomcat 8 で Tomcat バルブを使用して行われます。以前のバージョンでも実行できると確信しています。バルブを使用して Tomcat で書き換えルールを有効にしました。その後は、Apache でリダイレクト ルールを記述するのと同じくらい簡単でした。
手順は次のとおりです。
ステップ1:
を。a. tomcat conf フォルダーの下にある context.xml を開きます。すぐ下に次の行を貼り付けます
<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />
注 : これにより、バルブがグローバルに有効になります。これを特定のホストに対して有効にする必要がある場合は、その特定のドメインの server.xml 内に貼り付ける必要があります。
ステップ2:
を。conf/server.xml を開きます。すぐ上に次の行を貼り付けます </Host>
<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />
ステップ 3:
を。web.xml があるフォルダーを開きます。たとえば、アプリケーションが ROOT でホストされている場合、web.xml は webapps/ROOT/WEB-INF の下にあります。
b. 同様に、アプリケーションが webapps/myappfolder でホストされている場合、web.xml は webapps/myappfolder/WEB-INF の下にあります。
c. WEB-INF フォルダーに新しいファイル rewrite.config を作成します。次の書き換えルールを貼り付けます。
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]