apache / 2.4 / reference / mod-mod_proxy_express.html

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 类型。

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

Value Description
db 伯克利 DB 文件
gdbm GDBM files
ndbm NDBM files
sdbm SDBM 文件(始终可用)
default 默认 DBM 类型

ProxyExpressEnable Directive

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

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