通过tomcat显示主页而不更改URL

时间:2014-02-26 12:12:39

标签: apache tomcat request forwarding

我在Apache后面运行tomcat。我还有Spring安全性来处理授权和autrntication以及Struts 2作为我的web层framewok。

这是我的要求: 1)我想有一个主页,显示一些动态的数据(如类别),这些数据必须从数据库中获取并动态呈现。 2)当我在地址栏中点击“mysite.com”而不更改URL时,我想显示上面的页面。浏览器地址栏必须显示“仅限mysite.com。

我可以轻松地将此主页保存为我的虚拟主机的documentroot位置上的index.html。但是我不能这样做,因为一些内容是动态生成的。

另一种选择是将其保留在tomcat上并请求apache将请求转发给tomcat。但是这会更改我的地址栏上的URL。

我该如何处理?可以使用JK_MOD中的ForwardDirectories选项吗?

2 个答案:

答案 0 :(得分:0)

要从Tomcat向特定域提供动态内容,请执行以下操作:

  1. 在处理“mysite.com”的apache Web服务器上创建虚拟主机。
  2. 通过mod_jk将虚拟主机的全部内容映射到Tomcat:

    JkMount /      tomcatsJVMRouteName
    JkMount /*     tomcatsJVMRouteName
    
  3. 在Tomcats server.xml中创建另一个处理“mysite.com”的主机。

  4. 将您的应用程序部署为默认应用程序(webapps / ROOT目录)。

答案 1 :(得分:0)

现在让我们说我在tomcat上运行了一个webapp“mysite”,这是在apache后面。这个神秘的webapp有一个域名“mysite.com”。 当我点击“mysite.com”时,它必须返回包含动态内容的主页。所以我在webapps / mysite /目录中将它添加为index.jsp。

Follwing是我为mysite app写的虚拟主机:

      <VirtualHost *:86>
            ServerAdmin webmaster@dummy-host.example.com
            DocumentRoot "D:/var/www/html/mysite"
            ServerName mysite.com
            ServerAlias www.mysite.com
            ErrorLog "logs/mysite-error.log"
            CustomLog "logs/mysite-access.log" common

        <Directory "D:/var/www/html/mysite">
                  #
                  # Possible values for the Options directive are "None", "All",
                  # or any combination of:
                  #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI                                              
                  #MultiViews
                  # Note that "MultiViews" must be named *explicitly* --- "Options All"
                  # doesn't give it to you.
                  #
                  # The Options directive is both complicated and important.  Please see
                  # http://httpd.apache.org/docs/2.4/mod/core.html#options
                  # for more information.
                  #
                  Options -Indexes +FollowSymLinks

                  #
                  # AllowOverride controls what directives may be placed in .htaccess  files.
                  # It can be "All", "None", or any combination of the keywords:
                  #   Options FileInfo AuthConfig Limit
                  #
                    AllowOverride None

                  #
                  # Controls who can get stuff from this server.
                  #
                 Require all denied
             Require local granted
           </Directory>
       JkMount /mysite/* localtomcat
       ProxyRequests Off
       ProxyPreserveHost On

       ProxyPass /mysite/  !
       ProxyPass /  http://localhost:8080/mysite/
       ProxyPassReverse /  http://localhost:8080/mysite/

          </VirtualHost>

那么,以下是我对上述实施的问题:  1)我所做的是混合mod_jk的JKMount和mod_proxy.Even的proxypass虽然    这符合它的标准  2)有任何严重的副作用吗?  3)什么可以替代解决方案?