httpd man page on Plan9

Man page or keyword search:  
man Server   549 pages
apropos Keyword Search (all sections)
Output format
Plan9 logo
[printable version]

HTTPD(8)							      HTTPD(8)

       httpd, save, imagemap, man2html, webls - HTTP server

       ip/httpd/httpd  [-a  srvaddr]  [-c cert [-C certchain]] [-d domain] [-n
       namespace] [-w webroot]

       ip/httpd/save [-b inbuf] [-d domain] [-r	 remoteip]  [-w	 webroot]  [-N
       netdir] method version uri [search]
       ip/httpd/imagemap ...
       ip/httpd/man2html ...
       ip/httpd/webls ...

       Httpd  serves  the  webroot  directory  of the file system described by
       namespace (default /lib/namespace.httpd), using version 1.1 of the HTTP
       protocol.   It  announces the service srvaddr (default tcp!*!http), and
       listens for incoming calls.  If an X.509 certificate is	supplied  with
       the  -c	option, then the service is instead tcp!*!https.  There should
       already be a factotum holding the corresponding private	key.   If  the
       specified  certificate  has been signed by a certificate authority, the
       -C option may be used to specify a file containing a  chain  of	signed

       Httpd supports only the GET and HEAD methods of the HTTP protocol; some
       magic programs support POST as well.  Persistent connections  are  sup‐
       ported  for  HTTP/1.1  or  later clients; all connections close after a
       magic  command  is  executed.   The  Content-type   (default   applica‐
       tion/octet-stream)  and Content-encoding (default binary) of a file are
       determined by looking for suffixes of the file name  in	/sys/lib/mime‐

       Each  requested	URI  is	 looked	 up  in a redirection table, read from
       /sys/lib/httpd.rewrite.	Fields are separated by spaces and tabs.  Any‐
       thing  following	 a is ignored.	The first field of each line is a URI;
       the second a replacement path.  If a prefix of the URI matches a	 redi‐
       rection	path, the URI is rewritten using the corresponding replacement
       path instead of the prefix, and a temporary redirect  is	 sent  to  the
       HTTP  client.   If the replacement path does not specify a server name,
       and the request has no explicit host, then domain is the host name used
       in  the	redirection.   The  prefix  can	 either	 be a domain root like
       http://system/ (which matches that URL only) or a  path	like  /who/rob
       (which  matches that path no matter what the requested server), but not
       both: http://system/who/rob will never match a request.	If  the	 first
       field ends in a slash, this is an exact match; otherwise it is a prefix
       match.  The first field is a literal string, matched against each  file
       prefix  of  each	 URL.  The most specific, i.e., longest, pattern wins,
       and is applied once (there is no rescanning), except for the  following
       exceptions.  Httpd matches only the prefix and not subordinate pages if
       a replacement is prefixed with Httpd omits the unmatched	 part  of  the
       original URI from the rewritten URI if the replacement is prefixed with
       This permits many-to-one mappings; for example, to send all  references
       to an old subtree to a single error page.

       Httpd  handles  replacements  prefixed  with  internally,  treating the
       request as if it were for the  replacement  (without  the  @)  but  not
       informing  the client of the rewritten name.  Replacement URLs prefixed
       with generate a permanent  redirection  instead	of  a  temporary  one.
       Httpd checks to see if this file has changed once every 50 new TCP con‐
       nections.  HTTP 1.1 persistent connection implies many pages  may  come
       in one browser connection, so to kick-start httpd, try

	      for(i in `{seq 50}) hget >/dev/null

   Access Control
       Before  opening	any file, httpd looks for a file in the same directory
       called .httplogin.  If the file exists,	the  directory	is  considered
       locked  and the client must specify a user name and password matching a
       pair in the file.  .httplogin contains a list of space or newline sepa‐
       rated tokens, each possibly delimited by single quotes.	The first is a
       domain name presented to the HTTP client.  The rest are pairs  of  user
       name  and  password.   Thus, there can be many user name/password pairs
       valid for a directory.

   Auxiliaries (magic)
       If the requested URI begins with	 /magic/server/,  httpd	 executes  the
       file  /bin/ip/httpd/server  to  finish  servicing the request.  All the
       auxiliaries take the same arguments.   Method  and  version  are	 those
       received	 on  the first line of the request.  Uri is the remaining por‐
       tion of the requested URI.  Inbuf contains the rest of the  bytes  read
       by  the server, and netdir is the network directory for the connection.
       There are routines for processing command arguments,  parsing  headers,
       etc.  in	 the  httpd library, /sys/src/cmd/ip/httpd/libhttpd.a.$O.  See
       httpd.h in that directory and existing magic commands for more details.

       Save writes a line to /usr/web/save/ and returns	 the  contents
       of  /usr/web/save/uri.html.   Both  files  must	be  accessible for the
       request to succeed.  The saved  line  includes  the  current  time  and
       either  the  search  string from a HEAD or GET or the first line of the
       body from a POST.  It is used to record form submissions.

       Imagemap processes an HTML imagemap  query.   It	 looks	up  the	 point
       search in the image map file given by uri, and returns a redirection to
       the appropriate page.  The map  file  defaults  to  NCSA	 format.   Any
       entries	after  a  line starting with the word #cern are interpreted in
       CERN format.

       Man2html converts man(6) format manual pages into  html.	  It  includes
       some abilities to search the manuals.

       Webls  produces directory listings on the fly, with output in the style
       of ls(1).   /sys/lib/webls.allowed  and	/sys/lib/webls.denied  contain
       regular	expressions describing what parts of httpd's namespace may and
       may not be listed, respectively.	 Webls.denied is first searched to see
       if  access  is by default denied.  If so webls.allowed is then searched
       to see if access is explicitly allowed.	Thus one can have very general
       expressions  in	the denied list (like .*), yet still allow exceptions.
       If webls.denied does not exist  or  is  unreadable,  all	 accesses  are
       assumed to be denied unless explicitly allowed in webls.allowed.

       Other  sites  will  note that if neither webls.denied nor webls.allowed
       exist, any portion of httpd's namespace can be listed  (however,	 webls
       will  always  endeavor  to  prevent  listing  of	 `.'  and  `..').   If
       webls.allowed exists but webls.denied does not,	any  directory	to  be
       listed  must  be	 described  by	a regular expression in webls.allowed.
       Similarly, if webls.denied  exists  but	webls.allowed  does  not,  any
       directory to be listed must not be described by a regular expression in
       webls.denied.  If both exist, a directory  is  listable	if  either  it
       doesn't	appear in webls.denied, or it appears in both webls.denied and
       webls.allowed.  In other words, webls.allowed  overrides	 webls.denied.
       If  a  listing  for  a  directory is requested and access is denied, or
       another error occurs, a simple error page is returned.

       These are all examples of how to use httpd.rewrite.

       A local redirection:
	      /netlib/c++/idioms/index.html.Z /netlib/c++/idioms/index.html

       Redirection to another site:
	      /netlib/lapack/lawns	    =  =

       Root directory for virtual host:      /cm/cs/what/ampl

	      content type description file

	      default namespace file for httpd

	      redirection file

	      regular expressions describing  explicitly  listable  pathnames;
	      overrides webls.denied

	      regular expressions describing explicitly unlistable pathnames


       newns in auth(2), listen(8), rsa(8)

                             _         _         _ 
                            | |       | |       | |     
                            | |       | |       | |     
                         __ | | __ __ | | __ __ | | __  
                         \ \| |/ / \ \| |/ / \ \| |/ /  
                          \ \ / /   \ \ / /   \ \ / /   
                           \   /     \   /     \   /    
                            \_/       \_/       \_/ 
More information is available in HTML format for server Plan9

List of man pages available for Plan9

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
Vote for polarhome
Free Shell Accounts :: the biggest list on the net