我有一个带有 Java 8 和 Tomcat 8 的 VirtualBox Ubuntu 服务器。我想使用 Tomcat 为我的所有 Java 应用程序使用它的 webapps 目录来提供所有 Web 内容,并在同一级别创建一个 webdocs 目录并为我的所有静态文件创建一个权限html 网站。
我还有安全功能,可以在必要时检查每个提供登录服务的 URL,因此无法基于 URL 路径提供我的静态 html。我想复制 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 存在冲突,其中安全性旨在拦截每个 URL。正如我所说,我需要保持安全性,但希望域名解析为类似于 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 定义了包含网站特定 html 相对于 appBase 的文件夹。 name 和 alias 属性定义了 Tomcat 将匹配的域名请求,并且服务不依赖于 URL 的路径。
最佳答案
最简单的方法是将 webdocs
定义为一个 webapp,它有自己的 web.xml 和 Context.xml。它不需要包含任何代码。
关于java - 使用 Tomcat 提供所有 Web 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28239533/