どうも中田です。
また出ました。赤い画面。
日々いろんなサイトを見てますが、この画面を一番見てるんじゃないかって。
いっそのこと、このデザインで画面作ったら面白そうですね。
railsエンジニアは拒否反応を持ちつつサイトに訪れていただけることでしょう。
本題
さて、Railsの本番環境でこんなエラーが出ましたー。
ということでその解決策のお話。
今回のエラーは下記内容でした
HTTP Origin header (https://www.xxx.jp) didn't match request.base_url (http://www.xxx.jp)
プロトコルが違っちゃってますね
スキーマ違いでクロスサイトと判別されてるんすね
ちなみに、本番環境はAWSを使っていて
[ELB] -> [EC2(nginx -> rails)] -> [RDS]
って感じになってます。
ELBがSSL終端にしてるので、nginxにはHTTPでしか来ません。
なので…
解決方法
nginxの設定追加しました
location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #これ追加 proxy_set_header X-Forwarded-Proto https; #これ追加 proxy_pass http://www.xxxx.com; }
多分、X-Forwarded-Proto
の追加だけでいいけど、クライアントIPもわかった方がいいだろうって感じで X-Forwarded-For
も入れてます。