Apache HTTP Server Version 2.4
Apache Module mod_proxy_express
Description: | Dynamic mass reverse proxy extension for
mod_proxy |
---|---|
Status: | Extension |
Module Identifier: | proxy_express_module |
Source File: | mod_proxy_express.c |
Summary
This module creates dynamically configured mass reverse
proxies, by mapping the Host: header of the HTTP request to
a server name and backend URL stored in a DBM file.
This allows for easy use of a huge number of reverse proxies
with no configuration changes. It is much less feature-full
than mod_proxy_balancer
, which also provides
dynamic growth, but is intended to handle much, much
larger numbers of backends. It is ideally suited as a
front-end HTTP switch and for micro-services architectures.
This module requires the service of mod_proxy
.
Warning
Do not enable proxying until you have secured your server. Open proxy servers are dangerous both to your network and to the Internet at large.
Limitations
- This module is not intended to replace the dynamic capability of
mod_proxy_balancer
. Instead, it is intended to be mostly a lightweight and fast alternative to usingmod_rewrite
withRewriteMap
and the[P]
flag for mapped reverse proxying. - It does not support regex or pattern matching at all.
- It emulates:
<VirtualHost *:80> ServerName front.end.server ProxyPass "/" "back.end.server:port" ProxyPassReverse "/" "back.end.server:port" </VirtualHost>
That is, the entire URL is appended to the mapped backend URL. This is in keeping with the intent of being a simple but fast reverse proxy switch.
ProxyExpressDBMFile Directive
Description: | Pathname to DBM file. |
---|---|
Syntax: | ProxyExpressDBMFile <pathname> |
Default: | None |
Context: | server config, virtual host |
Status: | Extension |
Module: | mod_proxy_express |
Compatibility: | Available in Apache 2.3.13 and later |
The ProxyExpressDBMFile
directive
points to the location of the Express map DBM file. This
file serves to map the incoming server name, obtained from
the Host: header, to a backend URL.
Note
The file is constructed from a plain text file format using
the httxt2dbm
utility.
ProxyExpress map file
##
##express-map.txt:
##
www1.example.com http://192.168.211.2:8080
www2.example.com http://192.168.211.12:8088
www3.example.com http://192.168.212.10
Create DBM file
httxt2dbm -i express-map.txt -o emap
Configuration
ProxyExpressEnable on
ProxyExpressDBMFile emap
ProxyExpressDBMType Directive
Description: | DBM type of file. |
---|---|
Syntax: | ProxyExpressDBMFile <type> |
Default: | "default" |
Context: | server config, virtual host |
Status: | Extension |
Module: | mod_proxy_express |
Compatibility: | Available in Apache 2.3.13 and later |
The ProxyExpressDBMType
directive
controls the DBM type expected by the module. The default
is the default DBM type created with
httxt2dbm
.
Possible values are (not all may be available at run time):
Value | Description |
---|---|
db | Berkeley DB files |
gdbm | GDBM files |
ndbm | NDBM files |
sdbm | SDBM files (always available) |
default | default DBM type |
ProxyExpressEnable Directive
Description: | Enable the module functionality. |
---|---|
Syntax: | ProxyExpressEnable [on|off] |
Default: | off |
Context: | server config, virtual host |
Status: | Extension |
Module: | mod_proxy_express |
Compatibility: | Available in Apache 2.3.13 and later |
The ProxyExpressEnable
directive
controls whether the module will be active.