使用 Tomcat + Mod JK 的虚拟主机

使用 Tomcat + Mod JK 的虚拟主机

我已经在系统上设置了 Apache 和 Tomcat,我想使用 Mod_JK 将两者结合起来。我创建了一个 mod_jk worker (ajp13_worker),并在我的 Apache 配置中添加了一个虚拟主机:

<VirtualHost *:80>
    ServerName      tomcat.mydomain.com
    DocumentRoot    /usr/local/tomcat/webapps/      

        # Tomcat
    JkMount /* ajp13_worker
    JkMount /*.jsp ajp13_worker
    JkMount /*.jspx ajp13_worker
</VirtualHost>

运行正常,我最终进入了默认的 Tomcat 页面。管理器应用程序也运行正常。

接下来,我有我的应用程序,它位于 PATH-TO-TOMCAT/webapps/myapp 文件夹中。它应该可以在 myapp.mydomain.com 下访问,因此我添加了第二个虚拟主机,这次使用“DocumentRoot /usr/local/tomcat/webapps/myapp”。但它不起作用:我总是进入默认的 Tomact 页面,而不是进入我的应用程序的根目录。因此,我使用 ModRewite 将请求重写到我的应用程序的上下文中。Apache 虚拟主机如下所示:

<VirtualHost *:80>
        ServerName      myapp.mydomain.com
        DocumentRoot    /usr/local/tomcat/webapps/myapp/

        RewriteEngine On
        RewriteCond     %{REQUEST_URI}   !^/myapp/.*
        RewriteRule ^/(.*)$ /myapp/$1 [PT]

        # Tomcat
        JkMount /* ajp13_worker
        JkMount /*.jsp ajp13_worker
        JkMount /*.jspx ajp13_worker
</VirtualHost>

该 vhost 可以工作,请求被重写,并且我的应用程序可以在 myapp.mydomain.com 下访问,但是现在,我的 Tomcat 会为每个请求创建一个新的会话,并且当一些用户访问该页面时,会话计数就会激增。

我尝试了几个教程,但大多数都没有解决这个问题。我想我漏掉了一些东西。有人能向我解释如何在 Apache/Tomcat/Mod-JK 组合中正确设置虚拟主机吗?

多谢,

克劳德

答案1

好的,我找到了。在 Tomcat sever.xml 中,您可以为每个主机指定上下文路径:

<Host name="app.mydomain.com" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="PATH-TO-TOMCAT/webapps/app"/>
</Host>

我的错误是,我总是试图修改 appBase 参数而不知道 Context 元素!

相关内容