RamazeとHTTPS
Ramazeというか,その足回りであるWEBrickとかMongrelとかでどうやってhttps経由にするのかなぁと.起動時オプションにSSLを指定するものもないし.
Apache(SSL) Proxy + Mongrelのポイント
Railsではどうするのかと探したらApacheをProxyとして動作させるのが普通らしい?ということでこの記事を参考にほげほげ.環境はDebian.
- mod_proxy(mods-enabled/proxy.conf)
DebianのApacheは最初からほとんどのアクセスが禁止されていて,mod_proxyも例外ではないのでアクセス出来るようにする(2くらいからか?).
<Proxy *>
AddDefaultCharset off
Order deny,allow
Deny from all
Allow from all # 追加
</Proxy>
じゃないと以下のエラーが出る.
client denied by server configuration: proxy:http://127.0.0.1:7000/
- mod_proxy_http
mod_proxyはproxyを使えるようにするだけで,httpなどの各種プロトコルについては別途モジュールを使えるようにする必要があるので,利用可能にする.
$ sudo a2enmod proxy_http
じゃないと以下のエラーが出る.
proxy: No protocol handler was valid for the URL /. 〜
- mod_headers
RequestHeaderを使うために利用可能にする.
$ sudo a2enmod headers
SSLのみでアクセスしたいのでVirtualHost内にでも記述する.
<Location />
RequestHeader set X_FORWARDED_PROTO 'https'
ProxyPass http://127.0.0.1:7000/
ProxyPassReverse http://127.0.0.1:7000/
</Location>
とりあえずこれで動いた.Ramazeのバージョンが2008.06だとprefixオプションが使えないので,Locationが/になってるのがどうもなぁと(mapでずらしてもいいけど綺麗じゃない).