【问题标题】:Limiting Tomcat http connector to Apache server将 Tomcat http 连接器限制为 Apache 服务器
【发布时间】:2014-11-26 04:17:20
【问题描述】:

我在 Tomcat 7 前使用 Apache 2.4。我正在尝试使用 web-sockets,所以我在 tomcat 中配置了基于 http 的连接器,如下所示

<Connector port="8009"  protocol="HTTP/1.1" proxyPort="80" maxPostSize="10485760" redirectPort="8443" URIEncoding="UTF-8"  />

我已经在 Apache 2.4 Web-socket 连接中配置了 mod_proxy 和 mod_proxy_wstunnel 和 mod_proxy_http,当通过“http://webserver/myapp”访问 App 时工作正常。

不过应用也可以通过http://webserver:8009/myapp访问。

我希望我的应用只能通过 Apache 网络服务器 (http://webserver/myapp) 访问,而不是直接使用 tomcat(http://webserver:8009/myapp)。我不能使用 AJP 模块(mod_proxy_ajp 或 mod_jk),因为 AJP 模块不支持网络套接字。

有没有办法可以将 tomcat Connector 限制为仅限 Apache 网络服务器。

【问题讨论】:

    标签: apache tomcat websocket connector


    【解决方案1】:

    你可以用这个。

    <Context path="/manager" docBase="manager" reloadable="true" privileged="true" >
          <Valve className="org.apache.catalina.valves.RemoteIpValve"/>
          <Valve className="org.apache.catalina.valves.RemoteHostValve" allow="<your IP regex>"/>
    </Context>
    

    在上下文路径、文档库和 IP 地址中更改适当的值。这至少会限制在 localhost。

    另一种方法是在以下代码的帮助下仅在 localhost 上监听 tomcat。

    <Connector port="8009" address="127.0.0.1" 
    

    【讨论】:

      【解决方案2】:

      在您的服务器上使用防火墙。这样,您不仅可以使 tomcat 不可用,而且还可以使碰巧在该计算机上打开端口的任何其他进程。

      将您希望对全世界可用的端口列入白名单,并默认阻止所有其他端口。

      【讨论】:

      • Apache 在 Windows 上运行,此服务器解决方案作为产品出售,因此无法添加防火墙。不能限制对 Apache 的 tomcat 连接器的访问吗?此外,我不希望即使在 localhost 上也可以直接访问 tomcat。
      • 如果它甚至在 localhost 上都不可用:不。 Tomcat 应该如何确定连接的来源(但在本地主机上)?如果你销售服务器产品,应该有一些关于如何绑定它的文档。甚至 Windows 也有防火墙
      • 但是,如果不将tomcat直接暴露给外部世界,我有没有办法在Tomcat和Apache中使用web-sockets!
      猜你喜欢
      • 2015-06-06
      • 1970-01-01
      • 1970-01-01
      • 2019-02-14
      • 1970-01-01
      • 2019-09-01
      • 2014-07-28
      • 2011-10-14
      相关资源
      最近更新 更多