RC-HTTPD(8) RC-HTTPD(8)
NAME
rc-httpd - HTTP server
SYNOPSIS
rc-httpd/rc-httpd
DESCRIPTION
Rc-httpd serves the requested file or an index of files
found under a website's root directory, or, in the case of
CGI, executes a specified CGI program.
CONFIGURATION
As all pieces of rc-httpd are shell scripts, configuration
is achieved by setting variables and adding, removing or
modifying commands in various files.
rc-httpd
rc_httpd_dir must be set to the root of the rc-httpd instal-
lation, the directory containing the rc-httpd script.
path must include rc_httpd_dir/handlers ahead of the base
system's path elements.
cgi_path is substituted for path when cgi scripts are run.
(Be sure to set path back in rc-based cgi scripts.)
extra_headers is an optional list of strings to emit when
sending http headers.
SERVER_PORT is the port HTTP is to be served on.
select-handler
PATH_INFO is the location relative to the website's root
directory of the file to be displayed. Typically, the
location from the incoming request is honored.
FS_ROOT sets the root directory of the website.
NOINDEXFILE instructs the dir-index module not to look for
index.html files, otherwise if an index.html file is found
dir-index will exec serve-static to serve the file. At pre-
sent there is no module to serve an index file but not a
directory.
If you do not want directory indexing at all, replace
static-or-index with serve-static, which will report 503
forbidden for directories.
Page 1 Plan 9 (printed 10/30/25)
RC-HTTPD(8) RC-HTTPD(8)
Multiple virtual hosts may be configured by creating condi-
tional statements that act upon the SERVER_NAME variable.
Fine-grained control of specific request strings may be con-
figured via a similar method acting upon the location and/or
other variables.
EXAMPLES
The following examples demonstrate possible ways to config-
ure select-handler.
Serve static files:
if(~ $SERVER_NAME 9front.org){
PATH_INFO=$location
FS_ROOT=/usr/sl/www/$SERVER_NAME
exec static-or-index
}
CGI:
if(~ $SERVER_NAME *cat-v.org){
PATH_INFO=$location
FS_ROOT=/usr/sl/www/werc/sites/$SERVER_NAME
exec static-or-cgi /usr/sl/www/werc/bin/werc.rc
}
Custom error message for a denied URL:
fn do_error{
do_log $1
echo 'HTTP/1.1 '^$1^$cr
emit_extra_headers
echo 'Content-type: text/html'^$cr
echo $cr
echo '<html>
<head>
<title>'^$1^'</title>
</head>
<body>
<h1>'^$1^'</h1>'
echo $2
echo '<p><i>rc-httpd at' $SERVER_NAME '</i>'
echo '
</body>
</html>
'
}
if(~ $location /v8.tar.bz2){
do_error '27b/6'
exit
}
STARTUP
Rc-httpd is run from a file in the directory scanned by
listen(8), or called as an argument to aux/listen1. The
Page 2 Plan 9 (printed 10/30/25)
RC-HTTPD(8) RC-HTTPD(8)
program's standard error may be captured to a log file:
exec /rc/bin/rc-httpd/rc-httpd >>[2]/sys/log/www
FILES
/rc/bin/rc-httpd/rc-httpd
/rc/bin/rc-httpd/select-handler
/rc/bin/rc-httpd/handlers/cgi
/rc/bin/rc-httpd/handlers/dir-index
/rc/bin/rc-httpd/handlers/error
/rc/bin/rc-httpd/handlers/redirect
/rc/bin/rc-httpd/handlers/serve-static
/rc/bin/rc-httpd/handlers/static-or-cgi
/rc/bin/rc-httpd/handlers/static-or-index
/rc/bin/service/tcp80
/sys/log/www
SOURCE
/rc/bin/rc-httpd
SEE ALSO
rc(1), listen(8)
HISTORY
Rc-httpd first appeared in 9front (February, 2013).
Page 3 Plan 9 (printed 10/30/25)