Movatterモバイル変換


[0]ホーム

URL:


Support for the Ruby 2.3 series has ended. Seehere for reference.

HomeClassesMethods

In Files

  • webrick.rb
  • webrick/accesslog.rb
  • webrick/cgi.rb
  • webrick/config.rb
  • webrick/cookie.rb
  • webrick/htmlutils.rb
  • webrick/httpauth.rb
  • webrick/httpauth/authenticator.rb
  • webrick/httpauth/basicauth.rb
  • webrick/httpauth/digestauth.rb
  • webrick/httpauth/htdigest.rb
  • webrick/httpauth/htgroup.rb
  • webrick/httpauth/htpasswd.rb
  • webrick/httpauth/userdb.rb
  • webrick/httpproxy.rb
  • webrick/httprequest.rb
  • webrick/httpresponse.rb
  • webrick/https.rb
  • webrick/httpserver.rb
  • webrick/httpservlet.rb
  • webrick/httpservlet/abstract.rb
  • webrick/httpservlet/cgihandler.rb
  • webrick/httpservlet/erbhandler.rb
  • webrick/httpservlet/filehandler.rb
  • webrick/httpservlet/prochandler.rb
  • webrick/httpstatus.rb
  • webrick/httputils.rb
  • webrick/httpversion.rb
  • webrick/log.rb
  • webrick/server.rb
  • webrick/ssl.rb
  • webrick/utils.rb
  • webrick/version.rb

Namespace

Class/Module Index[+]

Quicksearch
No matching classes.

WEBrick

WEB server toolkit.

WEBrick is an HTTP server toolkit that can beconfigured as an HTTPS server, a proxy server, and a virtual-host server.WEBrick features complete logging of both serveroperations and HTTP access.WEBrick supportsboth basic and digest authentication in addition to algorithms not in RFC2617.

AWEBrick server can be composed of multipleWEBrick servers or servlets to provide differingbehavior on a per-host or per-path basis.WEBrick includes servlets for handlingCGI scripts, ERB pages, Ruby blocks anddirectory listings.

WEBrick also includes tools for daemonizing aprocess and starting a process at a higher privilege level and droppingpermissions.

Starting an HTTP server

To create a newWEBrick::HTTPServerthat will listen to connections on port 8000 and serve documents from thecurrent user's public_html folder:

require'webrick'root =File.expand_path'~/public_html'server =WEBrick::HTTPServer.new:Port=>8000,:DocumentRoot=>root

To run the server you will need to provide a suitable shutdown hook asstarting the server blocks the current thread:

trap'INT'doserver.shutdownendserver.start

Custom Behavior

The easiest way to have a server perform custom operations is throughWEBrick::HTTPServer#mount_proc.The block given will be called with aWEBrick::HTTPRequest with request infoand aWEBrick::HTTPResponse whichmust be filled in appropriately:

server.mount_proc'/'do|req,res|res.body ='Hello, world!'end

Remember thatserver.mount_proc must precedeserver.start.

Servlets

Advanced custom behavior can be obtained through mounting a subclass ofWEBrick::HTTPServlet::AbstractServlet.Servlets provide more modularity when writing an HTTP server thanmount_proc allows. Here is a simple servlet:

classSimple<WEBrick::HTTPServlet::AbstractServletdefdo_GETrequest,responsestatus,content_type,body =do_stuff_withrequestresponse.status =200response['Content-Type'] ='text/plain'response.body ='Hello, World!'endend

To initialize the servlet you mount it on the server:

server.mount'/simple',Simple

SeeWEBrick::HTTPServlet::AbstractServletfor more details.

Virtual Hosts

A server can act as a virtual host for multiple host names. After creatingthe listening host, additional hosts that do not listen can be created andattached as virtual hosts:

server = WEBrick::HTTPServer.new # ...vhost = WEBrick::HTTPServer.new :ServerName => 'vhost.example',                                :DoNotListen => true, # ...vhost.mount '/', ...server.virtual_host vhost

If no:DocumentRoot is provided and no servlets or procs aremounted on the main server it will return 404 for all URLs.

HTTPS

To create an HTTPS server you only need to enable SSL and provide an SSLcertificate name:

require'webrick'require'webrick/https'cert_name = [%w[CN localhost],]server =WEBrick::HTTPServer.new(:Port=>8000,:SSLEnable=>true,:SSLCertName=>cert_name)

This will start the server with a self-generated self-signed certificate.The certificate will be changed every time the server is restarted.

To create a server with a pre-determined key and certificate you canprovide them:

require'webrick'require'webrick/https'require'openssl'cert =OpenSSL::X509::Certificate.newFile.read'/path/to/cert.pem'pkey =OpenSSL::PKey::RSA.newFile.read'/path/to/pkey.pem'server =WEBrick::HTTPServer.new(:Port=>8000,:SSLEnable=>true,:SSLCertificate=>cert,:SSLPrivateKey=>pkey)

Proxy Server

WEBrick can act as a proxy server:

require'webrick'require'webrick/httpproxy'proxy =WEBrick::HTTPProxyServer.new:Port=>8000trap'INT'doproxy.shutdownend

See WEBrick::HTTPProxy for further details including modifying proxiedresponses.

Basic and Digest authentication

WEBrick provides both Basic and Digestauthentication for regular and proxy servers. SeeWEBrick::HTTPAuth,WEBrick::HTTPAuth::BasicAuth andWEBrick::HTTPAuth::DigestAuth.

WEBrick as a Production Web Server

WEBrick can be run as a production server forsmall loads.

Daemonizing

To start aWEBrick server as a daemon simple runWEBrick::Daemon.startbefore starting the server.

Dropping Permissions

WEBrick can be started as one user to gainpermission to bind to port 80 or 443 for serving HTTP or HTTPS traffic thencan drop these permissions for regular operation. To listen on allinterfaces for HTTP traffic:

sockets =WEBrick::Utils.create_listenersnil,80

Then drop privileges:

WEBrick::Utils.su'www'

Then create a server that does not listen by default:

server = WEBrick::HTTPServer.new :DoNotListen => true, # ...

Then overwrite the listening sockets with the port 80 sockets:

server.listeners.replacesockets

Logging

WEBrick can separately log server operations andend-user access. For server operations:

log_file =File.open'/var/log/webrick.log','a+'log =WEBrick::Log.newlog_file

For user access logging:

access_log = [  [log_file,WEBrick::AccessLog::COMBINED_LOG_FORMAT],]server =WEBrick::HTTPServer.new:Logger=>log,:AccessLog=>access_log

SeeWEBrick::AccessLog for further logformats.

Log Rotation

To rotate logs inWEBrick on a HUP signal (likesyslogd can send), open the log file in 'a+' mode (as above) andtrap 'HUP' to reopen the log file:

trap 'HUP' do log_file.reopen '/path/to/webrick.log', 'a+'

Copyright

Author: IPR – Internet Programming with Ruby – writers

Copyright © 2000 TAKAHASHI Masayoshi, GOTOU YUUZOU Copyright © 2002Internet Programming with Ruby writers. All rights reserved.

Constants

VERSION

TheWEBrick version

This page was generated for Ruby 2.3.1

Generated with Ruby-doc Rdoc Generator 0.44.0.


[8]ページ先頭

©2009-2025 Movatter.jp