336 lines · 7.9 KB · Text
RawDownload
.TH HTTPD 8.SH NAMEhttpd, save, imagemap, man2html, webls \- HTTP server.SH SYNOPSIS.B ip/httpd/httpd.RB [ -a.IR srvaddr ].RB [ -c.I cert.RB [ -C.IR certchain ]].RB [ -d.IR domain ].RB [ -n.IR namespace ].RB [ -w.IR webroot ].PP.B ip/httpd/save.RB [ -b.IR inbuf ].RB [ -d.IR domain ].RB [ -r.IR remoteip ].RB [ -w.IR webroot ].RB [ -N.IR netdir ].I method version uri.RI [ search ].br.B ip/httpd/imagemap.I ....br.B ip/httpd/man2html.I ....br.B ip/httpd/webls.I ....SH DESCRIPTION.I Httpdserves the.I webrootdirectory of the file system described by.I namespace(default.BR /lib/namespace.httpd ),using version 1.1 of the HTTP protocol.It announces the service.I srvaddr(default.BR tcp!*!http ),and listens for incoming calls.If an X.509 certificate is supplied with the.B -coption, then the service is instead.BR tcp!*!https .There should already be a factotumholding the corresponding private key.If the specified certificate has been signedby a certificate authority, the.B -Coption may be used to specify a filecontaining a chain of signed certificates..PP.I Httpdsupports only the GET and HEAD methods of the HTTP protocol;some magic programs support POST as well.Persistent connections are supported for HTTP/1.1 or later clients;all connections close after a magic command is executed.The Content-type(default.BR application/octet-stream )and Content-encoding(default.BR binary )of a file are determined by looking for suffixes of the file name in.BR /sys/lib/mimetype ..SS Redirection.PPEach requested URI is looked up in a redirection table, read from.BR /sys/lib/httpd.rewrite .Fields are separated by spaces and tabs.Anything following a.L #is ignored.The first field of each line is a URI;the second a replacement path.If a prefix of the URI matches a redirection path,the URI is rewritten using the corresponding replacement pathinstead 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.I domainis the host name used in the redirection.The prefix can either be a domain root like.B http://system/(which matches that URL only)or a path like.B /who/rob(which matches that path no matter whatthe requested server),but not both:.B http://system/who/robwill 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 againsteach 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..I Httpdmatches only the prefix and not subordinate pagesif a replacement is prefixed with .LR > ..I Httpdomits the unmatched part of the original URIfrom the rewritten URI if the replacement is prefixed with .LR * .This permits many-to-one mappings; for example,to send all references to an old subtree to a single error page..PP.I Httpdhandles replacements prefixed with .L @ internally,treating the request as if it were for the replacement(without the.BR @ )but not informing the client of the rewritten name.Replacement URLs prefixed with .L =generate a permanent redirection instead of a temporary one..I Httpdchecks to see if this file has changed once every 50 new TCP connections.HTTP 1.1 persistent connection implies many pagesmay come in one browser connection, so to kick-start.IR httpd ,try.IP.EXfor(i in `{seq 50}) hget http://www.your-domain.com/ >/dev/null.EE.SS "Access Control".PPBefore opening any file,.I httpdlooks for a file in the same directory called.BR .httplogin .If the file exists, the directory is consideredlocked and the client must specify a user nameand password matching a pair in the file..B .httplogincontains a list of space or newline separated tokens, eachpossibly delimited by single quotes.  The firstis 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 pairsvalid for a directory..br.ne 3.SS "Auxiliaries (magic)".PPIf the requested URI begins with.BI  /magic/ server /\f1,.I httpdexecutes the file.BI /bin/ip/httpd/ serverto finish servicing the request.All the auxiliaries take the same arguments..IR Methodand.IR versionare those received on the first line of the request..I Uriis the remaining portion of the requested URI..I Inbufcontains the rest of the bytes read by the server,and.I netdiris the network directory for the connection.There are routines for processing command arguments,parsing headers, etc. in the httpd library,.BR /sys/src/cmd/ip/httpd/libhttpd.a.$O .See.B httpd.hin that directory and existing magic commands for more details..PP.I Savewrites a line to.BI /usr/web/save/ uri .dataand returns the contents of.BI /usr/web/save/ uri .html.Both files must be accessible for the request to succeed.The saved line includes the current timeand either the search string from a HEAD or GETor the first line of the body from a POST.It is used to record form submissions..PP.I Imagemapprocesses an HTML imagemap query.It looks up the point.I searchin the image map file given by .IR 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.B #cernare interpreted in CERN format..PP.I Man2htmlconverts.IR man (6)format manual pages into html.It includes some abilities to search the manuals..PP.I Weblsproduces directory listings on the fly, withoutput in the style of.IR ls (1)..B /sys/lib/webls.allowedand.B /sys/lib/webls.deniedcontain regular expressions describingwhat parts of.I httpd'snamespace may and may not be listed, respectively..B Webls.deniedis first searched to see if access is by defaultdenied.  If so.B webls.allowedis then searched to see if access is explicitly allowed.Thus one can have very general expressions in thedenied list (like.BR .* ),yet still allow exceptions.  If.B webls.denieddoes not exist or is unreadable, all accesses are assumed to be denied unlessexplicitly allowed in.B webls.allowed..PPOther sites will note that if neither.B webls.deniednor.B webls.allowedexist, any portion of.I httpd'snamespace can be listed (however,.I weblswill always endeavor to prevent listing of `.' and `..').If.B webls.allowedexists but.B webls.denieddoes not, any directory to be listed must be describedby a regular expression in.BR webls.allowed .Similarly, if.B webls.deniedexists but.B webls.alloweddoes not, any directory to be listed must.I notbe described by a regular expression in.BR webls.denied .If both exist, a directory is listable if eitherit doesn't appear in.BR webls.denied ,or it appears in both.B webls.deniedand.BR webls.allowed .In other words,.B webls.allowedoverrides.BR webls.denied .If a listing for a directory is requested and accessis denied, or another error occurs, a simple errorpage is returned..SH EXAMPLESThese are all examples of how to use.BR httpd.rewrite ..PPA local redirection:.RS.EX/netlib/c++/idioms/index.html.Z /netlib/c++/idioms/index.html.EE.RE.PPRedirection to another site:.RS.EX/netlib/lapack/lawns		=http://netlib.org/lapack/lawnshttp://inferno.bell-labs.com	=http://www.vitanuova.com.EE.RE.PPRoot directory for virtual host:.RS.EXhttp://www.ampl.com		/cm/cs/what/ampl.EE.RE.SH FILES.TF /sys/lib/httpd.rewrite.TP.B /sys/lib/mimetypecontent type description file.TP.B /lib/namespace.httpddefault namespace file for httpd.TP.B /sys/lib/httpd.rewriteredirection file.TP.B /sys/lib/webls.allowedregular expressions describing explicitly listable pathnames; overrides.B webls.denied.TP.B /sys/lib/webls.deniedregular expressions describing explicitly unlistable pathnames.SH SOURCE.B /sys/src/cmd/ip/httpd.SH "SEE ALSO".I newnsin.IR auth (2),.IR listen (8),.IR rsa (8)