mod_proxy 是Apache 自带的 模块使用代理技术来连接 Tomcat。在配置之前请确保是否使用的是 2.2.x 版本的 Apache 服务器。因为 2.2.x 版本对这个模块进行了重写,大大的增强了其功能和稳定性。
mod_proxy分为两种代理: http_proxy, ajp_proxy。 这两种代理都是通过httpd.conf来配置实现。
http_proxy
http_proxy 模式是基于 HTTP 协议的代理,因此它要求 Tomcat 必须提供 HTTP 服务,也就是说必须启用 Tomcat 的 HTTP Connector。
集群配置如下:
#load balancing with mod_proxy
ProxyRequests Off
ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=off
<Proxy balancer://cluster>
BalancerMember http://137.21.1.34:8080
BalancerMember http://137.21.1.203:7080
</Proxy>
以上配置说明把所有 "/" 根路径以下的路径请求 全部交给 balancer://cluster/处理。
BalancerMember中的端口是tomcat connector中的http connector的端口
ajp_proxy
ajp_proxy 连接方式其实跟 http_proxy 方式一样,都是由 mod_proxy 所提供的功能。配置也是一样,只需要把 http:// 换成 ajp:// ,同时连接的是 Tomcat 的 AJP Connector 所在的端口。上面例子的配置可以改为:
#load balancing with mod_proxy
ProxyRequests Off
ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=off
<Proxy balancer://cluster>
BalancerMember ajp://137.21.1.34:8009
BalancerMember ajp://137.21.1.203:7009
</Proxy>
采用 proxy 的连接方式,需要在 Apache 上加载所需的模块,mod_proxy 相关的模块有 mod_proxy.so、mod_proxy_connect.so、mod_proxy_http.so、mod_proxy_ftp.so、 mod_proxy_ajp.so, 其中 mod_proxy_ajp.so 只在 Apache 2.2.x 中才有。如果是采用 http_proxy 方式则需要加载 mod_proxy.so 和 mod_proxy_http.so;如果是 ajp_proxy 则需要加载 mod_proxy.so 和 mod_proxy_ajp.so这两个模块。
apache对于mod_proxy的负载均衡提供了界面监控集群运行的状态,并做一些简单的维护设置。需要在httpd.conf加入:
<Location /server-status>
SetHandler server-status
Order Deny,Allow
Allow from all
</Location>
<Location /server-info>
SetHandler server-info
Order Deny,Allow
Allow from all
</Location>
<Location /balancer-manager>
SetHandler balancer-manager
Order Deny,Allow
Allow from all
</Location>
之后通过http://localhost/balancer-manager 来访问
完整配置参见附件中的httpd.conf, mod_proxy的完整配置参考见http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
给weblogic设置代理
1.如果你用apache 2.2 , 首先找到mod_wl_22.so,官方不提供下载,本文提供一个附件
2.修改http.conf加上
LoadModule weblogic_module modules/mod_wl_22.so
3. 代理配置http.conf,Cluster的情况下多个URL用逗号分割
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
<IfModule mod_weblogic.c>
WebLogicCluster 127.0.0.1:7001
MatchExpression /*
</IfModule>
<Location /weblogic>
SetHandler weblogic-handler
WebLogicCluster 127.0.0.1:7001
DebugConfigInfo ON
PathTrim /weblogic
</Location>