如何防止Jetty显示上下文相关信息

问题描述 投票:0回答:3

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

它看起来像这样:

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

  • /test ---> org.mortbay.jetty.webapp.WebAppContext@6910fe28{/test,/root/webserver/jetty-6.1.4/webapps/test}

我想阻止 Jetty 显示此消息,因为它包含服务器上上下文的完整路径。

有办法做到这一点吗?

jetty
3个回答
14
投票

配置 Jetty XML 时,您可以在

showContexts
上将
DefaultHandler
设置为 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>

也许您还想通过配置

DefaultServlet
web.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>

8
投票

该页面由 Jetty“DefaultHandler”提供

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

请注意,它还提供常规 404 页面和 favicon.ico,因此如果您依赖这些行为,那么您需要进行替换。


5
投票

Jetty 9.X 版本在 org.eclipse.jetty.servlet.DefaultServlet 类中提供了 showContexts 属性。因此,如果您不想显示上下文列表,我们可以将 showContexts 设置为 false。

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

© www.soinside.com 2019 - 2024. All rights reserved.