Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Tomcat为所有web内容提供服务_Java_Tomcat - Fatal编程技术网

Java 使用Tomcat为所有web内容提供服务

Java 使用Tomcat为所有web内容提供服务,java,tomcat,Java,Tomcat,我有一个带有Java8和Tomcat8的VirtualBox Ubuntu服务器。我想使用Tomcat为我的所有Java应用程序使用它的webapps目录来提供所有web内容,并为我的所有静态html网站创建一个具有相同级别和权限的webdocs目录 我还具有安全性,在必要时检查为登录提供服务的每个URL,因此,为静态html提供服务不能基于URL路径。我想复制Apache2匹配域名和服务相关文档库的能力。以下是my server.xml试图在引擎标记中为我的静态html添加上下文路径: <

我有一个带有Java8和Tomcat8的VirtualBox Ubuntu服务器。我想使用Tomcat为我的所有Java应用程序使用它的webapps目录来提供所有web内容,并为我的所有静态html网站创建一个具有相同级别和权限的webdocs目录

我还具有安全性,在必要时检查为登录提供服务的每个URL,因此,为静态html提供服务不能基于URL路径。我想复制Apache2匹配域名和服务相关文档库的能力。以下是my 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>

www.mywebsite.com
我已经尝试了上述的变体,但得到了404代码或访问被拒绝。我确信我的web.xml与我的web.xml存在冲突,其中安全性设计用于拦截每个URL。正如我所说,我需要让安全性保持不变,但希望域名解析到docBase,就像Apache2一样

最后,我如何使用域名而不是192.168.x.x:8080/来模拟我的生产服务器?有没有办法在我运行VirtualBox的笔记本电脑上实现这一点

任何帮助都将不胜感激

谢谢

布兰登

另外,我知道我必须设置我的IPTable规则来重新路由8080到80和8443到443,然后在Tomcat中配置多个SSL证书。我将分步骤进行这些配置

更新: 我能够让Tomcat使用我的sever.xml中的新host和Context元素在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>

www.testmywebsite.com

appBase定义我的静态html的位置,docBase定义包含网站相对于appBase的特定html的文件夹。名称和别名属性定义Tomcat将匹配和服务的域名请求,而不依赖URL的路径。

简单的方法是将
webdocs
定义为一个webapp,具有自己的web.xml和Context.xml。它不需要包含任何代码

Apache2能够匹配域名并为相关用户提供服务 船坞

这称为“虚拟主机”

我认为最可靠的解决方案是检测主机并将请求定向到特定的处理程序,或静态内容的特定路径(例如从/*到/webdocs/*)

如何使用域名而不是192.168.x.x:8080/来模拟我的 生产服务器

使用主机文件(/etc/hosts在UNIX中,%WINDIR%\system32\drivers\etc\hosts在Windows中)