我有一台运行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到我的应用程序服务器吗?
答案 0 :(得分:1)
我解决了这个问题,不确定我是否使用最好的方法做到了,但这就是我最终做的事情(完成了我的要求,所以到现在为止已经足够了)
我添加了一个新的重写条件,如下所示:
RewriteCond %{REQUEST_URI} ^/ [NC,OR]
然后是这个JKMount
JkMount /* tomcatb.web
由于我需要服务器的应用程序在一个单独的tomcat实例中运行,我删除了所有的webapps并将战争部署为ROOT.war。
如果我去
,重启所有内容http://MYSERVER/
它显示我期待的内容