RailsでHTTP Origin header didn’t match request.base_url errorの解決

概要

Railsを本番環境にデプロイしたら、以下のエラーが発生。

HTTP Origin header didn’t match request.base_url

原因

リバースプロキシに使用していたNginxの設定にミスがあった。

解決策

nginxの設定を以下のようにする。

server {
    listen       unix:/var/run/app.sock;
    server_name  app-name.com;

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Client-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Proto $scheme; # 他のブログなどでこの行が必要と書いてある
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X_FORWARDED_SSL on; # この行が必要だった
    proxy_set_header X-Forwarded-Server $host;

    location / {
        proxy_pass http://web:3000/;
    }
}

他のブログでは proxy_set_header X-Forwarded-Proto $scheme;が必要だと書いてあったが、 proxy_set_header X_FORWARDED_SSL on; の行も必要だった。

Comments

タイトルとURLをコピーしました