使用apache2在文档根目录中提供tomcat6应用程序

时间:2012-07-16 17:28:05

标签: url-rewriting apache2 tomcat6 mod-jk document-root

我有一台运行apache2的服务器,目前正在tomcat6实例上提供多个应用程序。这些已经配置和工作,并有一个重写规则,如下所示:

RewriteCond %{REQUEST_URI} ^/app1 [NC,OR]
RewriteCond %{REQUEST_URI} ^/app2 [NC,OR]
RewriteCond %{REQUEST_URI} ^/app3 [NC,OR]
RewriteCond %{REQUEST_URI} ^/aap4 [NC,OR]
RewriteCond %{REQUEST_URI} ^/app5 [NC,OR]
RewriteCond %{REQUEST_URI} ^/app6 [NC]
RewriteCond %{SERVER_PORT} !443
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [R,L]

然后它有JKMounts:

JkMount /app1/*.jsp tomcat.web
JkMount /app2* tomcat.web
JkMount /app3* tomcat.web
JkMount /app6* tomcat.web
JkMount /app6* tomcat.web
JkMount /app6* tomcat.web

workers.properties看起来像这样:

workers.tomcat_home=/usr/local/tomcat
workers.java_home=/usr/local/java
ps=\

worker.list=tomcat.web

# Set properties for worker 'tomcat.web' (ajp13)
worker.tomcat.web.type=ajp13
worker.tomcat.web.host=localhost
worker.tomcat.web.port=8009
worker.tomcat.web.cachesize=10
worker.tomcat.web.cache_timeout=600
worker.tomcat.web.socket_keepalive=1
worker.tomcat.web.connection_pool_size=150
worker.tomcat.web.connection_pool_minsize=75
worker.tomcat.web.connection_pool_timeout=10000

我添加了一个新的tomcat安装,在那里我运行了一个名为“在线”的新应用程序。所以我添加了一个新的worker,就像这样(也将worker名称附加到worker.list中):

# Set properties for worker 'tomcatb.web' (ajp13)
worker.tomcatb.web.type=ajp13
worker.tomcatb.web.host=localhost
worker.tomcatb.web.port=8109
worker.tomcatb.web.cachesize=10
worker.tomcatb.web.cache_timeout=600
worker.tomcatb.web.socket_keepalive=1
worker.tomcatb.web.connection_pool_size=150
worker.tomcatb.web.connection_pool_minsize=75
worker.tomcatb.web.connection_pool_timeout=10000

然后我在所有其他COND上添加了一个新的COND

RewriteCond %{REQUEST_URI} ^/online [NC,OR]

和像这样的新JKMount:

JkMount /online* tomcatb.web

这里的事情很好。我可以在

中访问我的应用
http://MYSERVER/online

它运作正常。现在我需要能够通过访问

来提供该应用程序
http://MYSERVER/

但我无法做到这一点。我一直在尝试编写这样的重写规则(删除以前的COND,然后添加它):

RewriteCond %{REQUEST_URI} ^/online [NC,OR]
RewriteCond %{SERVER_PORT} !443
RewriteRule ^online(.*)$ / [PT,QSA,L]

但这不起作用,当我去

http://MYSERVER/

我收到错误:

Forbidden
You don't have permission to access / on this server.

有人能指出我正确的方向如何按我需要的方式配置apache到我的应用程序服务器吗?

1 个答案:

答案 0 :(得分:1)

我解决了这个问题,不确定我是否使用最好的方法做到了,但这就是我最终做的事情(完成了我的要求,所以到现在为止已经足够了)

我添加了一个新的重写条件,如下所示:

RewriteCond %{REQUEST_URI} ^/ [NC,OR]

然后是这个JKMount

JkMount /* tomcatb.web

由于我需要服务器的应用程序在一个单独的tomcat实例中运行,我删除了所有的webapps并将战争部署为ROOT.war。

如果我去

,重启所有内容
http://MYSERVER/

它显示我期待的内容