RamazeとHTTPS

Ramazeというか,その足回りであるWEBrickとかMongrelとかでどうやってhttps経由にするのかなぁと.起動時オプションにSSLを指定するものもないし.

Apache(SSL) Proxy + Mongrelのポイント
Railsではどうするのかと探したらApacheをProxyとして動作させるのが普通らしい?ということでこの記事を参考にほげほげ.環境はDebian

  • mod_proxy(mods-enabled/proxy.conf)

DebianApacheは最初からほとんどのアクセスが禁止されていて,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用のサイト設定(sites-enabled/sslとか)

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でずらしてもいいけど綺麗じゃない).