基本機能の実装にチャレンジ!
自分用のWebサーバーを作ろう!
「第1回:WEBrickを使ってみよう!」では、WEBrickに標準添付されている、HTTPServerクラスを使いHTTPサーバーを構築しました。しかし、これだけではApacheなど既存のHTTPサーバーとほとんど同じです。
WEBrickの特徴は自分でHTTPサーバーを作れるところにあります。今回は、HTTPサーバーの基本的な機能を実装して自分用のWebサーバーを作ってみましょう。
なお、今回作成するサンプルファイルは、こちらからダウンロードできますので、参照しながら自分で試してみてください(8.98 KB)。
ただしサンプルには、インジェクションやクロスサイトスクリプティングなどの脆弱(ぜいじゃく)性が含まれるものがあります。これらを実行するときには、ファイアーウォール機能などを使い第三者が利用できない環境で使うことを強くおすすめします。
URL以下の切り替え
WEBrickには、パスごとにHandlerを切り替える「マウント機能」と呼ばれる機能があります。
現在はルートパス以下がpublic_htmlに割り当てられています。通常であれば/textパスはpublic_html/textディレクトリに割り当てられます。これをマウント機能によって/textパスを/public_textディレクトリに割り当てるようにしてみます。コードは、httpserver2.rbを参照してください。以下を実行します。
$ mkdir public_text $ echo "Sample text" > public_text/sample.txt $ ruby httpserver2.rb
通常HTTPサーバーは、/text以下にアクセスがあると、WEBrick::HTTPServlet::FileHandlerが呼び出され、ファイルを取得し返します。デフォルトのFileHandlerでは、HTTPServerのDocumentRootで指定した値からファイルを取得します。
しかし、マウントを指定することで、public_textディレクトリに割り当てられたFileHandlerがファイルを取得するようになります。
Webブラウザで、http://localhost:8000/sample.txtを開いてみると、Sample textと表示されるのが確認できると思います(図1)。
次は機能を追加してみましょう。