/[hydra]/hydra/docs/hydra.texi
ViewVC logotype

Annotation of /hydra/docs/hydra.texi

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.3 - (hide annotations)
Sun Oct 27 10:10:18 2002 UTC (21 years, 5 months ago) by nmav
Branch: MAIN
CVS Tags: hydra_0_1_6_without_hic, hydra_0_0_9, hydra_0_1_3, hydra_0_1_2, hydra_0_1_1, hydra_0_1_0, hydra_0_1_7, hydra_0_1_6, hydra_0_1_4, hydra_0_1_8, hydra_0_0_10, HEAD
Branch point for: hydra_0_1_0_patches
Changes since 1.2: +88 -85 lines
File MIME type: application/x-texinfo
*** empty log message ***

1 nmav 1.1 \input texinfo @c -*-texinfo-*-
2     @c %**start of header
3 nmav 1.3 @setfilename hydra.info
4     @settitle The Hydra HTTP Daemon
5 nmav 1.1 @set UPDATED Last Updated: 2 Jan 2001
6     @set COPYPHRASE Copyright @copyright{} 1996-2001 Jon Nelson and Larry Doolittle
7 nmav 1.3 @set VERSION $Revision: 1.2 $
8 nmav 1.1
9     @paragraphindent asis
10     @iftex
11     @parindent 0pt
12     @end iftex
13     @c @setchapternewpage odd
14     @c %**end of header
15    
16     @iftex
17     @titlepage
18 nmav 1.3 @title The Hydra HTTP Daemon
19 nmav 1.1 @c @sp 2
20     @end iftex
21    
22     @ifinfo
23 nmav 1.3 This file documents Hydra, an HTTP daemon for UN*X like machines.
24 nmav 1.1 @end ifinfo
25    
26     @html
27 nmav 1.3 <h1 align="center">The Hydra HTTP Daemon</h1>
28 nmav 1.1 @end html
29    
30     @ifinfo
31     @dircategory Networking
32     @direntry
33 nmav 1.3 * Hydra: (hydra). The Hydra Webserver
34 nmav 1.1 @end direntry
35     @end ifinfo
36    
37     @comment node-name, next, previous, up
38     @node Top, Introduction, , (dir)
39    
40 nmav 1.3 Welcome to the documentation for Hydra, a high performance
41 nmav 1.1 HTTP Server for UN*X-alike computers, covered by the
42 nmav 1.3 @uref{Gnu_License,GNU General Public License}. This is a draft
43     document based on Boa documentation.
44 nmav 1.1 The on-line, updated copy of this documentation lives at
45 nmav 1.3 @uref{http://hydra.hellug.gr/,http://hydra.hellug.gr/}
46 nmav 1.1 @sp 1
47     @center @value{COPYPHRASE}
48     @center @value{UPDATED}, @value{VERSION}
49    
50     @iftex
51     @end titlepage
52     @contents
53     @end iftex
54    
55     @menu
56     * Introduction::
57     * Installation and Usage::
58     * Limits and Design Philosophy::
59     * Appendix::
60    
61     -- Detailed Node Listing --
62    
63     Installation
64    
65 nmav 1.3 * Files Used by Hydra::
66 nmav 1.1 * Compile-Time and Command-Line Options::
67 nmav 1.3 * hydra.conf Directives::
68 nmav 1.1 * Security::
69    
70     Limits and Design Philosophy
71    
72     * Limits::
73 nmav 1.3 * Differences between Hydra and other web servers::
74 nmav 1.1 * Unexpected Behavior::
75    
76     Appendix
77    
78     * License::
79     * Acknowledgments::
80     * Reference Documents::
81     * Other HTTP Servers::
82     * Benchmarks::
83     * Tools::
84     * Authors::
85    
86     @end menu
87    
88     @comment node-name, next, previous, up
89     @node Introduction, Installation and Usage,top,top
90     @chapter Introduction
91    
92 nmav 1.3 Hydra is a single-tasking HTTP server. That means that unlike
93 nmav 1.1 traditional web servers, it does not fork for each incoming
94     connection, nor does it fork many copies of itself to handle multiple
95     connections. It internally multiplexes all of the ongoing HTTP
96     connections, and forks only for CGI programs (which must be separate
97     processes), automatic directory generation, and automatic file
98 nmav 1.3 gunzipping. Preliminary tests show Hydra is capable of
99 nmav 1.1 handling several thousand hits per second on a 300 MHz Pentium and
100     dozens of hits per second on a lowly 20 MHz 386/SX.
101    
102 nmav 1.3 The primary design goals of Hydra are speed and security. Security,
103 nmav 1.1 in the sense of @emph{can't be subverted by a malicious user,} not
104     @emph{fine grained access control and encrypted communications}.
105 nmav 1.3 Hydra is not intended as a feature-packed server; if you want one of those,
106 nmav 1.1 check out
107     WN (@uref{http://hopf.math.nwu.edu/}) from John Franks.
108 nmav 1.3 Modifications to Hydra that improve its speed, security, robustness, and
109 nmav 1.1 portability, are eagerly sought. Other features may be added if they
110     can be achieved without hurting the primary goals.
111    
112 nmav 1.3 Hydra is based on Boa web server.
113 nmav 1.1 Boa was created in 1991 by Paul Phillips (@email{psp@@well.com}).
114     It is now being maintained and enhanced by Larry Doolittle
115     (@email{ldoolitt@@boa.org}) and Jon Nelson
116     (@email{jnelson@@boa.org}).
117     Please see the acknowledgement section for further
118 nmav 1.3 details. Hydra is maintained by
119     Nikos Mavroyanopoulos (@email{nmav@@gnutls.org}).
120    
121 nmav 1.1
122     GNU/Linux is the development platform at the moment, other OS's are known to work.
123     If you'd like to contribute to this effort, contact Larry or Jon via e-mail.
124    
125     @comment node-name, next, previous, up
126     @node Installation and Usage, Limits and Design Philosophy, Introduction,top
127     @chapter Installation and Usage
128    
129 nmav 1.3 Hydra is currently being developed and tested on GNU/Linux/i386.
130 nmav 1.1 The code is straightforward (more so than most other servers),
131     so it should run easily on most modern Unix-alike platforms. Recent
132 nmav 1.3 versions of Hydra worked fine on FreeBSD, SunOS 4.1.4, GNU/Linux-SPARC,
133 nmav 1.1 and HP-UX 9.0. Pre-1.2.0 GNU/Linux kernels may not work because of
134     deficient mmap() implementations.
135    
136     @menu
137     * Installation::
138 nmav 1.3 * Files Used by Hydra::
139 nmav 1.1 * Compile-Time and Command-Line Options::
140     * Security::
141     @end menu
142    
143     @comment node-name, next, previous, up
144 nmav 1.3 @node Installation,Files Used by Hydra,,Installation and Usage
145 nmav 1.1 @section Installation
146    
147     @enumerate
148     @item Unpack
149     @enumerate
150     @item Choose, and cd into, a convenient directory for the package.
151 nmav 1.3 @item @kbd{tar -xvzf hydra-x.y.z.tar.gz}, or for those of you with an archaic
152     (non-GNU) tar; @kbd{gzip -cd &lt; hydra-x.y.z.tar.gz | tar -xvf -}
153 nmav 1.1 @item Read the documentation. Really.
154     @end enumerate
155     @item Build
156     @enumerate
157     @item cd into the @t{src} directory.
158     @item (optional) Change the default SERVER_ROOT by setting the #define
159     at the top of src/defines.h
160     @item Type @kbd{./configure; make}
161     @item Report any errors to the maintainers for resolution, or strike
162     out on your own.
163     @end enumerate
164     @item Configure
165     @enumerate
166 nmav 1.3 @item Choose a user and server port under which Hydra can run. The
167 nmav 1.1 traditional port is 80, and user @t{nobody} (create if
168     you need to) is often a good selection for security purposes.
169     If you don't have (or choose not to use) root privileges, you
170     can not use port numbers less than 1024, nor can you switch user id.
171     @item Choose a server root. The @t{conf} directory within the
172     server root must hold your copy of the configuration file
173 nmav 1.3 @emph{hydra.conf}
174 nmav 1.1 @item Choose locations for log files, CGI programs (if any), and
175     the base of your URL tree.
176     @item Set the location of the @t{mime.types} file.
177 nmav 1.3 @item Edit @emph{conf/hydra.conf} according to your
178 nmav 1.1 choices above (this file documents itself). Read through this file
179     to see what other features you can configure.
180     @end enumerate
181     @item Start
182     @itemize
183 nmav 1.3 @item Start Hydra. If you didn't build the right SERVER_ROOT into the
184 nmav 1.1 binary, you can specify it on the command line with the -c option
185     (command line takes precedence).
186     @example
187 nmav 1.3 Example: ./hydra -c /usr/local/hydra
188 nmav 1.1 @end example
189     @end itemize
190    
191     @item Test
192     @itemize
193     @item At this point the server should run and serve documents.
194     If not, check the error_log file for clues.
195     @end itemize
196    
197     @item Install
198     @itemize
199     @item Copy the binary to a safe place, and put the invocation into
200     your system startup scripts. Use the same -c option you used
201     in your initial tests.
202     @end itemize
203     @end enumerate
204    
205     @comment node-name, next, previous, up
206 nmav 1.3 @node Files Used by Hydra, Compile-Time and Command-Line Options, Installation,Installation and Usage
207     @section Files Used by Hydra
208 nmav 1.1
209     @ftable @file
210 nmav 1.3 @item hydra.conf
211     This file is the sole configuration file for Hydra. The directives in this
212 nmav 1.1 file are defined in the DIRECTIVES section.
213     @item mime.types
214 nmav 1.3 The MimeTypes <filename> defines what Content-Type Hydra will
215 nmav 1.1 send in an HTTP/1.0 or better transaction.
216     Set to /dev/null if you do not want to load a mime types file.
217     Do *not* comment out (better use AddType!)
218     @end ftable
219    
220     @comment node-name, next, previous, up
221 nmav 1.3 @node Compile-Time and Command-Line Options, hydra.conf Directives, Files Used by Hydra,Installation and Usage
222 nmav 1.1 @section Compile-Time and Command-Line Options
223    
224     @table @var
225     @item SERVER_ROOT
226     @itemx -c
227     The default server root as #defined by @var{SERVER_ROOT} in
228     @file{defines.h} can be overridden on the commandline using the
229     @option{-c} option. The server root must hold your local copy of the
230 nmav 1.3 configuration file @file{hydra.conf}.
231 nmav 1.1 @example
232 nmav 1.3 Example: /usr/sbin/hydra -c /etc/hydra
233 nmav 1.1 @end example
234    
235     @end table
236    
237     @comment node-name, next, previous, up
238 nmav 1.3 @node hydra.conf Directives, Security, Compile-Time and Command-Line Options, (top)
239     @section hydra.conf Directives
240 nmav 1.1
241 nmav 1.3 The Hydra configuration file is parsed with a lex/yacc or flex/bison
242 nmav 1.1 generated parser. If it reports an error, the line number will be
243     provided; it should be easy to spot. The syntax of each of these rules
244     is very simple, and they can occur in any order. Where possible, these
245     directives mimic those of NCSA httpd 1.3; I (Paul Phillips) saw no reason
246     to introduce gratuitous differences.
247    
248     Note: the "ServerRoot" is not in this configuration file. It can be
249     compiled into the server (see @file{defines.h}) or specified on the command
250     line with the @command{-c} option.
251    
252 nmav 1.3 The following directives are contained in the @file{hydra.conf} file, and most,
253 nmav 1.1 but not all, are required.
254    
255     @table @option
256     @item Port <Integer>
257 nmav 1.3 This is the port that Hydra runs on. The default port for http servers is 80.
258 nmav 1.1 If it is less than 1024, the server must be started as root.
259    
260     @item Listen <IP>
261     The Internet address to bind(2) to, in quadded-octet form (numbers).
262     If you leave it out, it binds to all addresses (INADDR_ANY).
263    
264     The name you provide gets run through inet_aton(3), so you have to
265     use dotted quad notation. This configuration is too important to trust some DNS.
266    
267     You only get one "Listen" directive, if you want service on multiple
268     IP addresses, you have three choices:
269    
270     @enumerate
271 nmav 1.3 @item Run hydra without a "Listen" directive:
272 nmav 1.1 @itemize @bullet
273     @item All addresses are treated the same; makes sense if the addresses
274     are localhost, ppp, and eth0.
275     @item Use the VirtualHost directive below to point requests to different files.
276     Should be good for a very large number of addresses (web hosting clients).
277     @end itemize
278 nmav 1.3 @item Run one copy of hydra per IP address:
279 nmav 1.1 @itemize @bullet
280     @item Each instance has its own configuration with its own
281     "Listen" directive. No big deal up to a few tens of addresses. Nice separation
282     between clients.
283     @end itemize
284     @end enumerate
285    
286     @item User <username or UID>
287 nmav 1.3 The name or UID the server should run as. For Hydra to attempt this, the
288 nmav 1.1 server must be started as root.
289    
290     @item Group <groupname or GID>
291 nmav 1.3 The group name or GID the server should run as. For Hydra to attempt this,
292 nmav 1.1 the server must be started as root.
293    
294     @item ServerAdmin <email address>
295     The email address where server problems should be sent. Note: this is not
296     currently used.
297    
298     @item ErrorLog <filename>
299     The location of the error log file. If this does not start with /, it is
300     considered relative to the server root. Set to /dev/null if you don't want
301     errors logged.
302    
303     @item AccessLog <filename>
304     The location of the access log file. If this does not start with /, it is
305     considered relative to the server root. Comment out or set to /dev/null
306     (less effective) to disable access logging.
307    
308     @item VerboseCGILogs
309     This is a logical switch and does not take any parameters. Comment out to
310     disable. All it does is switch on or off logging of when CGIs are launched and when
311     the children return.
312    
313     @item CgiLog <filename>
314     The location of the CGI error log file. If
315     specified, this is the file that the stderr of CGIs is tied to. Otherwise, writes
316     to stderr meet the bit bucket.
317    
318     @item ServerName <server_name>
319     The name of this server that should be sent back to clients if different
320     than that returned by gethostname.
321    
322     @item VirtualHost
323     This is a logical switch and does not take any parameters.
324     Comment out to disable. Given DocumentRoot /var/www, requests on interface `A' or
325     IP `IP-A' become /var/www/IP-A. Example: http://localhost/ becomes
326     /var/www/127.0.0.1
327    
328     @item DocumentRoot <directory>
329     The root directory of the HTML documents. If this does not start with /,
330     it is considered relative to the server root.
331    
332     @item UserDir <directory>
333     The name of the directory which is appended onto a user's home directory
334     if a ~user request is received.
335    
336     @item DirectoryIndex <filename>
337     Name of the file to use as a pre-written HTML directory index. Please
338     make and use these files. On the fly creation of directory indexes
339     can be slow.
340    
341     @item DirectoryMaker <full pathname to program>
342     Name of the program used
343     to generate on-the-fly directory listings. The program must take one or two
344     command-line arguments, the first being the directory to index (absolute), and the
345     second, which is optional, should be the "title" of the document be. Comment out if
346     you don't want on the fly directory listings. If this does not start with /, it is
347     considered relative to the server root.
348    
349     @item DirectoryCache <directory>
350     DirectoryCache: If DirectoryIndex doesn't exist, and DirectoryMaker has been
351 nmav 1.3 commented out, the the on-the-fly indexing of Hydra can be used to generate indexes
352 nmav 1.1 of directories. Be warned that the output is extremely minimal and can cause
353     delays when slow disks are used. Note: The DirectoryCache must be writable by the
354 nmav 1.3 same user/group that Hydra runs as.
355 nmav 1.1
356     @item KeepAliveMax <integer>
357     Number of KeepAlive requests to allow per connection. Comment out, or set
358     to 0 to disable keepalive processing.
359    
360     @item KeepAliveTimeout <integer>
361     Number of seconds to wait before keepalive connections time out.
362    
363     @item MimeTypes <file>
364     The location of the mime.types file. If this does not start with /, it is
365     considered relative to the server root.
366     Comment out to avoid loading mime.types (better use AddType!)
367    
368     @item DefaultType <mime type>
369     MIME type used if the file extension is unknown, or there is no file
370     extension.
371    
372     @item AddType <mime type> <extension> extension...
373     Associates a MIME type
374     with an extension or extensions.
375    
376     @item Redirect, Alias, and ScriptAlias
377     Redirect, Alias, and ScriptAlias all have the same semantics --
378     they match the beginning of a request and take appropriate action.
379     Use Redirect for other servers, Alias for the same server, and
380     ScriptAlias to enable directories for script execution.
381    
382     @item Redirect <path1> <path2>
383     allows you to tell clients about documents which used to exist
384     in your server's namespace, but do not anymore. This allows you
385     tell the clients where to look for the relocated document.
386    
387     @item Alias <path1> <path2>
388     aliases one path to another. Of course, symbolic links in the
389     file system work fine too.
390    
391     @item ScriptAlias <path1> <path2>
392     maps a virtual path to a directory for serving scripts.
393 nmav 1.2
394     @item Allow, Deny
395 nmav 1.3 Only supported if Hydra is compiled with --enable-access-control.
396 nmav 1.2 Allow and Deny allows pattern based access control using shell
397     wildcards. The string the matching is performed on is the absolute
398     filesystem filename. The Allow, Deny directives are processed in
399     order until the first match is found, so to allow files containing
400     the substring 123 but not the ones containing 1234 you would do:
401     @itemize @bullet
402     @item Deny *1234*
403     @item Allow *123*
404     @end itemize
405    
406     @item Allow <pattern>
407     Allows files matching <pattern>
408    
409     @item Deny <pattern>
410     Disallowes files matching <pattern>
411    
412 nmav 1.1 @end table
413    
414     @comment node-name, next, previous, up
415 nmav 1.3 @node Security, , hydra.conf Directives, Installation and Usage
416 nmav 1.1 @section Security
417    
418 nmav 1.3 Hydra has been designed to use the existing file system security. In
419     @file{hydra.conf}, the directives @emph{user} and
420     @emph{group} determine who Hydra will run as, if launched by root.
421 nmav 1.1 By default, the user/group is nobody/nogroup. This allows quite a bit
422     of flexibility. For example, if you want to disallow access to otherwise
423     accessible directories or files, simply make them inaccessible to
424 nmav 1.3 nobody/nogroup. If the user that Hydra runs as is "hydra" and the groups that
425     "hydra" belongs to include "web-stuff" then files/directories accessible
426     by users with group "web-stuff" will also be accessible to Hydra.
427 nmav 1.1
428     The February 2000 hoo-rah from
429     @uref{http://www.cert.org/advisories/CA-2000-02.html,CERT advisory CA-2000-02}
430 nmav 1.3 has little to do with Hydra. As of version 0.94.4, Hydra's escaping rules have
431 nmav 1.1 been cleaned up a little, but they weren't that bad before. The example CGI
432     programs have been updated to show what effort is needed there. If you
433 nmav 1.3 write, maintain, or use CGI programs under Hydra (or any other server) it's
434 nmav 1.1 worth your while to read and understand this advisory. The real problem,
435     however, boils down to browser and web page designers emphasizing frills
436     over content and security. The market leading browsers assume (incorrectly)
437     that all web pages are trustworthy.
438    
439     @comment node-name, next, previous, up
440     @node Limits and Design Philosophy,Appendix, Installation and Usage,top
441     @chapter Limits and Design Philosophy
442    
443     There are many issues that become more difficult to resolve in a single
444     tasking web server than in the normal forking model. Here is a partial
445     list -- there are probably others that haven't been encountered yet.
446    
447     @menu
448     * Limits::
449 nmav 1.3 * Differences between Hydra and other web servers::
450 nmav 1.1 * Unexpected Behavior::
451     @end menu
452    
453     @comment node-name, next, previous, up
454 nmav 1.3 @node Limits,Differences between Hydra and other web servers,,Limits and Design Philosophy
455 nmav 1.1 @section Limits
456    
457     @itemize @bullet
458     @item Slow file systems
459    
460     The file systems being served should be much faster than the
461     network connection to the HTTP requests, or performance will suffer.
462     For instance, if a document is served from a CD-ROM, the whole server
463     (including all other currently incomplete data transfers) will stall
464 nmav 1.3 while the CD-ROM spins up. This is a consequence of the fact that Hydra
465 nmav 1.1 mmap()'s each file being served, and lets the kernel read and cache
466     pages as best it knows how. When the files come from a local disk
467     (the faster the better), this is no problem, and in fact delivers
468     nearly ideal performance under heavy load. Avoid serving documents
469     from NFS and CD-ROM unless you have even slower inbound net
470     connections (e.g., POTS SLIP).
471    
472     @item DNS lookups
473    
474     Writing a nonblocking gethostbyaddr is a difficult and not very
475     enjoyable task. Paul Phillips experimented with several methods,
476     including a separate logging process, before removing hostname
477 nmav 1.3 lookups entirely. There is a companion program with Hydra
478 nmav 1.1 @file{util/resolver.pl} that will postprocess the logfiles and
479     replace IP addresses with hostnames, which is much faster no matter
480     what sort of server you run.
481    
482     @item Identd lookups
483    
484     Same difficulties as hostname lookups; not included.
485 nmav 1.3 Hydra provides a REMOTE_PORT environment variable, in addition
486 nmav 1.1 to REMOTE_ADDR, so that a CGI program can do its own ident.
487     See the end of @t{examples/cgi-test.cgi}.
488    
489     @item Password file lookups via NIS
490    
491     If users are allowed to serve HTML from their home directories,
492     password file lookups can potentially block the process. To lessen
493 nmav 1.3 the impact, each user's home directory is cached by Hydra so it need
494 nmav 1.1 only be looked up once.
495    
496     @item Running out of file descriptors
497    
498     Since a file descriptor is needed for every ongoing connection
499     (two for non-nph CGIs, directories, and automatic gunzipping of files),
500     it is possible though highly improbable to run out of file
501     descriptors. The symptoms of this conditions may vary with
502     your particular unix variant, but you will probably see log
503     entries giving an error message for @t{accept}.
504     Try to build your kernel to give an adequate number for
505     your usage - GNU/Linux provides 256 out of the box, more than
506     enough for most people.
507     @end itemize
508    
509     @comment node-name, next, previous, up
510 nmav 1.3 @node Differences between Hydra and other web servers,Unexpected Behavior,Limits,Limits and Design Philosophy
511     @section Differences between Hydra and other web servers
512 nmav 1.1
513 nmav 1.3 In the pursuit of speed and simplicity, some aspects of Hydra differ
514 nmav 1.1 from the popular web servers. In no particular order:
515    
516     @itemize @bullet
517     @item @var{REMOTE_HOST} environment variable not set for CGI programs
518    
519     The @var{REMOTE_HOST} environment variable is not set for CGI programs,
520     for reasons already described. This is easily worked around because the
521     IP address is provided in the @var{REMOTE_HOST} variable, so (if the CGI
522     program actually cares) gethostbyaddr or a variant can be used.
523    
524 nmav 1.3 @item There are no server side includes (@acronym{SSI}) in Hydra
525 nmav 1.1
526     We don't like them, and they are too slow to parse. We will consider
527     more efficient alternatives.
528    
529     @item There are no access control features
530    
531 nmav 1.3 Hydra will follow symbolic links, and serve any file that it can
532     read. The expectation is that you will configure Hydra to run as user
533 nmav 1.1 "nobody", and only files configured world readable will come
534     out.
535    
536     @item No chroot option
537    
538     There is no option to run chrooted. If anybody wants this, and is
539     willing to try out experimental code, contact the maintainers.
540     @end itemize
541    
542     @comment node-name, next, previous, up
543 nmav 1.3 @node Unexpected Behavior,,Differences between Hydra and other web servers,Limits and Design Philosophy
544 nmav 1.1 @section Unexpected Behavior
545    
546     @itemize @bullet
547     @item SIGHUP handling
548    
549 nmav 1.3 Like any good server, Hydra traps SIGHUP and rereads @file{hydra.conf}.
550 nmav 1.1 However, under normal circumstances, it has already given away
551 nmav 1.3 permissions, so many items listed in @file{hydra.conf} can not take effect.
552 nmav 1.1 No attempt is made to change uid, gid, log files, or server port.
553     All other configuration changes should take place smoothly.
554    
555     @item SIGUSR1 handling
556    
557 nmav 1.3 Hydra traps SIGUSR1 and prints useful statistics in the error log file.
558 nmav 1.1
559     @item Relative URL handling
560    
561 nmav 1.3 Not all browsers handle relative URLs correctly. Hydra will not
562 nmav 1.1 cover up for this browser bug, and will typically report 404 Not Found
563     for URL's containing odd combinations of "../" 's.
564    
565     Note: As of version 0.95.0 (unreleased) the URL parser has been
566     rewritten and *does* correctly handle relative URLs.
567     @end itemize
568    
569     @comment node-name, next, previous, up
570     @node Appendix,,Limits and Design Philosophy,top
571     @appendix Appendix
572    
573     @menu
574     * License::
575     * Acknowledgments::
576     * Reference Documents::
577     * Other HTTP Servers::
578     * Benchmarks::
579     * Tools::
580     * Authors::
581     @end menu
582    
583     @comment node-name, next, previous, up
584     @node License,Acknowledgments,,Appendix
585     @section License
586    
587     This program is distributed under the
588     @uref{http://www.gnu.org/copyleft/gpl.html,GNU General Public License}.
589     as noted in each source file:
590     @*
591    
592     @smallexample
593     /*
594 nmav 1.3 * Hydra, an http server
595 nmav 1.1 * Copyright (C) 1995 Paul Phillips <psp@@well.com>
596     *
597     * This program is free software; you can redistribute it and/or modify
598     * it under the terms of the GNU General Public License as published by
599     * the Free Software Foundation; either version 1, or (at your option)
600     * any later version.
601     *
602     * This program is distributed in the hope that it will be useful,
603     * but WITHOUT ANY WARRANTY; without even the implied warranty of
604     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
605     * GNU General Public License for more details.
606     *
607     * You should have received a copy of the GNU General Public License
608     * along with this program; if not, write to the Free Software
609     * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
610     *
611     */
612    
613     @end smallexample
614    
615     @comment node-name, next, previous, up
616     @node Acknowledgments,Reference Documents,License,Appendix
617     @section Acknowledgments
618    
619 nmav 1.3 Paul Phillips wrote the first versions of Hydra, up to and including
620     version 0.91. Version 0.92 of Hydra was officially released December 1996
621 nmav 1.1 by Larry Doolittle. Version 0.93 was the development version of 0.94,
622     which was released in February 2000.
623    
624     The Boa Webserver is currently (Feb 2000) maintained and enhanced by
625     Larry Doolittle (@email{ldoolitt@@boa.org})
626     and Jon Nelson (@email{jnelson@@boa.org}).
627    
628     We would like to thank Russ Nelson (@email{nelson@@crynwr.com})
629     for hosting the @uref{http://www.boa.org,web site}.
630    
631     We would also like to thank Paul Philips for writing code that is
632     worth maintaining and supporting.
633    
634 nmav 1.3 Many people have contributed to Hydra, including (but not
635 nmav 1.1 limited to) Charles F. Randall (@email{randall@@goldsys.com})
636     Christoph Lameter (@email{<chris@@waterf.org>}),
637     Russ Nelson (@email{<nelson@@crynwr.com>}), Alain Magloire
638     (@email{<alain.magloire@@rcsm.ee.mcgill.ca>}),
639     and more recently, M. Drew Streib (@email{<dtype@@linux.com>}).
640    
641     Paul Phillips records his acknowledgments as follows:
642     @quotation
643     Thanks to everyone in the WWW community, in general a great bunch of people.
644     Special thanks to Clem Taylor (@email{<ctaylor@@eecis.udel.edu>}), who
645     provided invaluable feedback on many of my ideas, and offered good
646     ones of his own. Also thanks to John Franks, author of wn, for
647     writing what I believe is the best webserver out there.
648     @end quotation
649    
650     @comment node-name, next, previous, up
651     @node Reference Documents,Other HTTP Servers,Acknowledgments,Appendix
652     @section Reference Documents
653    
654     Links to documents relevant to
655 nmav 1.3 @uref{http://hydra.hellug.gr/,Hydra}
656 nmav 1.1 development and usage. Incomplete, we're still working on this.
657     NCSA has a decent
658     @uref{http://hoohoo.ncsa.uiuc.edu/docs/Library.html,page} along
659     these lines, too.
660    
661     Also see Yahoo's List
662     @* @uref{http://www.yahoo.com/Computers_and_Internet/Software/Internet/World_Wide_Web/Servers/}
663    
664     @itemize
665     @item W3O HTTP page
666     @* @uref{http://www.w3.org/pub/WWW/Protocols/}
667    
668     @item RFC 1945 HTTP-1.0 (informational)
669     @* @uref{http://ds.internic.net/rfc/rfc1945.txt}
670    
671     @item IETF Working Group Draft 07 of HTTP-1.1
672     @* @uref{http://www.w3.org/pub/WWW/Protocols/HTTP/1.1/draft-ietf-http-v11-spec-07.txt}
673    
674     @item HTTP: A protocol for networked information
675     @* @uref{http://www.w3.org/pub/WWW/Protocols/HTTP/HTTP2.html}
676    
677     @item The Common Gateway Interface (CGI)
678     @* @uref{http://hoohoo.ncsa.uiuc.edu/cgi/overview.html}
679    
680     @item RFC 1738 URL syntax and semantics
681     @* @uref{http://ds.internic.net/rfc/rfc1738.txt}
682    
683     @item RFC 1808 Relative URL syntax and semantics
684     @* @uref{http://ds.internic.net/rfc/rfc1808.txt}
685     @end itemize
686    
687     @comment node-name, next, previous, up
688     @node Other HTTP Servers,Benchmarks,Reference Documents,Appendix
689     @section Other HTTP Servers
690    
691     For unix-alike platforms, with published source code.
692    
693     @itemize
694 nmav 1.3 @item tiny/turbo/throttling httpd very similar to Hydra, with a throttling
695 nmav 1.1 feature
696     @* @uref{http://www.acme.com/software/thttpd/}
697    
698     @item Roxen: based on ulpc interpreter, non-forking (interpreter implements
699     threading), GPL'd
700     @* @uref{http://www.roxen.com/}
701    
702     @item WN: featureful, GPL'd
703     @* @uref{http://hopf.math.nwu.edu/}
704    
705     @item Apache: fast, PD
706     @* @uref{http://www.apache.org/}
707    
708     @item NCSA: standard, legal status?
709     @* @uref{http://hoohoo.ncsa.uiuc.edu/}
710    
711     @item CERN: standard, PD, supports proxy
712     @* @uref{http://www.w3.org/pub/WWW/Daemon/Status.html}
713    
714     @item xs-httpd 2.0: small, fast, pseudo-GPL'd
715     @* @uref{http://www.stack.nl/~sven/xs-httpd/}
716    
717     @item bozohttpd.tar.gz sources, in perl
718     @* @uref{ftp://ftp.eterna.com.au/bozo/bsf/attware/bozohttpd.tar.gz}
719    
720     @item Squid is actually an "Internet Object Cache"
721     @* @uref{http://squid.nlanr.net/Squid/}
722     @end itemize
723    
724     Also worth mentioning is Zeus.
725     It is commercial, with a free demo, so it doesn't belong on the list above.
726 nmav 1.3 Zeus seems to be based on technology similar to Hydra and thttpd,
727 nmav 1.1 but with more bells and whistles.
728     @* @uref{http://www.zeus.co.uk/products/server/}
729    
730     @comment node-name, next, previous, up
731     @node Benchmarks,Tools,Other HTTP Servers,Appendix
732     @section Benchmarks
733    
734     @itemize
735     @item ZeusBench (broken link)
736     @* @uref{http://www.zeus.co.uk/products/server/intro/bench2/zeusbench.shtml}
737    
738     @item WebBench (binary-ware)
739     @* @uref{http://web1.zdnet.com/zdbop/webbench/webbench.html}
740    
741     @item WebStone
742     @* @uref{http://www.mindcraft.com/benchmarks/webstone/}
743    
744     @item SpecWeb96
745     @* @uref{http://www.specbench.org/osg/web96/}
746     @end itemize
747    
748     @comment node-name, next, previous, up
749     @node Tools,Authors,Benchmarks,Appendix
750     @section Tools
751    
752     @itemize
753     @item Analog logfile analyzer
754     @* @uref{http://www.statslab.cam.ac.uk/@~sret1/analog/}
755    
756     @item wwwstat logfile analyzer
757     @* @uref{http://www.ics.uci.edu/pub/websoft/wwwstat/}
758    
759     @item gwstat wwwstat postprocessor
760     @* @uref{http://dis.cs.umass.edu/stats/gwstat.html}
761    
762     @item The Webalizer logfile analyzer
763     @* @uref{http://www.usagl.net/webalizer/}
764    
765     @item cgiwrap
766     @* @uref{http://www.umr.edu/@~cgiwrap/}
767    
768 nmav 1.3 @item suEXEC (Hydra would need to be ..umm.. "adjusted" to support this)
769 nmav 1.1 @* @uref{http://www.apache.org/docs/suexec.html}
770     @end itemize
771    
772     Note: References last checked: 06 October 1997
773    
774     @comment node-name, next, previous, up
775     @node Authors,,Tools,Appendix
776     @section Authors
777    
778     @itemize
779     @item Conversion from linuxdoc SGML to texinfo by Jon Nelson
780     @item Conversion to linuxdoc SGML by Jon Nelson
781     @item Original HTML documentation by Larry Doolittle
782     @item @value{COPYPHRASE}
783     @end itemize
784    
785     @c variable
786     @c @printindex vr
787     @c concept
788     @c @printindex cp
789     @c function
790     @c @printindex fn
791     @c key
792     @c @printindex ky
793     @c program
794     @c @printindex pg
795     @c data type
796     @c @printindex tp
797    
798     @bye

webmaster@linux.gr
ViewVC Help
Powered by ViewVC 1.1.26