This document provides an overview of the internal architecture and components of the Apache web server. It discusses how the modular design of Apache allows it to support dynamic and multi-protocol functionality. The key components described include the multi-processing modules (MPMs) that handle server processes, hooks that allow modules to modify server behavior, content handling modules like PHP and Perl, connector modules that interface with external applications, filters that modify request/responses, and access/authentication/authorization modules. It also provides a high-level description of how Apache processes a request internally through its various phases and hooks.
2. Overview
● How to Evolution of the Web Affected the
Design of Web Servers
● The Modular Architecture of the Apache Web
Server and The Benefits that Each Component
Provides
● How Apache Processes a Request Internally
6. Additional MPMs
● Perchild MPM
Maintains several process running under different user IDs.
7. MPM Selection and Compatibilty
● MPM Selection Depends on many Factors :
● Support for Specific Third-Party Modules and
Functionality
● Some MPMs Perform Better in Certain Platform
● Threaded MPM is preferred in most Unix
platforms, including Linux and Solaris.
8. Hooks
● A Hook is Mechanism that Enable Apache
Modules to Modify the Behavior of the Server or
Other Modules
● Some of the Hooks that Apache Provides :
● Connection Phase
● Authorization
● Header Modification
● Content Handling
9. Multi-Protocol Support
● Apache 2.0 can be Extended to Process
Protocols Other Than HTTP
● mod_ftp
● mod_pop3
10. Content-Handling Modules
● Content Handlers and Generators are Modules
that Provides the Content that will be Returned
to the Browsers.
● PHP5
● mod_perl
12. Filters
● You can Think of the Filtering Architecture in
Apache as a Factory Assembly Line. Filters are
Workers in the Factory, and Request and
Responses are the Item Traveling in the Line.
● Encryption
● Compression
● Watermarking
● Virus Scanning
● Session Tracking
13. Access/Authentication/Authorization
Modules
● These Modules Provides Mechanisms to Authenticate the Identify of
a User and to Restrict Access to Spesific Resource
● The Restriction Can be Done By
– Identify of the User
– Network Information (Such As the Client IP Address or Protocol Used)
– The Type of Resource Being Accessed
● There are Apache Authentication Modules for Difference Backend
● Unix-Style Password Files
● LDAP
● Barkeley-Style Databases
● Oracle
● Network Information Services (NIS)
14. Apache Portable Runtime (APR)
● APR is Common Library for Platform-Dependent Functionality
● APR is Divided into Core Libraries (Fundamental Portable Functions) and
APR Util (Other Code that Needs to be Portable).
● APR Core Covers the Following :
● File Creation and Manipulation
● Socket Programming
● Threads and Processes
● String Management
● Shared Memory
● APR Util Covers These Areas :
● DBM Database Abstraction Layer
● XML Library
● Digest
● Base64 Encoding
16. A Day in the Life of a Request
● Apache Startup
● Request Process
● Checking for Hooks
● URI Translation Phase
● Access Control Phase
● Authentication
● Authorization
● MIME-Type Checking
● Filters
● Content Handler
● Logging
● Cleanup