Linux Web Servers Since the framework for the Internet was developed by many of the same people who developed Unix, it isn't surprising that Unix and Linux platforms enjoy the broadest choice of available Web servers. As with most things in the Unix world, this same range of Web servers is available for Linux. The majority of Linux Web servers are free. The best-known Linux Web servers are these: • Nginx • NCSA httpd • Apache • AOLserver • Boa • WN • W3C/Cern In addition to these free servers, there are several commercial alternatives available for Linux, including the following: • FastTrack/iPlanet • Java Web Server • Stronghold • Zeus Apache By some counts, Apache is the most widely used Web server software. Standing for "A Patchy Server", Apache grew out of efforts to patch NCSA httpd, one of the original Web servers, to fix some problems and add functionality. Since then, Apache has emerged as the non-commercial server of choice for Unix systems. More recently, it has been ported to Windows and can be used as a Web server on Windows NT/2000 systems. Apache offers numerous features that make it attractive for Unix/Linux system administrators. Besides using a configuration based on the original NCSA httpd configuration files, Apache is available in full source code and is collectively developed, like many other popular applications for the Linux environment. Apache offers its own API, which can be used as an alternative to CGI (which is also supported by Apache). In addition, the API can be used to produce plug-in modules that serve numerous purposes. Among the available modules are the following: • Alternative authentication systems, including authentication from NIS authentication servers or from LDAP (Lightweight Directory Access Protocol) databases. • Server-side scripting environments that serve the same function as Microsoft Active Server Pages or Netscape LiveWire, including PHP/FI and HeiTML. • Modules designed to improve the performance of traditional CGI. For instance, the FastCGI module uses shortcuts to minimized the time it takes to execute a CGI program and return the results. The Perl module allows Perl scripts to run in a single process and to be compiled on first execution only, making Perl-based CGI performs almost as fast as compiled CGI programs and some API-based Web applications. The original source code for the latest version of Apache is available from http.apache.org, along with precompiled binaries for many different systems including Linux. Apache is included as the default Web server installed with Red Hat Linux 7.1 NCSA httpd NCSA httpd is one of the two original Web servers (along with the Cern Web server) upon which the Web was first built. NCSA httpd comes out of the National Center for Supercomputer Applications at the University of Illinois at Urbana-Champaign, which is also the home of Mosaic, the original graphical Web browser that launched the Web onto the road to widespread popularity. NCSA httpd offers a core set of functions designed to meet the needs of all but the most demanding of Web sites. These features include built-in support for multiple hosts, Basic and Digest authentication, directory-level access controls, server-side includes, and full CGI support. While NCSA httpd is no longer under active development, it does provide the background for the current structure of Apache. The original source code and precompiled binaries for NCSA httpd are available from hoohoo.ncsa.uiuc.edu. W3C/Jigsaw The Jigsaw Web server is the Java-based successor to Cern, which was one of the first Web servers powering the Internet. As a completely Java-based server, it is designed to run on any operating system that supports this language, including Unix/Linux and Microsoft Windows. Jigsaw is set up with several different types of Java objects, including: Resources. What is seen on the Web page. This includes static objects such as text or image files, and dynamic objects such as scripts. Frames. What actually handles the resource. A frame includes all of the necessary information to serve a specific resource; for example, an HTTPframe object serves an HTTP resource. Filters. A way to dynamically modify a resource. For example, if a Web site doesn't see that a user has logged in, it can "filter" in a login page. Indexer. The way to classify resources. The two main indexes are directories (to group files) and extensions (for common files such as TXT or INI). WN This chapter's survey of free servers is now moving toward less-commonly used servers. still, these niche market servers help you to see the diversity possible in Web server technology and features. WN is another freely available server with unique features that set it apart from other Web servers. For instance, WN allows full-text searching of what the developer refers to as a logical HTML document: a document that consists of multiple linked files. In addition, users can search files on the server and easily obtain matching documents. Users can also download a single logical document made up of multiple linked documents, making it easy for them to print files that are structured as a series of small documents. Another unique feature of the WN server is its ability to serve up conditional documents. that is, it is possible to create a single document with definitions that cause the correct version to be sent to a client on the basis of such variable as the IP address of the client or the browser version of the client. The security model of the WN server as well as its relatively small size also set it apart from the likes of Apache and the NCSA httpd Web server. In the latter servers, the default action is to server a file unless permission is specifically denied. With WN, no file is served unless permission is specifically granted for the file. This potentially makes the server more secure and provides finer-grained control over access to files. You can get a copy of WN at hopf.math.nwu.edu. Boa The last free Web server is the Boa server. Boa is included here to show that servers can be small, simple, and basic and still server a useful role. Boa offers very basic functionality and less fine-grained access control than Apache or WN. But boa is designed in a way that makes it potentially faster than almost any other available Web server for Linux. In fact, the creators of Boa claim that the server is significantly faster than Apache, although more real-world testing on large Web sites is needed to prove this claim. Boa achieves this performance gain through a single-tasking design. Where traditional Web servers create multiple process to listen for requests and then create a process to handle each request, the Boa server runs as a single process and handles all the processing and juggling of multiple requests internally rather than allowing the operating system's multitasking mechanism to do so. Boa spawns a child process only when a CGI request is made. You can learn more about Boa at www.boa.org Stronghold Stronghold is probably one of the best-known commercial Web servers for Linux. Stronghold is a commercially available version of Apache that offers an extremely secure and fully supported software package. Stronghold provides all the tools you need to set up a secure server, including Certificate Authority tools. With a Certificate Authority you can, if necessary, issue digital certificates approved by third-party certificate authority such as VeriSign. Other Stronghold security features include support for hardware cryptographical acceleration, as well as 128-bit data encryption for additional security. In addition, since Stronghold comes with full source code, you can use it for everything you use Apache for, including compiling in Apache modules and writing your own modules.