【发布时间】:2015-03-30 03:27:06
【问题描述】:
我有一个带有 Java 8 和 Tomcat 8 的 VirtualBox Ubuntu 服务器。我想使用 Tomcat 为我的所有 Java 应用程序使用它的 webapps 目录来提供所有 Web 内容,并为我的所有静态应用程序创建一个相同级别和权限的 webdocs 目录html 网站。
如有必要,我还具有检查每个提供登录服务的 URL 的安全性,因此提供我的静态 html 不能基于 URL 路径。我想复制 Apache2 匹配域名并提供相关 docBase 的能力。以下是我的 server.xml 尝试在 Engine 标记中为我的静态 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 存在冲突,其中安全性旨在拦截每个 URL。正如我所说,我需要保持相同的安全性,但希望域名解析到类似于 Apache2 所做的 docBase。
最后,如何使用域名而不是 192.168.x.x:8080/ 来模仿我的生产服务器?有没有办法在我运行 VirtualBox 的笔记本电脑上做到这一点?
任何帮助将不胜感激。
谢谢,
布兰登
附:我知道我必须设置我的 IPTable 规则以将 8080 重新路由到 80 并将 8443 重新路由到 443,然后在 Tomcat 中配置多个 SSL 证书。我正在逐步进行这些配置。
更新: 我能够使用 sever.xml 中的新 Host 和 Context 元素让 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 定义了包含网站特定 html 相对于 appBase 的文件夹。 name 和 alias 属性定义了 Tomcat 将匹配和服务的域名请求不依赖于 URL 的路径。
【问题讨论】: