0

私はElastic Beanstalk経由でSpring Bootアプリケーションをデプロイしました。私はロードバランサを使用していますので、これは(私が理解する限り)フローです:Spring Boot&ELB - httpをhttpsにリダイレクトするロードバランサを作成するにはどうすればよいですか?

インターネット/ブラウザリクエスト--- HTTPS --->ロードバランサ--- HTTP ---> Spring Boot Appサーバー

本質的に、SSLはロードバランサで終了し、アプリケーションサーバーは単純な古いHTTPを処理します。

ブラウザからのHTTPリクエストの場合、ロードバランサが自動的にHTTPSにリダイレクトされるようにしたいと思います。

この問題に関するいくつかの質問があります。
Spring Boot with Embedded Tomcat behind AWS ELB - HTTPS redirect
How to redirect automatically to https with Spring Boot
Spring Boot redirect HTTP to HTTPS

しかし、これらの質問に対する答えのどれも私には意味をなさないが。多分私は誤解しているかもしれませんが、すべての回答は基本的にSpringブートアプリケーションだけをサーバーのHTTPSリクエストにします(例えばhttp.requiresChannel().anyRequest().requiresSecure()を使用している場合)。

しかし、ロードバランサで終端するSSLとHTTPだけを処理するSpring Bootアプリケーションサーバーでは問題ないので、これは流れに反しています。ですから、私が春の起動レベルでSSLを要求しているのであれば、エンドツーエンドのSSL接続を行う必要があります。これは私のアプリケーションには本当に必要ではありません。

私はどちらか助けていないようだ次のプロパティも使用している:私はこれが重複している場合、この問題はすでに解決されていると私は謝罪確信しているが、私はできません

server.tomcat.remote-ip-header=x-forwarded-for 
server.tomcat.protocol-header=x-forwarded-proto 

をこれを理解しているようです。

何か助けていただきありがとうございます。ありがとう!

答えて

0

AWSロードバランサはリダイレクトを送信できません。それは彼らが持っている機能ではありません。サーバー側のx-forwarded-protoヘッダーを確認し、httpsの代わりにがhttpの場合はリダイレクトを返す必要があります。

0

AWSロードバランサはリダイレクトを処理できません。サーバー経由で、またはクラウドフロントディストリビューションを使用して行うことができます。

1

このarticleの助けを借りて、私はELB環境でSpringブートアプリケーションのためにこれをどうやって行うのかをついに知ることができました。

私はsrc/main/webapp/.ebextensions/nginx/conf.dにconfファイルを作成しなければなりませんでした。私はそれをmyconf.confと呼んでいます。 myconf.conf

、私はこのコードを置く:

また
server { 
    listen 80; 
    server_name www.my-site.com; 
    if ($http_x_forwarded_proto != "https") { 
     rewrite ^(.*)$ https://$server_name$REQUEST_URI permanent; 
    } 
} 

、HTTPとHTTPSの両方のリスナーは、ロードバランサのために開いていることを確認してください。
また、ロードバランサはすでにSSLを終了しているため、私の春の起動アプリケーションはHTTPのみを開きます。

関連する問題