首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Tomcat提供所有web内容

问使用Tomcat提供所有web内容
EN

Stack Overflow用户
提问于 2015-01-30 23:45:19
回答 2查看 286关注 0票数 0

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

如果有必要的话,我还有一个安全机制,可以检查每个提供登录服务的URL,这样我的静态html就不能基于URL路径了。我想复制Apache2匹配域名的能力,并为相关的docBase提供服务。下面是我的server.xml试图在引擎标签中添加静态html的上下文路径:

代码语言:javascript
复制
<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有冲突,因为安全性被设计为拦截每个网址。正如我所说的,我需要保持相同的安全性,但希望域名解析为类似于Apache2所做的docBase。

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

任何帮助都将不胜感激。

谢谢,

布兰登

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

更新:我在sever.xml中使用了一个新的主机和上下文元素,让Tomcat在webapps之外托管我的静态html:

代码语言:javascript
复制
  <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定义了包含网站相对于appBase的特定html的文件夹。name和alias属性定义Tomcat将匹配和提供的域名请求,而不依赖于URL的路径。

EN

回答 2

Stack Overflow用户

发布于 2015-02-01 08:13:29

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

票数 0
EN

Stack Overflow用户

发布于 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 )

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28239533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档