Apache Multiprocessing Modules
Apache version 2.0 and greater now uses a new internal architecture supporting multiprocessing modules (MPMs). These modules are used by the server for a variety of tasks, such as network and process management, and are compiled into Apache. MPMs enable Apache to work much better on a wider variety of computer platforms, and they can help improve server stability, compatibility, and scalability.
Apache can use only one MPM at any time. These modules are different from the base set included with Apache (see the "Apache Modules" section later in this chapter), but are used to implement settings, limits, or other server actions. Each module in turn supports numerous additional settings, called directives , which further refine server operation.
The internal MPM modules relevant for Linux include the following:
► mpm_common— A set of 20 directives common to all MPM modules
► prefork— A nonthreaded, preforking web server that works similar to earlier (1.3) versions of Apache
► worker— Provides a hybrid multiprocess multithreaded server
MPM enables Apache to be used on equipment with fewer resources, yet still handle massive numbers of hits and provide stable service. The workermodule provides directives to control how many simultaneous connections your server can handle.
NOTE
Other MPMs are available for Apache related to other platforms, such as mpm_netwarefor NetWare hosts and mpm_winntfor Windows NT platforms. An MPM named perchild, which provides user ID assignment to selected daemon processes, is under development. For more information, browse to the Apache Software Foundation's home page athttp://www.apache.org/.
Using .htaccessConfiguration Files
Apache also supports special configuration files, known as .htaccessfiles. Almost any directive that appears in httpd.confcan appear in an .htaccessfile. This file, specified in the AccessFileNamedirective in httpd.conf(or srm.confprior to version 1.3.4) sets configurations on a per-directory (usually in a user directory) basis. As the system administrator, you can specify both the name of this file and which of the server configurations can be overridden by the contents of this file. This is especially useful for sites in which there are multiple content providers and you want to control what these people can do with their spaces.
To limit which server configurations the .htaccessfiles can override, use the AllowOverridedirective. AllowOverridecan be set globally or per directory. For example, in your httpd.conffile, you could use the following:
# Each directory to which Apache has access can be configured with respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories).
#
# First, it's best to configure the "default" to be a very restrictive set of
# permissions.
#
Options FollowSymLinks
AllowOverride None
To configure which configuration options are available to Apache by default, you must use the Optionsdirective. Optionscan be None; All; or any combination of Indexes, Includes, FollowSymLinks, ExecCGI, and MultiViews. MultiViewsisn't included in Alland must be specified explicitly. These options are explained in Table 17.2.
TABLE 17.2 Switches Used by the OptionsDirective
| Switch |
Description |
None |
None of the available options are enabled for this directory. |
All |
All the available options, except for MultiViews, are enabled for this directory. |
Indexes |
In the absence of an index.htmlfile or another DirectoryIndexfile, a listing of the files in the directory is generated as an HTML page for display to the user. |
Includes |
Server-side includes (SSIs) are permitted in this directory. This can also be written as IncludesNoExecif you want to allow includes but don't want to allow the execoption in them. For security reasons, this is usually a good idea in directories over which you don't have complete control, such as UserDirdirectories. |
FollowSymLinks |
Allows access to directories that are symbolically linked to a document directory. You should never set this globally for the whole server and only rarely for individual directories. This option is a potential security risk because it allows web users to escape from the document directory and could potentially allow them access to portions of your file system where you really don't want people poking around. |
ExecCGI |
CGI programs are permitted in this directory, even if it isn't a directory defined in the ScriptAliasdirective. |
MultiViews |
This is part of the mod_negotiation module. When a client requests a document that can't be found, the server tries to figure out which document best suits the client's requirements. See http://localhost/manuals/mod/_mod_negotiation.html for your local copy of the Apache documentation. |
NOTE
These directives also affect all subdirectories of the specified directory.
AllowOverridesDirectives
The AllowOverridesdirectives specify which configuration options .htaccessfiles can override. You can set this directive individually for each directory. For example, you can have different standards about what can be overridden in the main document root and in UserDirdirectories. This capability is particularly useful for user directories, where the user doesn't have access to the main server configuration files.
AllowOverridescan be set to Allor any combination of Options, FileInfo, AuthConfig, and Limit. These options are explained in Table 17.3.
TABLE 17.3 Switches Used by the AllowOverridesDirective
| Switch |
Description |
Options |
The .htaccessfile can add options not listed in the Optionsdirective for this directory. |
FileInfo |
The .htaccessfile can include directives for modifying document type information. |
AuthConfig |
The .htaccessfile might contain authorization directives. |
Limit |
The .htaccessfile might contain allow, deny, and orderdirectives. |
File System Authentication and Access Control
You're likely to include material on your website that isn't supposed to be available to the public. You must be able to lock out this material from public access and provide designated users with the means to unlock the material. Apache provides two methods for accomplishing this type of access: authentication and authorization. You can use different criteria to control access to sections of your website, including checking the client's IP address or hostname, or requiring a username and password. This section briefly covers some of these methods.
Читать дальше