6

我有一个在 Jelastic 上运行的 Tomcat 实例,并且部署了两个应用程序 - 用于“/foo”上下文和“/bar”上下文。

在处理对“/foo”的请求期间,我们向“/bar”(用于授权)发出 HTTP 请求,这里总是有一个异常 - ConnectException: ConnectionRefused。

如果我通过浏览器或本地 PC 上运行的代码连接到“/bar”,一切正常。此外,如果我从服务器(在处理对“/ foo”的请求期间)连接到位于不同位置的主机,一切也都按预期工作。看起来 Tomcat 以某种方式过滤来自同一主机的传入连接。有人知道该怎么做吗?

4

2 回答 2

3

“连接被拒绝”消息意味着某些东西无法在传输级别打开网络连接。这很可能意味着您尝试与之通信的服务未在连接尝试中使用的特定 IP 和端口号上侦听新连接。

查看:

  1. 被拒绝的请求使用正确的 IP 和端口号。
  2. 您的 tomcat 服务已正确配置为侦听该 IP 和端口。

请记住,您的系统可能有多个 IP 地址,您需要监听每个您希望使用的 IP 地址。另请记住,“本地主机”通常是不同的 IP 地址。

那么如果以上都不是问题:

  1. 如果网络级别或本地防火墙可能阻止流量,请检查。
  2. 如果由于复杂的虚拟网络而导致“奇怪”的可能性,请检查。

看起来 Tomcat 以某种方式过滤来自同一主机的传入连接。

Tomcat 不会那样“过滤”。但是很有可能您还没有配置 tomcat 来监听请求。检查“server.xml”文件以查看您是否已正确配置。


FWIW - 我不认为这是 Tomcat7 CSRF 过滤器。根据文档,这将返回一个 HTTP 响应。事实上,除了一开始不监听连接之外,我看不到接收 Tomcat 内部的任何东西如何通过任何方式生成“连接被拒绝”状态。

于 2013-05-19T00:17:01.177 回答
1

连接被拒绝肯定意味着网络问题。一个潜在的原因是您的应用程序尝试使用 http 标头“主机”值等建立连接,并且通常标头“主机”值不包含字符串内的 8080 端口 -但是 Jelastic 的 tomcat 在端口 8080 上运行,所以您可以尝试强制指定端口 8080 连接到您的第二个应用程序,或联系您的支持并要求他们设置 iptables 规则,将所有请求(在您的 tomcat 容器内)从 80 端口重定向到 8080 端口。

于 2013-10-22T20:04:29.563 回答