我在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选项吗?
答案 0 :(得分:0)
要从Tomcat向特定域提供动态内容,请执行以下操作:
通过mod_jk将虚拟主机的全部内容映射到Tomcat:
JkMount / tomcatsJVMRouteName
JkMount /* tomcatsJVMRouteName
在Tomcats server.xml中创建另一个处理“mysite.com”的主机。
答案 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)什么可以替代解决方案?