我有一个Tomcat8和Tomcat8的Tomcat服务器。我想使用VirtualBox为我所有的Java应用程序提供webapps目录,并为我所有的静态html网站创建一个相同级别和权限的webdocs目录。
如果有必要的话,我还有一个安全机制,可以检查每个提供登录服务的URL,这样我的静态html就不能基于URL路径了。我想复制Apache2匹配域名的能力,并为相关的docBase提供服务。下面是我的server.xml试图在引擎标签中添加静态html的上下文路径:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
<Host name="mywebsite.com" appBase="webdocs">
<Alias>www.mywebsite.com</Alias>
<Context path="" docBase="/mywebsite/" />
</Host>我已经尝试了上述的变体,但得到404代码或访问被拒绝。我确信这与我的web.xml有冲突,因为安全性被设计为拦截每个网址。正如我所说的,我需要保持相同的安全性,但希望域名解析为类似于Apache2所做的docBase。
最后,如何使用域名代替192.168.x.x:8080/来模拟我的生产服务器?有没有办法在我运行VirtualBox的笔记本电脑上做到这一点?
任何帮助都将不胜感激。
谢谢,
布兰登
附注:我知道我必须设置我的IPTable规则来重路由8080到80和8443到443,然后在Tomcat中配置多个SSL证书。我将一步一步地进行这些配置。
更新:我在sever.xml中使用了一个新的主机和上下文元素,让Tomcat在webapps之外托管我的静态html:
<Host name="mywebsite.com"
appBase="/home/webdocs"
unpackWARs="true"
autoDeploy="true">
<Alias>www.testmywebsite.com</Alias>
<Context path=""
docBase="mywebsite"
reloadable="false" />
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="testmywebsite_access_log"
suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>appBase定义了我的静态html的位置,docBase定义了包含网站相对于appBase的特定html的文件夹。name和alias属性定义Tomcat将匹配和提供的域名请求,而不依赖于URL的路径。
发布于 2015-02-01 08:13:29
最简单的方法是将webdocs定义为拥有自己的web.xml和Context.xml的webapp。它不需要包含任何代码。
发布于 2015-02-01 08:34:06
Apache2匹配域名并服务于相关docBase的能力
这被称为“虚拟主机”。
我认为最可靠的解决方案是使用Tucky URL rewriter filter来检测主机,并将请求定向到特定的处理程序,或者静态内容的特定路径(比如从/*到/webdocs/*)。
如何使用域名而不是192.168.x.x:8080/来模拟我的生产服务器
使用主机文件( UNIX中为/etc/ hosts,Windows中为%WINDIR%\system32\drivers\etc\hosts )
https://stackoverflow.com/questions/28239533
复制相似问题