我在 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