java - 使用 Tomcat 提供所有 Web 内容

标签 java tomcat

我有一个带有 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 &quot;%r&quot; %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 &quot;%r&quot; %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/

相关文章:

java - 有没有办法减少与 CriteriaQuery(在 JPA 2.0 中)关联的样板代码的数量?

java - Fragment 类型的 getSupportFragmentManager() 方法未定义

java - 在 Tomcat 中的上下文之间共享 session 数据

tomcat - 在 Tomcat 上安装 CAS 服务器失败

java - 我想使用java程序发送电子邮件。我收到如下异常

java - 不支持的操作系统

java - 防止 Tomcat 日志记录转到 stderr?

tomcat - 什么时候收缩Tomcat的线程池?

java - 如何更改 Tomcats JVM 版本?

java - 通过 java 执行 linux 命令时出错 - 参数类型 java.lang.String 的运算符 > 未定义