4 Web Servers
A Web server is a unit with the web-server^ signature. The most common way to construct one is to provide a web-config^ unit to the
web-server@ unit. The most common way to construct a web-config^ unit is to use configuration-table->web-config@ to produce
one from a configuration table file, such as the one that is shipped with Racket in default-configuration-table-path.
4.1 Server Units
Runs the server and returns a procedure that shuts down the server.
Serves a single connection represented by the ports ip and
Uses the web-config^
to construct a dispatcher/c
function that sets up one virtual host dispatcher, for each virtual
host in the web-config^
, that sequences the following
Logs the incoming request with the given format to the given file
Performs HTTP Basic Authentication with the given password file
Allows the "/conf/refresh-passwords" URL to refresh the password file.
Allows the "/conf/collect-garbage" URL to call the garbage collector.
Allows the "/conf/refresh-servlets" URL to refresh the servlets cache.
Execute servlets in the mapping URLs to the given servlet root directory under htdocs.
Serves files under the "/" URL in the given htdocs directory.
Using this dispatcher/c
, it loads a dispatching server that provides serve
functions that operate as expected.
4.2 Configuration Units
Provides contains the following identifiers.
Contains the configuration of individual virtual hosts.
Specifies the initial timeout given to a connection.
Specifies the port to serve HTTP on.
as a configuration-table and constructs a web-config^
4.3 Configuration Table
This module provides functions for
reading, writing, parsing, and printing configuration-table
The default configuration table S-expression file.
| (max-waiting ,exact-integer?)|
| (initial-connection-timeout ,integer?)|
| (list ,symbol? ,host-table-sexpr?)|
where a host-table-sexpr is:
| (default-indices ,string? ...)|
| (log-format ,symbol?)|
| (servlet-message ,path-string?)|
| (authentication-message ,path-string?)|
| (servlets-refreshed ,path-string?)|
| (passwords-refreshed ,path-string?)|
| (file-not-found-message ,path-string?)|
| (protocol-message ,path-string?)|
| (collect-garbage ,path-string?))|
| (default-servlet-timeout ,integer?)|
| (password-connection-timeout ,integer?)|
| (servlet-connection-timeout ,integer?)|
| (file-per-byte-connection-timeout ,integer?)|
| (file-base-connection-timeout ,integer))|
| (configuration-root ,path-string?)|
| (host-root ,path-string?)|
| (log-file-path ,path-string?)|
| (file-root ,path-string?)|
| (servlet-root ,path-string?)|
| (mime-types ,path-string?)|
| (password-authentication ,path-string?)))|
In this syntax, the 'messages paths are relative to the
'configuration-root directory. All the paths in
'paths except for 'servlet-root are relative to
'host-root (other than 'host-root obviously.)
The 'servlet-root path is relative to 'file-root.
Note: You almost always want to leave everything in the 'paths section the default except the 'host-root.
4.4 Configuration Table Structure
This module provides the following structures that
represent a standard configuration (see Server Units
) of the Web Server .
The contracts on this structure influence the valid types of values in
the configuration table S-expression file format described in
4.5 Standard Responders
This module provides some functions that help constructing HTTP responders.
These functions are used by the default dispatcher constructor (see Server Units
turn the paths given in the configuration-table
into responders for the associated circumstance.
Generates a response?
with the given http-code
as the corresponding fields; with the content of the text-file
as the body; and, with
s as, you guessed it, headers.
This does not cause redirects to a well-known URL, such as "conf/not-found.html"
, but rather use the contents
(for example) as its contents. Therefore, any relative URLs in text-file
to whatever URL file-response
is used to respond to
. Thus, you should probably use absolute URLs in these files.
Gives exn to the current-error-handler and response with a stack trace and a "Servlet didn’t load" message.
Returns a function that generates a standard "Servlet not found." error with content from file.
Gives exn to the current-error-handler and response with a stack trace and a "Servlet error" message.
Prints the exn
to standard output and responds with a "Servlet error." message with content from file
Returns a function that generates a standard "Servlet cache refreshed." message with content from file.
Returns a function that generates a standard "Passwords refreshed." message with content from file.
Returns a function that generates an authentication failure error with content from file
as the HTTP header.
Returns a function that generates a "Malformed request" error with content from file.
Returns a function that generates a standard "File not found" error with content from file.
Returns a function that generates a standard "Garbage collection run" message with content from file.