レスポンスがhttpとhttpsが混在する

事象

HTTPSでアクセスさせるサイトがある。
しかし、何故かレスポンスがhttpsになる場合とhttpの場合が混在する。

原因

以下の複合要因で発生していた。

  • ALBはhttps → httpに変換を行っているが、その際X-Forwarded-Protoも併せて付与する。

docs.aws.amazon.com

  • TomcatのRemoteIpValveがX-Forwarded-Protoに反応して、http → httpsに変換する。

tomcat.apache.org

対応方法

今回は何か困っているという訳では無かったので対応はしていない。(※1)

  • 全てのアクセスをALB経由にする様に調整する(※2)
  • RemoteIpValveの定義を削除する

※1 それにより動いてたところが動かなくなることを嫌ったため
※2 機械的には簡単であるが、転送ページとか用意しても限界あるので