class WEBrick::HTTPServer

要約

HTTP サーバの機能を提供するクラスです。

以下は HTTP サーバとしてちゃんと動作する例です。

require 'webrick'
srv = WEBrick::HTTPServer.new({:DocumentRoot => '/home/username/public_html/',
                               :BindAddress => '127.0.0.1',
                               :Port => 10080})
srv.mount('/hoge.pl', WEBrick::HTTPServlet::CGIHandler, 'really_executed_script.rb')
Signal.trap(:INT){ srv.shutdown }
srv.start

目次

特異メソッド
インスタンスメソッド

継承しているメソッド

WEBrick::GenericServerから継承しているメソッド

特異メソッド

new(config = {}, default = WEBrick::Config::HTTP) -> WEBrick::HTTPServer[permalink][rdoc]

HTTPServer オブジェクトを生成して返します。

[PARAM] config:
設定を保存したハッシュを指定します。有効なキー(Symbol オブジェクト)と値は以下のとおりです。
:RequestTimeout

どれだけの時間 クライアントからの入力を待つかを整数か Float で指定します。単位は秒です。

:HTTPVersion

使用する HTTP のバージョンです。WEBrick::HTTPVersion オブジェクトで指定します。デフォルトは 1.1 です。

:AccessLog

アクセスログの出力先とフォーマットを [[io, format], [io, format], ...] のような配列で指定します。io は IO オブジェクトです。format は文字列です。デフォルトではフォーマットの形式は Apache のそれに準拠し標準エラー出力に出力します。 http://httpd.apache.org/docs/mod/mod_log_config.html#formats WEBrick::AccessLog::COMMON_LOG_FORMAT WEBrick::AccessLog::REFERER_LOG_FORMAT も参照して下さい。

:MimeTypes

拡張子と mime-type との対応をハッシュで指定します。デフォルトは WEBrick::HTTPUtils::DefaultMimeTypes です。

:DirectoryIndex

ディレクトリのインデックスとなるファイル名を配列で指定します。

:DocumentRoot

サーバ上のルートディレクトリに対応させる、ローカルのファイルシステムのディレクトリを文字列で指定します。

:DocumentRootOptions

ルートディレクトリの処理を担当する WEBrick::HTTPServlet::FileHandler のコンストラクタに渡されるオプションをハッシュで指定します。デフォルトは { :FancyIndexing => true } ですので、ディレクトリにアクセスするとディレクトリの内容を適当な形式で表示します。

:RequestCallback

クライアントからのリクエストを受け付けた時に呼ばれる Proc オブジェクトを指定します。callback.call(req, res) のように WEBrick::HTTPRequest オブジェクトと WEBrick::HTTPResponse オブジェクトを引数として呼ばれます。

:ServerAlias

サーバのホスト名の別名を文字列の配列で指定します。

:CGIInterpreter

CGI を実行するインタプリタを文字列で指定します。

:CGIPathEnv

CGI に渡される PATH 環境変数を文字列で指定します。

:Escape8bitURI

この値が true の場合、クライアントからのリクエスト URI に含まれる 8bit 目が立った文字をエスケープします。デフォルトは false です。

[PARAM] default:
config で指定されなかった場合のデフォルトの設定を保存したハッシュを指定します。

インスタンスメソッド

mount(dir, servlet, *options) -> ()[permalink][rdoc]

サーバ上のディレクトリ dir にサーブレット servlet を対応させます。

[PARAM] dir:
ディレクトリをあらわす文字列を指定します。
[PARAM] servlet:
WEBrick::HTTPServlet::AbstractServlet のサブクラスのインスタンスを指定します。
[PARAM] options:
サーブレットのコンストラクタの引数を指定します。
require 'webrick'
include WEBrick
srv = HTTPServer.new( { :BindAddress => '127.0.0.1', :Port => 10080 } )
srv.mount('/img', WEBrick::HTTPServlet::FileHandler, '/home/username/images')
mount_proc(dir, proc) -> ()[permalink][rdoc]
mount_proc(dir) {|req, res| ...} -> ()

サーバ上のディレクトリ dir にリクエストを処理する Proc オブジェクト proc を対応させます。

[PARAM] dir:
ディレクトリをあらわす文字列を指定します。
[PARAM] proc:
リクエストを処理する Proc オブジェクトを指定します。 WEBrick::HTTPResponse オブジェクトと WEBrick::HTTPRequest オブジェクトを引数として proc.call(request, response) の引数の順で呼び出されます。
[EXCEPTION] WEBrick::HTTPServerError:
proc も指定されずブロックも与えられない場合に発生します。
unmount(dir) -> ()[permalink][rdoc]
umount(dir) -> ()

サーバ上のディレクトリ dir とサーブレットとの対応を解消します。

[PARAM] dir:
対応を解消するディレクトリを指定します。
srv.mount('/img')
virtual_host(server) -> ()[permalink][rdoc]

サーバの保持しているバーチャルホストのリストに HTTP サーバ server を加えます。クライアントからのリクエストのうち server へのものは server に委譲されるようになります。

[PARAM] server:
バーチャルホストを表す WEBrick::HTTPServer オブジェクトを指定します。
require 'webrick'
include WEBrick
srv1 = HTTPServer.new( { :Port => 1080, :ServerName => 'hoge.example.com' } )
srv2 = HTTPServer.new( { :Port => 1080, :ServerName => 'foo.example.com' } )

srv  = HTTPServer.new( { :Port => 1080 } )
srv.virtual_host(srv1)
srv.virtual_host(srv2)
srv.start