Apache 模块 mod_proxy_express

Description:mod_proxy的动态批量反向代理扩展
Status:Extension
Module Identifier:proxy_express_module
Source File:mod_proxy_express.c
Compatibility:在 Apache 2.3.13 和更高版本中可用

Summary

该模块通过将 HTTP 请求的Host:HeadersMap 到存储在 DBM 文件中的服务器名称和后端 URL,来创建动态配置的大量反向代理。这使得无需配置更改即可轻松使用大量反向代理。它的功能不如mod_proxy_balancer少,后者也提供动态增长,但旨在处理大量得多的后端。它非常适合用作前端 HTTP 交换机和微服务体系结构。

该模块需要 mod_proxy的服务。

Warning

在拥有保护您的服务器之前,不要启用代理。开放式代理服务器对您的网络和整个 Internet 都是危险的。

Limitations

  • 此模块无意替代mod_proxy_balancer的动态功能。取而代之的是,它主要是一种轻量级且快速的替代方案,而不是将mod_rewriteRewriteMap[P]标志一起用于 Map 的反向代理。

  • 它根本不支持正则表达式或模式匹配。

It emulates:

<VirtualHost *:80>
ServerName front.end.server
ProxyPass        "/" "back.end.server:port"
ProxyPassReverse "/" "back.end.server:port"
</VirtualHost>

也就是说,整个 URL 都将附加到 Map 的后端 URL。这符合成为简单但快速的反向代理交换机的意图。

ProxyExpressDBMFile Directive

Description:DBM 文件的路径名。
Syntax:ProxyExpressDBMFile pathname
Context:服务器配置,虚拟主机
Status:Extension
Module:mod_proxy_express

ProxyExpressDBMFile指令指向 Express map DBM 文件的位置。该文件用于将从Host:Headers 获得的传入服务器名称 Map 到后端 URL。

Note

使用httxt2dbmUtil 以纯文本文件格式构造文件。

ProxyExpress Map 文件

## ##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

创建 DBM 文件

httxt2dbm -i express-map.txt -o emap

Configuration

ProxyExpressEnable on
ProxyExpressDBMFile emap

ProxyExpressDBMType Directive

Description:DBM 文件类型。
Syntax:ProxyExpressDBMType type
Default:ProxyExpressDBMType default
Context:服务器配置,虚拟主机
Status:Extension
Module:mod_proxy_express

ProxyExpressDBMType指令控制模块期望的 DBM 类型。默认值为使用httxt2dbm创建的默认 DBM 类型。

可能的值为(在运行时可能并非全部可用):

ValueDescription
db伯克利 DB 文件
gdbmGDBM files
ndbmNDBM files
sdbmSDBM 文件(始终可用)
default默认 DBM 类型

ProxyExpressEnable Directive

Description:启用模块功能。
Syntax:ProxyExpressEnable on|off
Default:ProxyExpressEnable off
Context:服务器配置,虚拟主机
Status:Extension
Module:mod_proxy_express

ProxyExpressEnable指令控制模块是否处于活动状态。