2010-11-17 102 views
13

我正在使用Jetty部署生产网站。让我们假设我的网站是foo.com当我将浏览器指向一个不存在的上下文(比如说foo.com/notavailable)时,Jetty会显示一个错误页面,其中包含所有部署的上下文的信息。如何防止Jetty显示上下文相关信息

它看起来是这样的:

该服务器匹配或处理该请求上没有上下文。已知此服务器 上下文是:

我想阻止码头无法显示此消息,因为它包含了完整的路径到服务器上的上下文。

有没有办法做到这一点?

回答

7

该网页是由码头“的DefaultHandler”

要停止显示该页面提供的,你应该从你的服务器删除处理程序(它在你的jetty.xml的已配置文件) 您并不需要(或想要)生产(面向互联网)服务器上的默认处理程序,因此将其删除是个好主意。

请注意,它也提供了常规的404页面和favicon.ico,所以如果你依靠这些行为,那么你需要放入一个替代品。

+0

这是更好地解释或放在这里的answe,一旦链接无效携带的答案没有品脱。当前链接已失效。 – Sohan 2015-12-15 06:02:33

+0

提供的链接已中断 – SimplyInk 2016-12-05 07:07:16

12

配置Jetty XML时,您可以在DefaultHandler上将showContexts设置为false。

如果您使用的旧版Jetty版本替换org.eclipse.jetty我的示例与旧版org.mortbay.jetty包装结构。

<Configure id="Server" class="org.eclipse.jetty.server.Server"> 

    <!-- =========================================================== --> 
    <!-- Set handler Collection Structure --> 
    <!-- =========================================================== --> 
    <Set name="handler"> 
    <!-- the collection of handlers that will handle the request --> 
    <New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection"> 
     <Set name="handlers"> 
     <Array type="org.eclipse.jetty.server.Handler"> 
      <!-- primarily handles the request and maps the request to a ContextHandler --> 
      <Item> 
      <New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/> 
      </Item> 

      <!-- The default handler ... handles the request if not yet handled --> 
      <Item> 
      <New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"/> 
      </Item> 

      <!-- The handler for your request logs --> 
      <Item> 
      <New id="RequestLog" class="org.eclipse.jetty.server.handler.RequestLogHandler"/> 
      </Item> 
     </Array> 
     </Set> 
    </New> 
    </Set> 

    <!-- ===================== --> 
    <!-- DefaultHandler config --> 
    <!-- ===================== --> 

    <Ref id="DefaultHandler"> 
    <Set name="showContexts">false</Set> 
    </Ref> 

</Configure> 

也许你还会想要防止目录浏览配置DefaultServletweb.xml

<servlet> 
    <servlet-name>default</servlet-name> 
    <servlet-class>org.eclipse.jetty.servlet.DefaultServlet</servlet-class> 
    <init-param> 
     <param-name>dirAllowed</param-name> 
     <param-value>false</param-value> 
    </init-param> 
    <load-on-startup>0</load-on-startup> 
    </servlet> 
+0

谢谢,您的回答非常有用... – Parag 2012-05-21 07:09:03

5

码头9.X版本已经拿出了在org.eclipse.jetty showContexts财产。 servlet.DefaultServlet类。因此,如果您不想显示上下文列表,我们可以将showContexts设置为闪烁。

<Item> 
 
<New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"> 
 
    <Set name="showContexts">false</Set> 
 
</New> 
 
</Item>