WARN: HTTP Origin header (https://xxxx) didn't match request.base_url (http://xxxx)
What
サイトをSSL化した際、GETメソッドは通るものの、CREATE, UPDATE, DELETEメソッドでエラーが発生しました。
Solution
log/production.logを確認します。
WARN -- : HTTP Origin header (https://xxxx) didn't match request.base_url (http://xxxx) INFO -- : Completed 422 Unprocessable Entity in 0ms (ActiveRecord: 0.0ms) ... ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken): ... FATAL -- : actionpack (5.2.4.1) lib/action_controller/metal/request_forgery_protection.rb:211:in `handle_unverified_request'
GETメソッド以外では、メソッド実行後にリダイレクトします。おそらく、Railsのデフォルトの設定で、リダイレクト時にhttpを返してしまうため、エラーが起きているのだと考えられます。
以下を追記すると、解決します。
proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-Port 443;
または、以下でも大丈夫です。
proxy_set_header X-Forwarded-Proto $scheme;
AWSのELBを使用している場合は、また話が変わってくるそうです。
http://docs.docker.jp/registry/recipes/nginx.html