Apache WebLogic插件:路径与表达式路由结合及单JSP跳过转发问题
解决Apache WebLogic插件的路径+表达式路由,同时排除特定监控文件
嘿,我来帮你搞定这个问题!你的核心需求是仅让/website路径下的*.jsp和*.do请求转发到WebLogic,同时让Apache直接处理/monitor/test.jsp。之前的配置没生效,主要是因为全局的MatchExpression没有和路径限制绑定,而且排除规则的优先级没处理好。
下面是适配Apache 2.4.29 + WebLogic 12.2的完整解决方案:
# 确保WebLogic模块已加载(如果你的配置里没加的话) LoadModule weblogic_module modules/mod_weblogic.so <IfModule mod_weblogic.c> # 1. 先配置监控文件的规则:让Apache直接处理,优先级最高 <Location "/monitor/test.jsp"> # 告诉Apache用默认文件处理器返回该文件,跳过WebLogic插件 SetHandler default-handler # 如果你这个test.jsp虽然是JSP后缀但只有HTML内容,上面的指令足够; # 要是需要Apache解析JSP(比如有简单脚本),可以替换成: # SetHandler jsp-handler </Location> # 2. 配置/website路径下的转发规则:结合路径限制和后缀过滤 <Location "/website"> WebLogicCluster weblogic1.server.com:8080,weblogic2.server.com:8080 # 仅匹配后缀为.jsp和.do的请求转发 MatchExpression *.jsp MatchExpression *.do # 可选:转发出错时让Apache返回错误页,按需开启 WLForwardOnError On </Location> </IfModule>
关键细节解释:
- 配置顺序很重要:Apache是从上到下匹配规则的,所以把监控文件的排除规则放在WebLogic转发规则前面,确保先被匹配到,不会被转发。
- Location指令的作用:
<Location "/website">会把所有以/website开头的请求纳入这个规则块,再结合MatchExpression过滤后缀,精准控制哪些请求转发到WebLogic。 - SetHandler default-handler:这个指令强制Apache用自身的默认文件处理逻辑返回
/monitor/test.jsp,完全跳过WebLogic插件的转发流程。
验证方法:
重启Apache后,分别测试:
- 访问
/monitor/test.jsp:应该直接看到Apache返回的HTML内容(不会转发到WebLogic) - 访问
/website/index.jsp或/website/api.do:会被转发到WebLogic集群处理 - 访问
/website/about.html:由Apache直接返回,不会转发
内容的提问来源于stack exchange,提问作者Sravan
相关产品推荐
相关产品推荐

