Out of the box, the Apache HTTP server comes with very basic functionality - just enough to serve up some simple html pages. This functionality is packaged in the "core" modules. However, it is quite trivial to extend the apache HTTP server through additional compiled modules.
Adding and configuring modules in Apache HTTP server
Every module for the Apache HTTP server generally has unique installation requirements based upon the host operating system, so your best bet to avoid complications is to visit the official web site of that module and follow their installation instructions. However, after they are installed, compiled modules are almost universally configured within Apache's httpd.conf file. While this file may seem complex at first glance, there is plenty of documentation available to make configuration a snap.
Modules included with Apache HTTP server
A default apache HTTP server installation comes with a variety of optional modules in addition to its core modules. The functionality of the most popular optional modules is listed below.
- mod_access: Lets the Apache HTTP server restrict access to specific hosted resources, based upon identifying characteristics of the client request. Examples are filtering based upon IP address or web browser type.
- mod_auth and variants: Provides user authentication services for the Apache HTTP server. There are several versions of this module depending on how the users are authenticated. Examples are authentication from text files, from active directory entities, or from database entries.
mod_cgi: Allows the apache HTTP server to execute CGI scripts. While mod_cgi is the default module for this functionality, there are several additional variants such as mod_fast_cgi, which promises performance boosts to CGI script execution.
- mod_cache: Caches (temporarily stores) frequently accessed content to speed up responses and reduce the load on the Apache HTTP server. There are several alternative versions of this module, such as mod_mem_cache.
- mod_ssl: Provides an interface between OpenSSL and the Apache HTTP server to facilitate encryption for connections over SSL (secure socket layer) and TLS (transport layer security). This is by far one of the most popular modules in use, as encrypted connections are vital whenever important information is transmitted across the Internet.
Popular add-in modules for Apache HTTP server
In addition to the optional modules included with a basic Apache HTTP server installation, there is also a plethora of free modules that are available to further extend the functionality of the Apache HTTP server. Some of the most popular such modules are:
- PHP: By far the most popular module for the apache HTTP server, this module allows the server to execute PHP scripts or pages. This module is a vital cornerstone of the LAMP (Linux, Apache, MySQL, PHP) platform.
- FrontPage: Another very popular module, which allows the Apache HTTP server to use Microsoft Frontpage server extensions.
- mod_perl: A very powerful module, which adds a persistent Perl interpreter to the Apache HTTP server. Since the interpreter is fully integrated and persistent, there is no need to spawn an additional process for an external interpreter as is required with mod_cgi, which means less overhead and faster responses for your users. There are a plethora of modules written for mod_perl, with functionality ranging from serving dynamic content, to templating pages, to managing database connections.
- mod_python: Similar to mod_perl, this module adds a persistent Python interpreter to the Apache HTTP server. This allows you to use server web applications written in Python that will run several times faster than if they were run using mod_cgi. Since the interpreter is embedded within the Apache HTTP server it has access to Apache functions, and since it doesn't operate in a temporary spawned process it has the ability to maintain database connections.
Introduction to the Apache HTTP Server
Learn the basics of the Apache server, including how to extend its capabilities through compiled modules.
- Web Development 101: Apache Server
- Extending Apache HTTP server with Compiled Modules