HTTPSオンリーのRailsのアプリ(Redminなど)でApacheをリバースプロキシにした場合、リダイレクトがHTTPになってしまう。。。
これを対処するにはRequestHeaderディレクティブでApacheからバックエンドのアプリケーションサーバへのX_FORWARDED_PROTOヘッダを付与させるようにする。
Apacheの場合
RequestHeader set X_FORWARDED_PROTO 'https'
設定例)
ApacheでRedminのリバースプロキシHTTPSオンリーにする
<VirtualHost *:443>
# SSL の細かい設定(^^;
RequestHeader set X_FORWARDED_PROTO 'https'
ProxyPass /rails http://localhost:3000/rails
ProxyPassReverse /rails http://localhost:3000/rails
</VirtualHost>
参考
http://webos-goodies.jp/archives/51261261.html
Nginxの場合
proxy_set_header X-Forwarded-Proto https;
設定例)
upstream backend {
server unix:/data/apps/current/tmp/sockets/unicorn.sock max_fails=3 fail_timeout=10s;
}
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
if (!-f $request_filename) { proxy_pass http://backend; }
}