Apache-(http)-ALB-(http)-ECS(rails)の多段構成のときに、X-Forwared-Protoヘッダを設定していても、HTTP Origin header didn't match request.base_url と言われる
諸事情で多段構成の場合
client-(https)-Apache-(http)-ALB-(http)-ECS(rails) httpsからhttpへプロキシする場合、よくあるX-Forwared-Protoヘッダを設定する方法だとPOSTが失敗してしまう
途中のALBがX-Forwared-Protoヘッダを上書きして、httpがセットされてしまうため ELBが付与するものとして、X-Forwarded-for(ELBにリクエストを発行したホストのIPアドレス)、X-Forwarded-Proto(接続元からのリクエストを受け付けたELBのプロトコル)、X-Forwarded-Port(同ポート)、あとはHostヘッダ(これはリクエスト元からキャリーオーバーされているもの)あたりです。
railsだとX-Forwared-Proto以外に以下のXヘッダを見てsslか判定してくれるので、 X_FORWARDED_SSL = on
X_FORWARDED_SCHEME
apache側で設定したら動いた
code: ssl.conf
<VirtualHost *.443>
(省略)
RequestHeader set X_FORWARDED_SSL 'on'
(省略)
</VirtualHost>
CloudFront - ALB - EC2の構成が参考になった
CloudFrontの場合、CloudFront-Forwarded-Protoという独自ヘッダがつけられる