You are on page 1of 13

Web server

The term web server can mean one of two things:

1. A computer program that is responsible for accepting HTTP requests from clients,
which are known as web browsers, and serving them HTTP responses along with
optional data contents, which usually are web pages such as HTML documents
and linked objects (images, etc.).
2. A computer that runs a computer program as described above.

Common features

Although web server programs differ in detail, they all share some basic common
features.

1. HTTP: every web server program operates by accepting HTTP requests from the
client, and providing an HTTP response to the client. The HTTP response usually
consists of an HTML document, but can also be a raw file, an image, or some other
type of document (defined by MIME-types). If some error is found in client
request or while trying to serve it, a web server has to send an error response
which may include some custom HTML or text messages to better explain the
problem to end users.
2. Logging: usually web servers have also the capability of logging some detailed
information, about client requests and server responses, to log files; this allows
the webmaster to collect statistics by running log analyzers on log files.

In practice many web servers implement the following features also:

1. Authentication, optional authorization request (request of user name and


password) before allowing access to some or all kind of resources.
2. Handling of static content (file content recorded in server's filesystem(s)) and
dynamic content by supporting one or more related interfaces (SSI, CGI, SCGI,
FastCGI, JSP, PHP, ASP, ASP .NET, Server API such as NSAPI, ISAPI, etc.).
3. HTTPS support (by SSL or TLS) to allow secure (encrypted) connections to the
server on the standard port 443 instead of usual port 80.
4. Content compression (i.e. by gzip encoding) to reduce the size of the responses
(to lower bandwidth usage, etc.).
5. Virtual hosting to serve many web sites using one IP address.
6. Large file support to be able to serve files whose size is greater than 2 GB on 32
bit OS.
7. Bandwidth throttling to limit the speed of responses in order to not saturate the
network and to be able to serve more clients.
Origin of returned content

The origin of the content sent by server is called:

• static if it comes from an existing file lying on a filesystem;


• dynamic if it is dynamically generated by some other program or script or
Application Programming Interface called by the web server.

Serving static content is usually much faster (from 2 to 100 times) than serving dynamic
content, especially if the latter involves data pulled from a database.

Path translation

Web servers are able to map the path component of a Uniform Resource Locator (URL)
into:

• a local file system resource (for static requests);


• an internal or external program name (for dynamic requests).

For a static request the URL path specified by the client is relative to the Web server's
root directory.

Consider the following URL as it would be requested by a client:

http://www.example.com/path/file.html

The client's web browser will translate it into a connection to www.example.com with the
following HTTP 1.1 request:

GET /path/file.html HTTP/1.1


Host: www.example.com

The web server on www.example.com will append the given path to the path of its root
directory. On Unix machines, this is commonly /var/www/htdocs. The result is the local
file system resource:

/var/www/htdocs/path/file.html

The web server will then read the file, if it exists, and send a response to the client's web
browser. The response will describe the content of the file and contain the file itself.

Load limits

A web server (program) has defined load limits, because it can handle only a limited
number of concurrent client connections (usually between 2 and 60,000, by default
between 500 and 1,000) per IP address (and IP port) and it can serve only a certain
maximum number of requests per second depending on:

• its own settings;


• the HTTP request type;
• content origin (static or dynamic);
• the fact that the served content is or is not cached;
• the hardware and software limits of the OS where it is working.

When a web server is near to or over its limits, it becomes overloaded and thus
unresponsive.

Overload causes

At any time web servers can be overloaded because of:

• Too much legitimate web traffic (i.e. thousands or even millions of clients
hitting the web site in a short interval of time. e.g. Slashdot effect);
• DDoS (Distributed Denial of Service) attacks;
• Computer worms that sometimes cause abnormal traffic because of millions of
infected computers (not coordinated among them);
• XSS viruses can cause high traffic because of millions of infected browsers
and/or web servers;
• Internet web robots traffic not filtered / limited on large web sites with very few
resources (bandwidth, etc.);
• Internet (network) slowdowns, so that client requests are served more slowly
and the number of connections increases so much that server limits are reached;
• Web servers (computers) partial unavailability, this can happen because of
required / urgent maintenance or upgrade, HW or SW failures, back-end (i.e. DB)
failures, etc.; in these cases the remaining web servers get too much traffic and
become overloaded.

Overload symptoms

The symptoms of an overloaded web server are:

• requests are served with (possibly long) delays (from 1 second to a few hundred
seconds);
• 500, 502, 503, 504 HTTP errors are returned to clients (sometimes also unrelated
404 error or even 408 error may be returned);
• TCP connections are refused or reset (interrupted) before any content is sent to
clients;
• in very rare cases, only partial contents are sent (but this behavior may well be
considered a bug, even if it usually depends on unavailable system resources).

Anti-overload techniques
To partially overcome above load limits and to prevent overload, most popular web sites
use common techniques like:

• managing network traffic, by using:


o Firewalls to block unwanted traffic coming from bad IP sources or having
bad patterns;
o HTTP traffic managers to drop, redirect or rewrite requests having bad
HTTP patterns;
o Bandwidth management and traffic shaping, in order to smooth down
peaks in network usage;
• deploying web cache techniques;
• using different domain names to serve different (static and dynamic) content by
separate Web servers, i.e.:
o http://images.example.com
o
o http://www.example.com
o
• using different domain names and/or computers to separate big files from small
and medium sized files; the idea is to be able to fully cache small and medium
sized files and to efficiently serve big or huge (over 10 - 1000 MB) files by using
different settings;
• using many Web servers (programs) per computer, each one bound to its own
network card and IP address;
• using many Web servers (computers) that are grouped together so that they act or
are seen as one big Web server, see also: Load balancer;
• adding more hardware resources (i.e. RAM, disks) to each computer;
• tuning OS parameters for hardware capabilities and usage;
• using more efficient computer programs for web servers, etc.;
• using other workarounds, especially if dynamic content is involved.

Historical notes

In 1989 Tim Berners-Lee proposed to his employer CERN (European Organization for
Nuclear Research) a new project, which had the goal of easing the exchange of
information between scientists by using a hypertext system. As a result of the
implementation of this project, in 1990 Berners-Lee wrote two programs:

• a browser called WorldWideWeb;


• the world's first web server, which ran on NeXTSTEP.

Between 1991 and 1994 the simplicity and effectiveness of early technologies used to
surf and exchange data through the World Wide Web helped to port them to many
different operating systems and spread their use among lots of different social groups of
people, first in scientific organizations, then in universities and finally in industry.
In 1994 Tim Berners-Lee decided to constitute the World Wide Web Consortium to
regulate the further development of the many technologies involved (HTTP, HTML, etc.)
through a standardization process.

The following years are recent history which has seen an exponential growth of the
number of web sites and servers.

Market structure

iven below is a list of top Web server software vendors published in a Netcraft survey in
April 2008.

Vendor Product Web Sites Hosted Percent


Apache Apache 83,206,564 50.22%
Microsoft IIS 58,540,275 35.33%
Google GWS 10,075,991 6.08%
Oversee Oversee 1,926,812 1.16%
lighttpd lighttpd 1,495,308 0.9%
nginx nginx 1,018,503 0.61%
Others - 9,432,775 5.69%
Total - 165,696,228 100.00%

There are hundreds of different web server programs available, many of which are
specialized for very specific purposes, so the fact that a web server is not very popular
does not necessarily mean that it has a lot of bugs or poor performance.

See Category:Web server software for a longer list of HTTP server programs.

Comparison of web server software


Overview
Cost Open Software Last stable Release
Server Creator
(USD) source license version date
Abyss Web Server Aprelium Free - $59 No proprietary
2006-
And-httpd James Antill Free Yes LGPL 0.99.11
09-11
AOLserver
AOLserver NaviSoft Free Yes Public
License
Apache
Apache 2008-
Apache HTTP Server Software Free Yes 2.2.8
License 01-19
Foundation
Apache
Apache 2008-
Apache Tomcat Software Free Yes 6.0.16
License 02-07
Foundation
Working
$29.99–
BadBlue Resources No proprietary
$59.99
Inc.
BarracudaDrive Application Real Time 2008-
Free/$70 No proprietary 3.9
Server Logic 05-09
2002-
Boa Paul Phillips Free Yes GPL 0.94.13
07-30
Matthew R. 2008-
bozohttpd Free Yes BSD variant 20080303
Green 03-03
The Caudium 2007-
Caudium Free Yes GPL 1.4.12
Group 12-16
Alvaro Lopez 2008-
Cherokee HTTP Server Free Yes GPL 0.6.0
Ortega 03-17
Included in
Corel
Corel Web Server Borland No proprietary
Paradox
version ≥ 9
Seanox
2008-
Devwex Software Free No proprietary 1.2008.0524
05-24
Solutions
Boost
dlib C++ http server Davis E. King Free Yes Software
License
Freeware
Fastream with the
Fastream IQ Web/FTP Server No proprietary
Technologies option to
upgrade
Felix von 2005-
Fnord Free Yes GPL 1.10
Leitner 09-28
2008-
Hiawatha Hugo Leisink Free Yes GPL 6.5
03-08
2007-
HFS Rejetto Free Yes GPL 2.2
07-18
Hewlett-
HP-UX NSA
Packard
Oliver 2007-
hssTVS Free No proprietary 0.230e
Baumgärtel 07-30
2006-
IBM HTTP Server IBM Free No proprietary 6.1
07-21
Included
IceWarp
IceWarp Server with mail No proprietary
Software
server
Included
with newer
Internet Information Services
Microsoft Windows No proprietary
(IIS)
NT Family
products
Mort Bay Apache 2007-
Jetty Free Yes 6.1.6
Consulting License 11-18
W3C
Jigsaw W3C Free Yes
License[1]
JRun Adobe $899.00 No proprietary
KF Web Server KeyFocus Free No proprietary
Functional
Object
The Open
Koala Web Server Free Yes Library
Dylan Group
Public
License
Jan Kneschke 2008-
lighttpd Free Yes BSD variant 1.4.19
(Incremental) 03-10
LiteSpeed
LiteSpeed Web Server Free to $799 No proprietary
Technologies
Michiel
Mathopd Free Yes BSD variant
Boland
Jef Poskanzer
micro_httpd for ACME Free Yes BSD variant
Laboratories
Jef Poskanzer
mini_httpd for ACME Free Yes BSD variant
Laboratories
Monkey HTTP Daemon Eduardo Silva Free Yes GPL
MyServer
MyServer Free Yes GPL
Project
NaviServer Various Free Yes MPL 1.1
Non-
Free for
commercial
Robert Non-
NCSA HTTPd use free, Yes 1.5.2a
McCool Commercial
Commercial
Use
use with fee
2008-
Nginx Igor Sysoev Free Yes BSD variant 0.6.31
05-12
Marcus
nhttpd Free Yes BSD variant
Glocker
Null httpd NullLogic Free Yes GPL 0.5.1
Nigel
nweb Griffiths, Free Yes proprietary
IBM
PPS -
Université
Ocsigen Free Yes LGPL
Paris Diderot
- CNRS
Max Krohn,
OKWS Free Yes GPL [2]
MIT
OpenKeta
OpenKETA Free Yes BSD variant
Project
Free & GPL and
OpenLink
OpenLink Virtuoso Commercial Yes Commercial
Software
Versions Versions
Oracle Free &
Oracle HTTP Server Technology Commercial No proprietary
Network Versions
Daniel J.
publicfile Free ? ?
Bernstein
Accoria
Rock Web Server $2000+ No proprietary
Networks
Roxen Roxen Free Yes GPL
Internet
Software
Michael
Savant Web Server Free Yes GPL
Lamont
SHTTPD Sergey Lubka Free Yes BSD variant
Sun
Sun Java System Web Server Free No proprietary
Microsystems
Jef Poskanzer
thttpd for ACME Free Yes BSD variant 2.25b
Laboratories
TUX web server Ingo Molnár Free Yes GPL
TV's server TV's software Free No proprietary
UltiDev Cassini Web Server UltiDev LLC Free No proprietary
Web/2 Dink Free No proprietary
BEA
Weblogic $9000+ No proprietary
Weblogic
Free with
Apple
WebObjects Mac OS X No proprietary
Computer
Server 10.4
WASD Mark Daniel Free Yes GPL
The Kepler GPL
Xavante Free Yes
Project compatible
iMatix Free / $99
Xitami No proprietary
Corporation for Pro
Claes 2008-
Yaws Free Yes BSD variant 1.76
Wikström 04-03
Zeus
Zeus Web Server £1100+ No proprietary
Technology
ZwebServer Zotag Search Free No proprietary 1.0.1
Open Software Last stable Release
Server Creator Cost (USD)
source license version date

[edit] Features
Security Dynamic content[3]
R
uns
in
basic digest virtua user
Administr
Server access access l CG FastC Servl ASP.N spac
https SSI ation IPv6
authentica authentica hostin I GI et ET e or
console
tion tion g kern
el
spac
e
paid Yes on
Abyss Web
Yes No Yes versio Yes Yes No Yes Windo user Yes ?
Server
n ws
And-httpd Yes No No Yes No No No Yes No user ? ?
-
via
too
ls
AOLserver Yes No Yes Yes Yes No No Yes ? user ? ?
Apache
HTTP Yes Yes Yes Yes Yes Yes No[4] Yes No[5] user Yes Yes
Server
Apache
Yes Yes Yes Yes Yes No Yes Yes No user Yes ?
Tomcat
BadBlue Yes ? ? ? Yes ? ? ? ? ? ? ?
Yes
Barracuda via
Yes Yes Yes Yes Yes No No No user Yes Yes
Drive LS
P
Boa No No No Yes Yes No No No No user ? Yes
bozohttpd Yes No Yes Yes Yes No No No No user No Yes
Yes[6]
Caudium Yes Yes Yes Yes Yes Yes Yes Yes ? user ? (unconfir
med)
Cherokee
HTTP Yes Yes Yes Yes Yes Yes No Yes No user Yes Yes[7]
Server
Corel Web N
Yes No No No No No No No user Yes ?
Server o[8]
Devwex Yes No Yes Yes Yes No No Yes No user Yes ?
Fastream
IQ
Yes Yes Yes Yes Yes Yes No No ? user Yes ?
Web/FTP
Server
Fnord Yes ? ? Yes Yes No No No ? user ? ?
Hiawatha Yes Yes Yes Yes Yes Yes No No No user Yes Yes
HFS Yes No No No No No No No ? ? ? ?
HP-UX kern
No No No ? No No No No No Yes ?
NSA el
hssTVS No No No[9] Yes No No No No ? user No ?
IBM HTTP
Yes Yes Yes Yes Yes Yes ? Yes No user Yes ?
Server
IceWarp
Yes Yes Yes Yes Yes Yes ? Yes Yes user Yes Yes
Server
kern
Internet el
Informatio Yes Yes Yes Yes Yes Yes No[10] Yes Yes and Yes Yes
n Services user[
11]

JBoss Web Yes Yes Yes Yes Yes No Yes Yes Yes user ? ?
Jetty ? ? ? ? Yes ? Yes ? ? user ? ?
Jigsaw Yes Yes ? Yes Yes ? Yes ? ? user ? ?
JRun Yes Yes Yes Yes Yes No Yes Yes No user ? ?
Koala Web
No No No Yes No No No ? ? user ? ?
Server
[4] [5]
lighttpd Yes Yes Yes Yes Yes Yes No Yes No user ? Yes
Linux kern
No No No ? No No No No No No ?
khttpd el
LiteSpeed Yes Yes Yes Yes Yes Yes No[4] No ? user Yes ?
Web Server
Mathopd Yes ? ? Yes Yes ? ? ? ? user No ?
micro_http
No ? No Yes No No No No ? user ? No
d
mini_httpd Yes ? Yes Yes Yes No No No ? user ? Yes
Monkey
HTTP No No No Yes Yes No No No ? user ? ?
Daemon
MyServer Yes Yes Yes Yes Yes Yes ? ? ? user Yes ?
NaviServer Yes No Yes Yes Yes No No No ? user Yes ?
NCSA Partial
Yes Yes ? Yes ? No Yes No user ? ?
HTTPd[12] [13]

Nginx Yes No Yes Yes No Yes No Yes No user ? No


nhttpd Yes No Yes Yes Yes No No No No user ? Yes
Null httpd No No No No Yes No No No No user No No
nweb No No No No No No No No No user No No
Ocsigen Yes ? Yes Yes Yes No No No No user ? Yes
kern
OpenKETA No No No No No No No No ? ? ?
el
OpenLink
Yes Yes Yes Yes No No Yes Yes ? ? ? ?
Virtuoso
Oracle
HTTP Yes ? Yes Yes Yes Yes No Yes No user ? ?
Server[14]
publicfile No No No Yes No No No No No user No No
Rock Web
Yes Yes Yes Yes Yes No No[15] No ? ? ? ?
Server
Roxen Yes Yes Yes Yes Yes Yes Yes Yes ? user ? ?
Savant Web
? ? No ? Yes No No No No user Yes ?
Server[16]
SHTTPD No Yes Yes No Yes No No Yes No user Yes ?
Solaris kern
? ? ? ? ? ? ? ? ? ? ?
NCA el
SPIN kern
? ? ? ? ? ? ? ? ? ? ?
webserver el
Sun Java
System Yes Yes Yes Yes Yes Yes Yes Yes No user Yes Yes
Web Server
thttpd Yes ? No Yes Yes No No No No user ? Yes
TUX web kern
No No No Yes Yes No No No No ? ?
server el
TV's server No Yes No[9] Yes Yes No No No No user Yes Yes
UltiDev
Cassini ? ? No ? No No No No Yes ? ? ?
Web Server
WASD Yes Yes Yes Yes Yes Yes No Yes ? user Yes ?
Web/2 Yes ? ? Yes Yes ? ? ? ? user ? ?
Xavante Yes ? ? ? Yes ? ? ? ? user ? ?
paid
Xitami Yes ? versi Yes Yes ? ? Yes ? user ? ?
on
Yaws Yes ? Yes Yes Yes ? ? Yes ? user ? ?
Zeus Web
Yes Yes Yes Yes Yes Yes No[4] Yes ? user ? ?
Server
ZwebServe
No No No No No No No No No user Yes Yes
r
Security Dynamic content[17]
R
uns
in
basic digest virtua user
Administr
Server access access l CG FastC Servl ASP.N spac
https SSI ation IPv6
authentica authentica hostin I GI et ET e or
console
tion tion g kern
el
spac
e

[edit] Operating system support


Windows Mac OS Linux Solaris eCS OpenVMS AIX z/OS
Server BSD
X
Abyss Web
Yes Yes Yes Yes Yes No No ? ?
Server
And-httpd No Yes Yes Yes Yes No No ? ?
AOLserver Yes Yes Yes Yes Yes No No ? ?
Apache
HTTP Yes Yes Yes Yes Yes Yes Yes Yes Yes
Server
Apache
Yes Yes Yes Yes Yes No ? Yes Yes
Tomcat
BadBlue Yes No No No No No No ? ?
Boa ? ? Yes Yes ? No No ? ?
bozohttpd[18 Yes (see see see
] see note see note Yes Yes see note see note
note) note note
[19]
Caudium No Yes Yes Yes Yes No No Yes ?
Cherokee
HTTP Yes Yes Yes Yes Yes No No ? ?
Server
Corel Web
Yes No No No No No No No No
Server
Devwex Yes Yes Yes Yes Yes ? ? ? ?
Fastream
IQ
Yes No No No No No No No No
Web/FTP
Server
Fnord ? ? Yes ? ? No No ? ?
Yes
Hiawatha Yes Yes Yes Yes No No ? ?
(Cygwin)
HFS Yes No No No No No No No No
HP-UX
No No No No No No No No No
NSA
hssTVS No No Yes No No No No No No
IBM HTTP
Yes No Yes No Yes ? No Yes Yes
Server
IceWarp
Yes No Yes No No No No No No
Server
Internet
Information Yes No No No No No No No No
Services
Jetty Yes Yes Yes ? Yes ? No ? ?
Jigsaw Yes Yes Yes Yes Yes No No ? ?
JRun Yes Yes Yes ? Yes ? No ? ?
Yes
Koala Web
Yes No Yes (FreeBSD No No No No No
Server
)
lighttpd Yes Yes Yes Yes Yes No No ? ?
Linux
No No Yes No No No No No No
khttpd
LiteSpeed
No Yes Yes Yes Yes No No ? ?
Web Server
Mathopd ? ? Yes Yes ? No No ? ?
micro_http
(cygwin?) Yes Yes Yes Yes No No ? ?
d
mini_httpd (cygwin?) Yes Yes Yes Yes No No ? ?
Monkey
HTTP No No Yes No No No No ? ?
Daemon
MyServer Yes Yes Yes Yes Yes ? ? ? ?
NaviServer Yes Yes Yes Yes Yes ? ? Yes ?
NCSA
? ? Yes Yes Yes No No ? ?
HTTPd
Nginx (cygwin?) Yes Yes Yes Yes No No ? ?
nhttpd No Yes Yes Yes No No No ? ?
Null httpd Yes ? Yes ? ? No No ? ?
nweb No No Yes No Yes No No Yes ?
Ocsigen No Yes Yes Yes Yes ? ? ? ?
Yes
Planned
OpenKETA No No (FreeBSD No No No ? ?
in future
)
OpenLink
Yes Yes Yes Yes Yes No No ? ?
Virtuoso
Oracle
HTTP ? ? Yes ? Yes No No Yes ?
Server
publicfile No ? Yes Yes ? ? ? ? ?
Rock Web
No No Yes No Yes No No ? ?
Server
Roxen Yes Yes Yes Yes Yes No No ? ?
Savant Web
Yes No No No No No No No No
Server
SHTTPD Yes Yes Yes Yes Yes ? ? Yes ?
Sun Java Yes No Yes No Yes No No No ?
System Web
Server
Yes
thttpd Yes Yes Yes Yes No No ? ?
(cygwin)
TUX web
No No Yes No No No No No No
server
TV's server Yes No No No No No No No No
UltiDev
Cassini Yes No No No No No No No No
Web Server
WASD No No No No No No Yes No No
Web/2 Yes No No No No Yes No ? ?
Xavante Yes Yes Yes Yes Yes No No ? ?
Xitami Yes ? Yes Yes ? Yes No ? ?
Yaws Yes Yes Yes Yes Yes No No Yes ?
Yes
Zeus Web PowerPC
No Yes (FreeBSD Yes No No ? ?
Server -only
)
ZwebServer Yes ? No No No No No No No
Mac OS
Server Windows Linux BSD Solaris eCS OpenVMS AIX z/OS
X

You might also like