“连接被拒绝”与“没有主机路由”


20

我在服务器上运行了Apache服务器:

[root@te-srv2 ~]# ps -ecf|grep httpd
root       698 32047 TS   19 10:45 pts/24   00:00:00 grep httpd
root     32081     1 TS   19 10:16 ?        00:00:00 /usr/sbin/httpd
apache   32083 32081 TS   19 10:16 ?        00:00:00 /usr/sbin/httpd
apache   32084 32081 TS   19 10:16 ?        00:00:00 /usr/sbin/httpd
....

但是,当我尝试连接到本地主机时,出现“连接被拒绝”的信息:

[root@te-srv2 ~]# wget http://127.0.0.1
--2014-02-24 10:46:16--  http://127.0.0.1/
Connecting to 127.0.0.1:80... failed: Connection refused.

当我尝试连接到本地IP地址时,也会发生相同的情况:

[root@te-srv2 ~]# wget http://132.70.6.157
--2014-02-24 10:46:40--  http://132.70.6.157/
Connecting to 132.70.6.157:80... failed: Connection refused.

另一方面,当我从同一网络中的另一台计算机尝试相同操作时,出现不同的错误“没有路由到主机”:

[erelsgl@erel-biu ~]$ wget http://132.70.6.157
--2014-02-24 10:49:11--  http://132.70.6.157/
Connecting to 132.70.6.157:80... failed: No route to host.

为什么会出现这些错误?为了能够从同一台计算机和网络中的其他计算机连接到http服务器,我该怎么办?

更新:根据评论和答案,这里有一些更多信息:

[root@te-srv2 ~]# traceroute 132.70.6.157
traceroute to 132.70.6.157 (132.70.6.157), 30 hops max, 60 byte packets
 1  te-srv2 (132.70.6.157)  0.082 ms  0.007 ms  0.005 ms

[erelsgl@erel-biu ~]$ traceroute 132.70.6.157
traceroute to 132.70.6.157 (132.70.6.157), 30 hops max, 60 byte packets
 1  te-srv2 (132.70.6.157)  0.446 ms !X  0.431 ms !X  0.420 ms !X

[root@te-srv2 ~]# netstat -lnp|grep http
tcp        0      0 :::443                      :::*                        LISTEN      5756/httpd          

可以traceroute 132.70.6.157同时从两个服务器上比较输出吗?
Werner Henze 2014年

1
443是SSL端口(https)。请检查您的配置,以确保你听的HTTP端口80
Mikpa

Answers:


13

显示的输出netstat -lnp,因此我们可以看到哪些进程实际上正在侦听服务器上的哪些端口以及它们绑定到的IP地址。

关于第二台计算机,其网络连接似乎已断开。netstat -rn将对那里的问题提供一些见解。

为了提供更好的建议,需要有关两台计算机上常规网络配置和IP配置的更多详细信息。

编辑:

您必须更改Apache配置,使其成为HTTP服务器,而不是SSL服务器。大多数情况下,配置文件位于/ etc / apache2下。

仍然需要IP配置和网络配置信息来分析其他问题。跟踪路由信息未显示任何内容。


确实,没有进程监听端口80!Apache服务器在端口443上侦听。但这为什么呢?
Erel Segal-Halevi 2014年

@ErelSegalHalevi:通常,80是HTTP,443是HTTPS(除非您更改这些默认端口)。因此,也许应用程序仅期望使用HTTPS?
Olivier Dulac 2014年

感谢netstat,我们发现这确实是Apache中的配置问题。
Erel Segal-Halevi 2014年

26

“拒绝连接”表示目标计算机主动拒绝了连接。以端口80为背景,可能是以下原因之一:

  • 127.0.0.1:80和132.70.6.157:80上没有听
  • *:80没听什么
  • 防火墙阻止与REJECT的连接

因此,请检查您的Apache和iptables配置。

“没有路由到主机”是指网络问题。这不是目标计算机的答复。


网络问题?那么同一个域如何在同一个域中为一个端口返回“连接被拒绝”并为另一个端口返回“无主机路由”?
phil294

也许您的防火墙或代理阻止了另一个端口,所以这就是网络问题的原因?
croraf

3

我发现这篇文章描述了在公共云计算节点上尝试使用nodejs设置简单的http页面时遇到的问题。

这个命令帮了我大忙:

iptables -F

此命令刷新,即清除Linux系统内部设置的防火墙规则。

温馨提示:由于我使用的是公共云VCN中的分布式防火墙,因此我并没有真正使用操作系统的防火墙。如果没有外部防火墙,请确保在iptables中添加防火墙规则。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.