让 apache 加载 Tomcat 的 webapps 文件夹中的所有 servlet

让 apache 加载 Tomcat 的 webapps 文件夹中的所有 servlet

我在 Windows 上运行 Apache2.2 和 Tomcat7.0。

如何设置 JkMount 以允许以 domain.com/tomcat/nameOfWebapp 的形式访问 Tomcat 上部署的任何 webapp?

这是我的workers.properties:

# Define 1 real worker using ajp13
worker.list=worker1
# Set properties for worker1 (ajp13)
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009

这是我的 httpd.conf 的相关部分:

LoadModule jk_module modules/mod_jk.so
<IfModule jk_module>

    JkWorkersFile D:/servers/tomcat7.0/conf/workers.properties
    JkLogFile D:/servers/tomcat7.0/logs/mod_jk.log
    JkLogStampFormat "[%b %d %Y - %H:%M:%S] "
    JkRequestLogFormat "%w %V %T"
    JkLogLevel info
    JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

    Alias /tomcat "D:/servers/tomcat7.0/webapps/"

    <Directory "D:/servers/tomcat7.0/webapps/">
        AllowOverride None
        Allow from all
    </Directory>

    <Location /*/WEB-INF/*>
        deny from all
    </Location>

    JkMount /tomcat/* worker1
</IfModule>

如果我只是执行类似 JkMount /manager* worker1 的操作,我就可以让管理器 web 应用程序工作,但是如何让它加载部署到 Tomcat 的任何应用程序呢?

我现在遇到的问题给出了这个错误:

The requested resource (/tomcat/manager/) is not available.

当尝试访问 domain.com/tomcat/manager 时。错误是由 Tomcat 给出的,因此它正在查找它,但由于某种原因,它不想加载它。

谢谢

答案1

如果您希望所有内容都可以在 /tomcat/[webappname] 下使用,那么您可以这样做:

JkMount /tomcat/* worker1

然后,重命名所有 Web 应用程序的 WAR 文件以使用所有属于 /tomcat 的嵌套路径,如下所示:

CATALINA_BASE/webapps$ mv ROOT.war tomcat.war
CATALINA_BASE/webapps$ mv app1.war tomcat#app1.war
CATALINA_BASE/webapps$ mv app2.war tomcat#app3.war
CATALINA_BASE/webapps$ mv app3.war tomcat#app3.war

结果是,现在所有 webapps 都将以 /tomcat/app1(或其他)作为其上下文路径。如果你写得正确,这个重新定位应该不成问题,你可以允许 httpd 继续处理请求(甚至.jsp(如果需要)复制到 /tomcat/ 之外的路径

答案2

看起来我想在我的 httpd.conf 中包含这个:

JkMount /*.jsp worker1
JkMount /*/tomcat/ worker1

相关内容