url_rewrite后,用jk_mod集成的apache与tomcat怎么配合?

hetianzhuo 2008-09-25 12:40:38
大家好,我有一个系统集成的问题,目的就是配置一个php和jsp同时支持的apache


首先说明一下系统环境
我估计是 RedHat 4 企业版
用uname -a命令
显示:Linux localhost.localdomain 2.6.9-34.ELsmp #1 SMP Fri Feb 24 16:54:53 EST 2006 i686 i686 i386 GNU/Linux

接下来是各个集成部件的版本和位置
部件名 位置 版本
1)Apache /usr/sbin/httpd httpd-2.0.52-22
2)JDK /usr/local/jdk1.5.0_11/bin/java jdk1.5.0_11
3)Tomcat /usr/local/liferayportal/bin 不知道怎么查?
4)Jk_mod /usr/lib/httpd/modules mod_jk-1.2.26-httpd-2.2.6.so

经过不懈的配置,终于调通了jsp支持。


但是…………新的问题出现了。

我的jsp系统是用了 url rewrite 技术,也就是说 默认把jsp后缀交给tomcat解释是不够的。

jsp系统是用 liferay 技术搭建的。
于是继续找 解决方法

目前有两个文档相关但没太明白怎么弄,大家能帮我参看一下吗?


http://www.liferay.com/web/guest/community/forums/-/message_boards/message/490514#_19_message_490514
该贴大概是说 Badrul Hisham 解决了liferay系统 在jk_mod 集成方案下的配置方法。
但第三段
3. In /etc/apache2/sites-enabled/default (the <virtualhost *> settings)

ProxyPreserveHost On

RewriteEngine On
RewriteRule ^/web/(.*) http://localhost:8080/web/$1 [P,L]
RewriteRule ^/user/(.*) http://localhost:8080/user/$1 [P,L]

JkMount /c liferay
JkMount /c/* liferay
JkMount /language liferay
JkMount /language/* liferay
JkMount /html liferay
JkMount /html/* liferay
JkMount /image liferay
JkMount /image/* liferay
JkMount /liferay-jedi-theme liferay
JkMount /liferay-jedi-theme/* liferay
JkMount /layouttpl liferay
JkMount /layouttpl/* liferay


中的 RewriteRule ^/web/(.*) http://localhost:8080/web/$1 [P,L] 是什么意思?localhost 要改吗?

apache的mod_proxy和mod_rewrite是干什么的?在集成中承担了什么功能呢?

还有怎么配置apache的mod_proxy和mod_rewrite

我强行按照老外的文章提示配置后,报404(找不到页)错误。怎么会这样呢?

...全文
369 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
老紫竹 2008-09-25
  • 打赏
  • 举报
回复
先不要重写。先保证你的 .jsp能访问了。再用rewrite 进行改写
老紫竹 2008-09-25
  • 打赏
  • 举报
回复
RewriteRule ^/web/(.*) /web/$1 [P,L]
应该用这个。 你的 jk配置已经有了端口的设置,默认是8009,记得不是8080之类的。
可以参考我的一个文章 Apache 2.2 + Tomcat 使用UrlRewrite实现泛域名解析的尝试
hetianzhuo 2008-09-25
  • 打赏
  • 举报
回复
谢谢 老紫竹 的回答,估计你的办法也可以。

昨晚凌晨终于解决了。

找到原因了,在server.xml中自动生成的mod_jk.conf文件是根据 Host 节点的 appBase 属性的目录结构生成的

JkMount ,但这样就出现问题了。如果 java程序采用url重写技术 制作的话,那么自动生成的文件就是错误的。

最终我手写了一个配置文件,然后用命令 service httpd restart 重启 apache。 everything is ok.

至于多站点,有必要说的是,默认 VisualHostName:80 是被注释掉的。去掉注释后,在/etc/httpd/conf/httpd.conf
中增加 VisualHost 节点就ok 了。


关键参照了下方的文章:(抱怨一下,官网的br解析有问题,眼睛都看瞎才注意到。)
http://www.liferay.com/web/guest/community/forums/-/message_boards/message/65880#_19_message_65864

I use mod_jk (mod_jk2 has been depracated) but here is the relavant parts of the file
JkMount /c/* worker1
JkMount /c worker1
JkMount /web/* worker1
JkMount /web worker1
JkMount /applets/* worker1
JkMount /image/* worker1
JkMount /jcvs/* worker1
JkMount /html/* worker1
JkMount /laszlo/* worker1

you need to add the entries for /web and\or /web/* since that is where the guest account redirects to. This confiuration is working for me.

FYI
If you hot deploy themes, you have to add an entry for every theme also

PS - I see you are running Debian, mod_jk is libapache2-mod-jk - Apache 2 connector for the Tomcat Java servlet engine

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧