老版本apache模拟2.2.5中出现的ProxyPassMatch

反向代理是webserver和appserver结合的通用解决方案。apache提供了mod_proxy,mod_proxy_ajp来干这个事情。另外还有应用服务器方提供的mod比如mod_jk,mod_wl等。

使用mod_jk的同学估计对ajp又爱又恨吧?因为ajp不支持regex方式来代理动态请求。其实关于各种反向代理模块,配置的灵活性、性能,都是需要权衡的。不使用mod_jk的同学又希望有一款模块能够灵活的配置,现在apache2.2.5给mod_proxy新增了一个ProxyPassMatch指令,可以试试。

 

这篇文章主要是给那些暂时不能使用apache2.2.5的同学看的。估计很多人应该知道mod_rewrite中的RewriteRule指令中[P]标识,是用来加强ProxyPass的。但是rewrite拍脑袋想一下应该是对webserver有性能上的消耗的。这里我试图给出一个目前我能想到的最灵活也兼顾性能的配置方案:

 

 

#global disable rewrite
RewriteEngine off

<LocationMatch "^/context/(.*)\.(jsp|action|do)$">
        #per-dir enable rewrite
        Options +FollowSymLinks
        RewriteEngine on
        RewriteRule ^/YourWebserverDocumentRoot/(.*) http://appserver:port/$1 [P,QSA,L]
</LocationMatch>
 

 

 

只是,apache文档中说:

Although rewrite rules are syntactically permitted in <Location> sections, this should never be necessary and is unsupported.

 

有谁能够给我解惑?我现在只能假设,对于每一个请求,LocationMatch匹配是快于RewriteRule匹配的。但能想象,上面这个配置,若匹配到URI,至少有两次匹配过程。有时间做一个测试来验证。

 

我其实并不推崇这种rewrite的技巧,同时也对java web应用的特定扩展名感到厌烦了。如果能够更合理的组织URI,ajp肯定是更合理的方案。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值