apache 反向代理终结篇

环境:
Redhat AS 5.5 x86_64
apache 2.2.3
weblogic 10.3.5
curl
网络:
/weblogic_20.103:7070
apache_10.103---
\weblogic_20.103:7070

三种反向代理方式:
1、无负载均衡1vs1
2、有负载均衡之mod_proxy_balace(保持回话、不保持会话)
3、有负载均衡之mod_wl_22
----------------------------------------------------------------
分头介绍如下:(/etc/httpd/conf/httpd.conf)

[b]1、无负载均衡1vs1,是最简单的一种,大概像这样就可以了[/b]
Listen 7001
<VirtualHost *:7001>
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://ap_ip1:port/
ProxyPassReverse / http://ap_ip1:port/
</VirtualHost>

[b]2、有负载均衡之mod_proxy_balace分为保持回话和不保持会话,[/b]应用场景是这样的,如果weblogic做了集群,也就是有了session同步,那么就不用保持会话了;否则就必须得用会话保持了。

[b]2.1不保持会话,配置大约是这样的[/b]
Listen 7001
<VirtualHost *:7001>
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Proxy balancer://weblogic>
BalancerMember http://ap_ip1:port/
BalancerMember http://ap_ip2:port/
</Proxy>
ProxyPass / balancer://weblogic/ nofailover=On
ProxyPassReverse / balancer://weblogic/
</VirtualHost>
[b]2.2保持会话之tomcat,配置大约是这样的[/b]
(作者的话:本例需在tomcat的server.xml中添加jvmroute=server1的配置,lbmethod之类的就不说了)
(http://nat.guyton.net/2009/07/08/apache-load-balancer-persistence/)
Listen 7001
<VirtualHost *:7001>
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Proxy balancer://weblogic>
BalancerMember http://ap_ip1:port/ route=server1
BalancerMember http://ap_ip2:port/ route=server2
</Proxy>
ProxyPass / balancer://weblogic/ stickysession=JSESSIONID nofailover=On
ProxyPassReverse / balancer://weblogic/
</VirtualHost>


[b]2.3保持会话之weblogic or others,配置大约是这样的[/b]
(作者的话:本例在本环境中没有成功,一直添加不成功cookie)
Listen 7001
<VirtualHost *:7001>
#添加一个cookie用来区分server
Header add Set-Cookie "routeId=.%{BALANCER_WORKER_ROUTE}e;path=/" env=BALANCER_ROUTE_CHANGED
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Proxy balancer://weblogic>
BalancerMember http://ap_ip1:port/ route=server1
BalancerMember http://ap_ip2:port/ route=server2
</Proxy>
ProxyPass / balancer://weblogic/ stickysession=routeId nofailover=On
ProxyPassReverse / balancer://weblogic/
</VirtualHost>

[b]2.4解惑(为什么tomcat和weblogic的配置不一样呢?)[/b]
这个事网上大部分人的文章都不告诉你,你得琢磨的头疼,想去看看apache的手册,在这里我告诉你:
apache会话保持是根据cookie或者url的,(其实也就是session的实现),也就是stickysession。
如果你是Apache,一个session的cookie给你,你怎么知道他是哪个服务器生成的?你肯定不知道,我也不知道,但是通过改造server,在cookie上添加适当的标签就可以了,于是乎,tomcat就可以配置jvmrout=routeid,那么生成的session的cookie值后面就会append “.routeid”,注意前面哪个小点,可也。
tomcat和httpd都是apache组织的孩子,当然可以无缝对接,对于weblogic就悲剧了,人家可不允许你在session的cookie中添加什么后缀,因为weblogic其实有自己的后缀,一般是这个的:cookie!主serverid!副serverid。针对这个问题,Apache展现了自己强大的功能,你weblogic不给我区分session,我就在你返回的报文中添加一个cookie,这就是Header那句的功能了,来表示你的身份,以后我用这个cookie来区分是哪个服务器创建的报文,不用你的session了。
(http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html)

[b]3有负载均衡之mod_wl_22[/b]
mod_wl_22是weblogic提供的,
#找到weblogic提供的apache模块
find / -name mod_wl_22.so
#复制到apache的modulus中
cp mod_wl_22.so /etc/httpd/modulus/
vi httpd.conf

LoadModule weblogic_module modules/mod_wl_22.so
<IfModule mod_weblogic.c>
WebLogicCluster ip1:port1,ip2:port2
DynamicServerList off
MatchExpression *.jsp
MatchExpression *.*
MatchExpression *
</IfModule>
经过测试,这是支持会话保持的。

[b] 4提一下curl[/b]
curl是一个linux的http类库,也是一个文本模式下的功能强大的http客户端
#把cookie保持到cookie中,把header保持到cookie.d中
curl -c cookie -D cookie.d http://ip:port/modu/test.jsp
#使用cookie
curl -b cookie http://ip:port/modu/test.jsp
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值