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

Url rewriting 使用apache2在文档根目录中提供tomcat6应用程序,url-rewriting,apache2,tomcat6,mod-jk,document-root,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] RewriteCon

我有一台运行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]
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
JkMount /online* tomcatb.web
RewriteCond %{REQUEST_URI} ^/ [NC,OR]
然后它具有以下特性:

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如下所示:

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]
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
JkMount /online* tomcatb.web
RewriteCond %{REQUEST_URI} ^/ [NC,OR]
我添加了一个新的tomcat安装,在那里我运行了一个名为“online”的新应用程序。因此,我添加了一个新的worker,如下所示(还将worker名称附加到worker.list中):

然后我在所有其他条件之上添加了一个新条件

RewriteCond %{REQUEST_URI} ^/online [NC,OR]
还有一个新的JKMount,如下所示:

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]
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
JkMount /online* tomcatb.web
RewriteCond %{REQUEST_URI} ^/ [NC,OR]
这里一切正常。我可以在中访问我的应用程序

http://MYSERVER/online
它工作正常。现在,我需要能够服务于该应用程序只需访问

http://MYSERVER/
但我一直未能做到这一点。我一直在尝试编写这样的重写规则(删除前一个COND,然后添加这个):

但那不管用,当我去

http://MYSERVER/
我得到一个错误:

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

有人能告诉我如何配置apache以我需要的方式为我的应用程序提供服务器的正确方向吗?

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

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

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]
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
JkMount /online* tomcatb.web
RewriteCond %{REQUEST_URI} ^/ [NC,OR]
那么这座山

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

重新启动所有程序,现在如果我转到

http://MYSERVER/
它显示我期望的内容