1. やりたいこと
- Elastic BeanstalkのJavaプラットフォームでSpring Bootを動かすときにhttpsで接続する
2. 前提
- LBでhttpsリスナーを設定済み
- 以下のような通信経路
LB(443) <-> Nginx(80) <-> Spring Boot(5000)
3. やったこと
- application.propertiesに以下を設定する
- 89.3 Enable HTTPS When Running behind a Proxy Server
server.tomcat.remote-ip-header=x-forwarded-for
server.tomcat.protocol-header=x-forwarded-proto
- 環境変数の場合は以下のように設定する
SERVER_TOMCAT_REMOTE_IP_HEADER=x-forwarded-for
SERVER_TOMCAT_PROTOCOL_HEADER=x-forwarded-proto
-
server.tomcat.remote-ip-header
はリモートIPアドレスのためなので設定なくても動く - 以下のAWSマニュアルにヘッダーについて説明がある
- HTTP ヘッダーおよび クラシックロードバランサー
- Elastic Load Balancing の詳細
3.1. なにもしなかったら...
- リダイレクトのときにhttpになってしまう
- 認証後のページリダイレクトとか
- PRGしたページとか
4. おまけ
- httpsでアクセスすると
Set-Cookie
にSecure
が付いた - httpトラフィックをhttpsにリダイレクト
- ELB の Classic Load Balancer で HTTP トラフィックを HTTPS にリダイレクトする方法を教えてください。
- Application Load Balancer のリスナー
- [新機能]Webサーバでの実装不要!ALBだけでリダイレクト出来るようになりました!
おわり。