1.5. What Happens at the Server End?
We assume that
the server is well set up and running Apache. What does Apache do? In
the simplest terms, it gets a URL from the Internet, turns it into a
filename, and sends the file (or its output) back down the
Internet. That's all it does, and that's all this book is
We'll see later that some URLs may refer to information
generated completely within Apache.
Three main cases arise:
The Unix server has a standalone Apache that listens to one or more
ports (port 80 by default) on one or more IP addresses mapped onto
the interfaces of its machine. In this mode (known as
), Apache actually runs several copies of
itself to handle multiple connections simultaneously.
The server is configured to use the Unix utility
, which listens on all ports it is
configured to handle. When a connection comes in, it determines from
/etc/inetd.conf, which service that port
corresponds to and runs the configured program, which can be an
Apache in inetd mode. It is worth noting that some of
the more advanced features of Apache are not supported in this mode,
so it should only be used in very simple cases. Support for this mode
may well be removed in future releases of Apache.
On Windows, there is a single process with multiple threads. Each
thread services a single connection. This currently limits Apache to
64 simultaneous connections, because there's a system limit of
64 objects for which you can wait at once. This is something of a
disadvantage because a busy site can have several hundred
simultaneous connections. It will probably be improved in Apache 2.0.
All the cases boil down to an Apache with an incoming connection.
Remember our first statement in this section, namely, that the object
of the whole exercise is to resolve the incoming request into a
filename, a script, or some data generated internally on the fly.
Apache thus first determines which IP address and port number were
used by asking the operating system where the connection is
connecting to. Apache then uses the IP address, port number -- and
the Host header in HTTP/1.1 -- to decide which
virtual host is the target of this request. The virtual host then
looks at the path, which was handed to it in the request, and reads
that against its configuration to decide on the appropriate response,
which it then returns.
Most of this book is about the possible appropriate responses and how
Apache decides which one to use.
Copyright © 2001 O'Reilly & Associates. All rights reserved.