Table of Contents for
Apache Cookbook, 2nd Edition
Close
Version ebook
/
Retour
Apache Cookbook, 2nd Edition
by Ken Coar
Published by O'Reilly Media, Inc., 2007
Cover
Apache Cookbook
Apache Cookbook
Preface
1. Installation
2. Adding Common Modules
3. Logging
4. Virtual Hosts
5. Aliases, Redirecting, and Rewriting
6. Security
7. SSL
8. Dynamic Content
9. Error Handling
10. Proxies
11. Performance
12. Directory Listings
13. Miscellaneous Topics
A. Using Regular Expressions in Apache
B. Troubleshooting
Index
About the Authors
Colophon
Copyright
Apache Cookbook
Table of Contents
Preface
What’s in This Book
Platform Notes
Other Books
Other Sources
How This Book Is Organized
Conventions Used in This Book
Using Code Examples
We’d Like to Hear from You
Safari® Enabled
Acknowledgments
1. Installation
1.1. Installing from Red Hat Linux’s Packages
Installing from Debian Packages
1.2. Installing Apache on Windows
1.3. Downloading the Apache Sources
1.4. Building Apache from the Sources
1.5. Installing with ApacheToolbox
1.6. Starting, Stopping, and Restarting Apache
1.7. Uninstalling Apache
Which Version of Apache to Use
1.8. Upgrading Using config.nice
1.9. Starting Apache at Boot
1.10. Useful configure Options
1.11. Finding Apache’s Files
2. Adding Common Modules
2.1. Installing a Generic Third-Party Module
2.2. Installing mod_dav on a Unixish System
2.3. Installing mod_dav on Windows
2.4. Installing mod_perl on a Unixish System
2.5. Installing mod_php on a Unixish System
2.6. Installing mod_php on Windows
2.7. Installing mod_ssl
2.8. Finding Modules Using modules.apache.org
2.9. Installing mod_security
2.10. Why Won’t This Module Work?
3. Logging
3.1. Getting More Details in Your Log Entries
3.2. Getting More Detailed Errors
3.3. Logging POST Contents
3.4. Logging a Proxied Client’s IP Address
3.5. Logging Client MAC Addresses
3.6. Logging Cookies
3.7. Not Logging Image Requests from Local Pages
3.8. Rotating Logfiles at a Particular Time
3.9. Rotating Logs on the First of the Month
3.10. Logging Hostnames Instead of IP Addresses
3.11. Maintaining Separate Logs for Each Virtual Host
3.12. Logging Proxy Requests
3.13. Logging Errors for Virtual Hosts to Multiple Files
3.14. Logging Server IP Addresses
3.15. Logging the Referring Page
3.16. Logging the Name of the Browser Software
3.17. Logging Arbitrary Request Header Fields
3.18. Logging Arbitrary Response Header Fields
Logging Activity to a MySQL Database
Logging to syslog
Logging User Directories
4. Virtual Hosts
4.1. Setting Up Name-Based Virtual Hosts
4.2. Designating One Name-Based Virtual Host as the Default
4.3. Setting Up Address-Based Virtual Hosts
4.4. Creating a Default Address-Based Virtual Host
4.5. Mixing Address-Based and Name-Based Virtual Hosts
4.6. Mass Virtual Hosting with mod_vhost_alias
4.7. Mass Virtual Hosting Using Rewrite Rules
4.8. Logging for Each Virtual Host
4.9. Splitting Up a Logfile
4.10. Port-Based Virtual Hosts
4.11. Displaying the Same Content on Several Addresses
Defining Virtual Hosts in a Database
5. Aliases, Redirecting, and Rewriting
5.1. Mapping a URL to a Directory
5.2. Creating a New URL for Existing Content
5.3. Giving Users Their Own URLs
5.4. Aliasing Several URLs with a Single Directive
5.5. Mapping Several URLs to the Same CGI Directory
5.6. Creating a CGI Directory for Each User
5.7. Redirecting to Another Location
5.8. Redirecting Several URLs to the Same Destination
5.9. Permitting Case-Insensitive URLs
5.10. Showing Highlighted PHP Source without Symlinking
5.11. Replacing Text in Requested URLs
5.12. Rewriting Path Information to CGI Arguments
5.13. Denying Access to Unreferred Requests
5.14. Redirecting Unreferred Requests to an Explanation Page
5.15. Rewriting Based on the Query String
5.16. Redirecting All—or Part—of Your Server to SSL
5.17. Turning Directories into Hostnames
5.18. Redirecting All Requests to a Single Host
5.19. Turning Document Names into Arguments
5.20. Rewriting Elements between Path and Query String
5.21. Rewriting a Hostname to a Directory
5.22. Turning URL Segments into Query Arguments
5.23. Using AliasMatch, ScriptAliasMatch, and RedirectMatch
6. Security
6.1. Using System Account Information for Web Authentication
6.2. Setting Up Single-Use Passwords
6.3. Expiring Passwords
6.4. Limiting Upload Size
6.5. Restricting Images from Being Used Off-Site
6.6. Requiring Both Weak and Strong Authentication
6.7. Managing .htpasswd Files
6.8. Making Password Files for Digest Authentication
6.9. Relaxing Security in a Subdirectory
6.10. Lifting Restrictions Selectively
6.11. Authorizing Using File Ownership
6.12. Storing User Credentials in a MySQL Database
6.13. Accessing the Authenticated Username
6.14. Obtaining the Password Used to Authenticate
6.15. Preventing Brute-Force Password Attacks
6.16. Using Digest Versus Basic Authentication
6.17. Accessing Credentials Embedded in URLs
6.18. Securing WebDAV
6.19. Enabling WebDAV Without Making Files Writable by the Web User
6.20. Restricting Proxy Access to Certain URLs
6.21. Protecting Files with a Wrapper
6.22. Protecting Server Files from Malicious Scripts
6.23. Setting Correct File Permissions
6.24. Running a Minimal Module Set
6.25. Restricting Access to Files Outside Your Web Root
6.26. Limiting Methods by User
6.27. Restricting Range Requests
Rebutting DoS Attacks with mod_evasive
Chrooting Apache with mod_security
Migrating to 2.2 Authentication
6.28. Blocking Worms with mod_security
6.29. Mixing Read-Only and Write Access to a Subversion Repository
6.30. Using Permanent Redirects to Obscure Forbidden URLs
7. SSL
7.1. Installing SSL
Installing SSL on Windows
7.2. Generating Self-Signed SSL Certificates
7.3. Generating a Trusted CA
7.4. Serving a Portion of Your Site via SSL
7.5. Authenticating with Client Certificates
SSL Virtual Hosts
Wildcard Certificates
8. Dynamic Content
8.1. Enabling a CGI Directory
8.2. Enabling CGI Scripts in Non-ScriptAliased Directories
8.3. Specifying a Default Document in a CGI Directory
8.4. Using Windows File Extensions to Launch CGI Programs
8.5. Using Extensions to Identify CGI Scripts
8.6. Testing that CGI Is Set Up Correctly
8.7. Reading Form Parameters
8.8. Invoking a CGI Program for Certain Content Types
8.9. Getting SSIs to Work
8.10. Displaying Last Modified Date
8.11. Including a Standard Header
8.12. Including the Output of a CGI Program
8.13. Running CGI Scripts as a Different User with suexec
8.14. Installing a mod_perl Handler from CPAN
8.15. Writing a mod_perl Handler
8.16. Enabling PHP Script Handling
8.17. Verifying PHP Installation
8.18. Parsing CGI Output for Server Side Includes
8.19. Parsing ScriptAlias Script Output for Server-Side Includes
8.20. Getting mod_perl to Handle All Perl Scripts
8.21. Enabling Python Script Handling
9. Error Handling
9.1. Handling a Missing Host Field
9.2. Changing the Response Status for CGI Scripts
9.3. Customized Error Messages
9.4. Providing Error Documents in Multiple Languages
9.5. Redirecting Invalid URLs to Some Other Page
9.6. Making Internet Explorer Display Your Error Page
9.7. Notification on Error Conditions
10. Proxies
10.1. Securing Your Proxy Server
10.2. Preventing Your Proxy Server from Being Used as an Open Mail Relay
10.3. Forwarding Requests to Another Server
10.4. Blocking Proxied Requests to Certain Places
10.5. Proxying mod_perl Content to Another Server
10.6. Configuring a Caching Proxy Server
10.7. Filtering Proxied Content
10.8. Requiring Authentication for a Proxied Server
Load Balancing with mod_proxy_balancer
Proxied Virtual Host
Refusing to Proxy FTP
11. Performance
11.1. Determining How Much Memory You Need
11.2. Benchmarking Apache with ab
11.3. Tuning KeepAlive Settings
11.4. Getting a Snapshot of Your Site’s Activity
11.5. Avoiding DNS Lookups
11.6. Optimizing Symbolic Links
11.7. Minimizing the Performance Impact of .htaccess Files
11.8. Disabling Content Negotiation
11.9. Optimizing Process Creation
11.10. Tuning Thread Creation
11.11. Caching Frequently Viewed Files
11.12. Distributing Load Evenly Between Several Servers
11.13. Caching Directory Listings
11.14. Speeding Up Perl CGI Programs with mod_perl
Caching Dynamic Content
12. Directory Listings
12.1. Generating Directory/Folder Listings
Display a Standard Header and Footer on Directory Listings
12.2. Applying a Stylesheet
12.3. Hiding Things from the Listing
12.4. Searching for Certain Files in a Directory Listing
12.5. Sorting the List
Allowing a Client-Specified Sort Order
12.6. Specifying How the List Will Be Formatted
12.7. Allowing the Client to Specify the Formatting
12.8. Adding Descriptions to Files
12.9. Autogenerated Document Titles
12.10. Changing the Listing Icons
12.11. Listing the Directories First
12.12. Ordering by Version Number
12.13. Allowing the End User to Specify Version Sorting
Complete User Control of Output
Don’t Allow the End User to Modify the Listing
12.14. Suppressing Certain Columns
Showing Forbidden Files
12.15. Aliases in Directory Listings
13. Miscellaneous Topics
13.1. Placing Directives Properly
13.2. Renaming .htaccess Files
13.3. Generating Directory/Folder Listings
13.4. Solving the “Trailing Slash” Problem
13.5. Setting the Content-Type According to Browser Capability
13.6. Handling Missing Host: Header Fields
13.7. Alternate Default Document
13.8. Setting Up a Default “Favicon”
13.9. Directory Listings in ScriptAliased Directories
13.10. Enabling .htaccess Files
13.11. Converting IBM/Lotus Server-Side Includes to Apache
A. Using Regular Expressions in Apache
What Directives Use Regular Expressions?
B. Troubleshooting
Troubleshooting Methodology
Debugging the Configuration
Debugging Premature End of Script Headers
Common Problems on Windows
Fixing Build-Time Error Messages
Getting Server-Side Includes to Work
Debugging Rewrites That Result in “Not Found” Errors
.htaccess Files Having No Effect
Address Already in Use
Index
About the Authors
Colophon
Copyright