C.2. mod_proxy_cluster.so 模块和指令


Proxy Balancer 模块 mod_proxy_cluster.so 来处理到集群节点的请求路由。Proxy Balancer 根据集群中的应用程序位置、每个集群节点的当前状态以及 Session ID (如果请求是已建立会话的一部分)来选择适当的节点来转发请求。

LoadModule proxy_cluster_module modules/mod_proxy_cluster.so
Copy to Clipboard Toggle word wrap

mod_proxy_cluster.so的可配置指令

您还可以在 < VirtualHost> 元素中配置 以下指令,以更改负载均衡行为。

CreateBalancers

定义如何在 Apache HTTP 服务器虚拟主机中创建负载均衡器。以下值在 CreateBalancers 中有效:

  • 0 :在 Apache HTTP 服务器中定义的所有虚拟主机中创建负载均衡器。记得在 ProxyPass 指令中配置负载均衡器。
  • 1: 不要创建 balancer。使用这个值时,还必须在 ProxyPassProxyPassMatch 中定义负载均衡器名称。
  • 2 :仅创建主服务器。这是 CreateBalancers 的默认值。
UseAlias

定义是否要检查定义的 Alias 是否与 ServerName 对应。以下值对 UseAlias 有效:

  • 0 :忽略来自 worker 节点的别名信息。这是 UseAlias 的默认值。
  • 1: 验证定义的别名是否与 worker 节点的服务器名称对应。
LBstatusRecalTime
定义代理计算 worker 节点状态之间的间隔(以秒为单位)。默认间隔为 5 秒。
ProxyPassMatch; ProxyPass

ProxyPass 将远程服务器映射到本地服务器命名空间。如果本地服务器具有地址,如 http://local.com/,以下 ProxyPass 指令会将 http://local.com/requested/file1 的本地请求转换为 http://worker.local.com/file1 的代理请求。

ProxyPass /requested/ http://worker.local.com/
Copy to Clipboard Toggle word wrap

ProxyPassMatch 使用正则表达式来匹配代理 URL 应该应用到的本地路径。

对于任一指令,! 表示指定的路径为本地,并且对该路径的请求不应路由到远程服务器。例如,以下指令指定 gif 文件应在本地提供。

ProxyPassMatch ^(/.*\.gif)$ !
Copy to Clipboard Toggle word wrap
UseNocanon

定义是否在不修改的情况下将原始 URL 路径转发到后端。

默认值为 Off。当 UseNocanon 指令设置为 Off 时,代理可以将修改后的 URL 转发到后端。但是,如果后端应用程序需要客户端请求的原始 URL 路径,修改的 URL 路径可能会导致意外问题。

当您将 UseNocanon 指令设置为 On 时,代理可以在不需要任何修改的情况下将原始 URL 路径转发到后端。在这种情况下,代理行为取决于您还在 mod_proxy_cluster.conf 文件中为请求的 URL 定义上下文和 ProxyPass 指令。上下文也称为 虚拟主机定义

当您将 UseNocanon 指令设置为 On 时,请考虑以下准则:

  • 如果您为请求的 URL 定义了上下文,但没有为此 URL 定义 ProxyPass 指令,代理将使用 UseNocanon 指令。
  • 如果您同时为请求的 URL 定义上下文和 ProxyPass 指令,且 ProxyPass 指令包含 nocanon 标志,代理会使用 nocanon 标志并忽略 UseNocanon 指令。
  • 如果您同时为请求的 URL 定义上下文和 ProxyPass 指令,且 ProxyPass 指令排除 nocanon 标志,代理会忽略 UseNocanon 指令。
注意

如果您没有为请求的 URL 定义上下文,mod_proxy_cluster 会返回 404 错误。

ResponseStatusCodeOnNoContext

定义服务器在 ProxyPassProxyPassMatch 指令没有匹配的上下文时发送到客户端的响应状态代码。

默认值为 404,这意味着服务器默认发送 Not Found 错误响应。

在 JBCS 2.4.51 或更早版本中,当 ProxyPassProxyPassMatch 指令没有匹配上下文时,服务器默认发送 503 Service Unavailable 响应。如果要保留早期版本中提供的默认行为,请将 ResponseStatusCodeOnNoContext 指令设置为 503

注意

如果您指定了标准 HTTP 响应代码以外的值,服务器访问日志会显示指定的值,但服务器会向客户端发送 500 Internal Server Error 响应。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat