2008-03-30
老版本apache模拟2.2.5中出现的ProxyPassMatch
关键字: rewrite, 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肯定是更合理的方案。
发表评论
- 浏览: 1678 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
SNA方案之session store ...
我的解决方案: 1、MemcachedServer 使用类似 RIAD的 0+1 ...
-- by tangchao -
SNA方案之session store ...
robbin 写道sorphi 写道 使用mysql memory table, ...
-- by sorphi -
SNA方案之session store ...
neptune 写道我也有个方案,不知行不行(程序已实现,就是还没有实际用过) ...
-- by robbin -
SNA方案之session store ...
sorphi 写道 使用mysql memory table,我需要在存放ite ...
-- by robbin -
SNA方案之session store ...
我也有个方案,不知行不行(程序已实现,就是还没有实际用过)memcached部分 ...
-- by neptune






评论排行榜