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
mod_proxy_cluster.so的可配置指令
您还可以在 < VirtualHost> 元素中配置 以下指令,以更改负载均衡行为。
- CreateBalancers
定义如何在 Apache HTTP 服务器虚拟主机中创建负载均衡器。以下值在
CreateBalancers中有效:-
0:在 Apache HTTP 服务器中定义的所有虚拟主机中创建负载均衡器。记得在ProxyPass指令中配置负载均衡器。 -
1:不要创建 balancer。使用这个值时,还必须在ProxyPass或ProxyPassMatch中定义负载均衡器名称。 -
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/ProxyPassMatch使用正则表达式来匹配代理 URL 应该应用到的本地路径。对于任一指令,
!表示指定的路径为本地,并且对该路径的请求不应路由到远程服务器。例如,以下指令指定gif文件应在本地提供。ProxyPassMatch ^(/.*\.gif)$ !- 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错误。-
如果您为请求的 URL 定义了上下文,但没有为此 URL 定义
- ResponseStatusCodeOnNoContext
定义服务器在
ProxyPass或ProxyPassMatch指令没有匹配的上下文时发送到客户端的响应状态代码。默认值为
404,这意味着服务器默认发送Not Found错误响应。在 JBCS 2.4.51 或更早版本中,当
ProxyPass或ProxyPassMatch指令没有匹配上下文时,服务器默认发送503 Service Unavailable响应。如果要保留早期版本中提供的默认行为,请将ResponseStatusCodeOnNoContext指令设置为503。注意如果您指定了标准 HTTP 响应代码以外的值,服务器访问日志会显示指定的值,但服务器会向客户端发送
500 Internal Server Error响应。