The Apache Proxy Modules
So far, we have spoken loosely of mod_proxy. However, it's a little
more complicated than that. In keeping with Apache's modular
architecture, mod_proxy is itself modular, and a typical proxy server
will need to enable several modules. Those relevant to proxying and
this article include:
- mod_proxy: The core module deals with proxy infrastructure and
configuration and managing a proxy request.
- mod_proxy_http: This handles fetching documents with HTTP and
HTTPS.
- mod_proxy_ftp: This handles fetching documents with FTP.
- mod_proxy_connect: This handles the CONNECT method for secure
(SSL) tunneling.
- mod_proxy_ajp: This handles the AJP protocol for Tomcat
and similar backend servers.
- mod_proxy_balancer implements clustering and load-balancing
over multiple backends.
- mod_cache, mod_disk_cache, mod_mem_cache: These deal with managing
a document cache. To enable caching requires mod_cache and one or
both of disk_cache and mem_cache.
- mod_proxy_html: This rewrites HTML links into a proxy's address
space.
- mod_headers: This modifies HTTP request and response headers.
- mod_deflate: Negotiates compression with clients and backends.
Having mentioned the modules, I'm going to ignore caching for the
remainder of this article. You may want to add it if you are concerned
about the load on your network or origin servers, but the details are
outside the scope of this article. I'm also going to ignore all
non-HTTP protocols, and load balancing.