| |
| |
Introduction | |
| |
| |
| |
Apache Basics | |
| |
| |
Discovering Apache | |
| |
| |
Determining Whether Apache Is Already Installed | |
| |
| |
Installing Apache 1.3 on Linux and Unix | |
| |
| |
Installing Apache 2.0 on Linux and Unix | |
| |
| |
Installing Apache on Windows | |
| |
| |
Configuration File Basics | |
| |
| |
Using Multiple Configuration Files | |
| |
| |
Starting, Stopping, and Restarting Apache | |
| |
| |
Changing the Address and Port Apache Uses | |
| |
| |
Changing the User Apache Runs As | |
| |
| |
Specifying a Server Name | |
| |
| |
Providing an Icon for my Web Page | |
| |
| |
Discovering the Modules Available on the Server | |
| |
| |
Enabling and Disabling Individual Modules | |
| |
| |
Adding Modules after Compiling Apache Without Recompiling | |
| |
| |
Publishing Content | |
| |
| |
Default Apache Directive Containers | |
| |
| |
Directive Containers for Conditional Evaluation | |
| |
| |
| |
Troubleshooting | |
| |
| |
Help! My Apache Server Does Not Work! | |
| |
| |
The Error Log | |
| |
| |
Logging to the System Log Daemon | |
| |
| |
Controlling the Amount of Information Logged | |
| |
| |
Testing the Apache Configuration for Problems | |
| |
| |
Testing Apache from the Command Line | |
| |
| |
Checking That Apache Is Running | |
| |
| |
Alternate Ways of Stopping Apache | |
| |
| |
Using Apache to Debug Apache | |
| |
| |
Startup Errors | |
| |
| |
Syntax Error | |
| |
| |
Address Already in Use | |
| |
| |
Could Not Bind to Port | |
| |
| |
Module Not Compatible | |
| |
| |
Name Resolution | |
| |
| |
Cannot Open Log or Configuration File | |
| |
| |
Access Denied Errors | |
| |
| |
Internal Server Errors | |
| |
| |
Segmentation Faults | |
| |
| |
Premature End of Script Headers | |
| |
| |
Malformed Headers | |
| |
| |
Additional Error Log Files | |
| |
| |
Redirections Do Not Work | |
| |
| |
Troubleshooting Checklist | |
| |
| |
Starting the Server | |
| |
| |
Connecting to the Server | |
| |
| |
Document Not Found | |
| |
| |
Access Forbidden | |
| |
| |
Internal Server Errors | |
| |
| |
If All Else Fails | |
| |
| |
| |
Logs and Monitoring | |
| |
| |
Introduction to Logging in Apache | |
| |
| |
Default Apache Log Files | |
| |
| |
Creating Log Formats | |
| |
| |
Creating a Custom Log File | |
| |
| |
Redirecting Logs to an External Program | |
| |
| |
Logging Requests Conditionally | |
| |
| |
Monitoring Who Is Linking to Your Website | |
| |
| |
Monitoring Apache with mod_status | |
| |
| |
Monitoring Apache with SNMP | |
| |
| |
Analyzing Your Logs with Open-source Tools | |
| |
| |
Monitoring Your Logs in Real Time | |
| |
| |
Logging Requests to a Database | |
| |
| |
Rotating and Archiving Logs | |
| |
| |
Controlling IP Address Resolution | |
| |
| |
Processing Logged IP Addresses | |
| |
| |
Restarting Apache Automatically If It Fails | |
| |
| |
Merging and Splitting Log Files | |
| |
| |
Keeping Separate Logs for Each Virtual Host | |
| |
| |
Common Log Entries | |
| |
| |
| |
URL Mapping and Dynamic Content | |
| |
| |
URL Mapping | |
| |
| |
Mapping URLs to Files with Alias | |
| |
| |
Mapping URL Patterns to Files with AliasMatch | |
| |
| |
Redirecting a Page to Another Location | |
| |
| |
Redirecting to the Latest Version of a File | |
| |
| |
Redirecting Failed or Unauthorized Requests | |
| |
| |
Defining Content Handlers | |
| |
| |
Understanding MIME Types | |
| |
| |
Configuring MIME Types | |
| |
| |
Basics of Running CGI Scripts | |
| |
| |
Marking Resources As Executable CGIs | |
| |
| |
Associating Scripts with HTTP Methods and MIME Types | |
| |
| |
Troubleshooting the Execution of CGI Scripts | |
| |
| |
Improving CGI Script Performance | |
| |
| |
Understanding Server Side Includes | |
| |
| |
Configuring Server Side Includes | |
| |
| |
Setting Environment Variables | |
| |
| |
Setting Environment Variables Dynamically | |
| |
| |
Special Environment Variables | |
| |
| |
Understanding Content Negotiation | |
| |
| |
Configuring Content Negotiation | |
| |
| |
Assigning Default Charsets and Language Priorities | |
| |
| |
Advanced URL Mapping with mod_rewrite | |
| |
| |
Understanding the "Trailing Slash" Problem | |
| |
| |
Fixing Spelling Mistakes | |
| |
| |
Fixing Capitalization Problems | |
| |
| |
Validating Your Pages with Tidy | |
| |
| |
| |
Virtual Hosting | |
| |
| |
What Is Virtual Hosting? | |
| |
| |
What Is IP-based Virtual Hosting? | |
| |
| |
Configuring IP-based Virtual Hosting | |
| |
| |
What Is Name-based Virtual Hosting? | |
| |
| |
Configuring Name-based Virtual Hosting | |
| |
| |
What Happens If a Request Does Not Match Any Virtual Host? | |
| |
| |
Configuring a Default Name-based Virtual Host | |
| |
| |
Configuring a Default IP-based Virtual Host | |
| |
| |
Mixing Name-based and IP-based Virtual Hosts | |
| |
| |
Debugging Virtual Host Setups | |
| |
| |
Using SSL with Name-based Virtual Hosts | |
| |
| |
Alternate Virtual Hosting | |
| |
| |
Alternate Virtual Hosting Modules | |
| |
| |
Per-directory Configuration Files | |
| |
| |
Controlling the Scope of Per-directory Configuration Files | |
| |
| |
Disabling Per-directory Configuration Files | |
| |
| |
| |
Security and Access Control | |
| |
| |
Understanding the Need for Access Control | |
| |
| |
Differences Between Apache Versions | |
| |
| |
Understanding Basic and Digest Authentication | |
| |
| |
Introducing Apache Access Control | |
| |
| |
Introducing Apache Authorization and Authentication Configuration | |
| |
| |
Creating a User Database | |
| |
| |
Using Require to Authorize Users and Groups | |
| |
| |
Handling a Large Number of Users | |
| |
| |
Allowing Access Only to Specific IP Addresses | |
| |
| |
Denying Access to Specific IP Addresses | |
| |
| |
Combining Access Control Methods | |
| |
| |
Customizing Your Access Denied Page | |
| |
| |
Putting Users in Control | |
| |
| |
Denying Access to System and Sensitive Files | |
| |
| |
Restricting Program Execution | |
| |
| |
Preventing Abuse | |
| |
| |
Disabling Directory Listings | |
| |
| |
Changing the Server: Header | |
| |
| |
Preventing Hotlinking to Your Images | |
| |
| |
Restricting Specific HTTP Methods | |
| |
| |
Restricting Access Based on the Browser Type | |
| |
| |
Using Location and Directory Sections | |
| |
| |
Additional Authentication Modules | |
| |
| |
mod_security | |
| |
| |
Apache 2.2 | |
| |
| |
Keeping Up to Date with Apache Security | |
| |
| |
Security Checklist | |
| |
| |
Disable Unneeded Modules | |
| |
| |
Remove Sample Scripts | |
| |
| |
Limit or Disable CGI Execution and SSI | |
| |
| |
Check File Permissions | |
| |
| |
Limit or Disable Proxy Functionality | |
| |
| |
Restrict Access to Your Server by Default | |
| |
| |
| |
SSL/TLS | |
| |
| |
What Is SSL? | |
| |
| |
How Does SSL Work? | |
| |
| |
Compiling OpenSSL | |
| |
| |
Encryption Keys | |
| |
| |
Creating a Key Pair | |
| |
| |
Creating a Password-protected Key Pair | |
| |
| |
Remove the Password from a Key | |
| |
| |
Certificates | |
| |
| |
Creating a Certificate Signing Request | |
| |
| |
Showing the Contents of a Certificate Signing Request | |
| |
| |
Creating a Self-signed Certificate | |
| |
| |
Compiling SSL Support in Apache 1.3 | |
| |
| |
Compiling SSL Support in Apache 2.x | |
| |
| |
Minimal Apache Configuration | |
| |
| |
Starting Apache with SSL Support | |
| |
| |
SSLPassPhraseDialog | |
| |
| |
Improving SSL Performance | |
| |
| |
Forcing All Content to Be Served Using SSL | |
| |
| |
SSL and Name-based SSL Virtual Hosts | |
| |
| |
Using Apache Auth Modules with SSL | |
| |
| |
Warning Messages When Accessing an SSL-enabled Website | |
| |
| |
Creating Client Certificates | |
| |
| |
Authentication Using Client Certificates | |
| |
| |
Alternatives to mod_ssl | |
| |
| |
Testing SSL-enabled Websites from the Command Line | |
| |
| |
Working Around Buggy SSL Implementations | |
| |
| |
Complex Access Control with mod_ssl | |
| |
| |
Related Chapters | |
| |
| |
| |
Content Publishing with DAV | |
| |
| |
Content Publishing and Apache | |
| |
| |
Introducing WebDAV | |
| |
| |
Advantages of Using mod_dav | |
| |
| |
WebDAV and the HTTP Protocol | |
| |
| |
Installing mod_dav on Apache 2.0 | |
| |
| |
Installing mod_dav on Apache 1.3 | |
| |
| |
Basic WebDAV Configuration | |
| |
| |
Securing Your WebDAV Configuration | |
| |
| |
Accessing DAV Resources from Microsoft Office | |
| |
| |
Accessing DAV from Microsoft Windows | |
| |
| |
Accessing DAV Resources from Firefox | |
| |
| |
Accessing DAV from the Command Line | |
| |
| |
Dealing with Buggy Clients | |
| |
| |
mod_speling and DAV | |
| |
| |
Dynamic Content and DAV | |
| |
| |
Enabling Per-user Pages | |
| |
| |
Alternate User Directories | |
| |
| |
Fixing Problems with DAVLockDB | |
| |
| |
| |
Performance and Scalability | |
| |
| |
Tuning Apache | |
| |
| |
Understanding Performance and Scalability | |
| |
| |
Tuning Your Hardware | |
| |
| |
Increasing OS Limits | |
| |
| |
Increasing OS Limits on Processes | |
| |
| |
Increasing OS File Descriptors | |
| |
| |
Controlling External Processes | |
| |
| |
Improving File System Performance | |
| |
| |
Mounting File Systems with noatime Option | |
| |
| |
Handling Symbolic Links | |
| |
| |
Disabling Per-directory Configuration Files | |
| |
| |
Configuring Content Negotiation | |
| |
| |
Disabling or Minimizing Logging | |
| |
| |
Tuning Network and Status Settings | |
| |
| |
HostnameLookups | |
| |
| |
Request Accept Mechanism | |
| |
| |
mod_status | |
| |
| |
AcceptFilter | |
| |
| |
KeepAlives | |
| |
| |
Preventing Abuse | |
| |
| |
Limiting Connections and Bandwidth | |
| |
| |
Dealing with Robots | |
| |
| |
Reverse Proxies and Load Balancers | |
| |
| |
Caching and Compression | |
| |
| |
Module-specific Optimizations | |
| |
| |
Alternatives to Apache | |
| |
| |
| |
Apache Proxy and Caching Support | |
| |
| |
Understanding the Need for Caching and Proxies | |
| |
| |
Understanding Forward and Reverse Proxies | |
| |
| |
Differences Between Apache 1.3, 2.0, and 2.2 | |
| |
| |
Enabling mod_proxy Support | |
| |
| |
Enabling Forward Proxy Support | |
| |
| |
Using a Reverse Proxy to Unify Your URL Space | |
| |
| |
Hiding the Backend Servers | |
| |
| |
Preventing URLs from Being Reverse Proxied | |
| |
| |
Improving Performance | |
| |
| |
Offloading SSL Processing | |
| |
| |
Passing Proxy Information in Headers | |
| |
| |
Manipulating Headers | |
| |
| |
Implementing a Caching Proxy | |
| |
| |
Caching in Apache 2 | |
| |
| |
Load Balancing | |
| |
| |
Connecting to Tomcat | |
| |
| |
Alternate Proxies | |
| |
| |
Transparent HTTP Proxies | |
| |
| |
| |
Multi Processing and Protocol Modules | |
| |
| |
The Evolution of Apache's Architecture | |
| |
| |
Selecting a Multi Processing Module | |
| |
| |
Understanding Process-Based MPMs | |
| |
| |
Configuring the Prefork MPM | |
| |
| |
Understanding Threaded and Hybrid MPMs | |
| |
| |
Configuring the Worker MPM | |
| |
| |
Using Alternate MPMs | |
| |
| |
Understanding Apache 2 Filters | |
| |
| |
Using Apache As an FTP Server | |
| |
| |
Using Apache As a POP3 Server | |
| |
| |
Compressing Content on the Fly | |
| |
| |
Index | |