Ere*_*evi 23 networking apache-http-server routing
我有一个在服务器上运行的 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
....
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试连接到本地主机时,我收到“连接被拒绝”:
[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.
Run Code Online (Sandbox Code Playgroud)
当我尝试连接到本地 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.
Run Code Online (Sandbox Code Playgroud)
另一方面,当我在同一网络中的另一台计算机上尝试相同的操作时,出现不同的错误“没有到主机的路由”:
[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.
Run Code Online (Sandbox Code Playgroud)
为什么我会收到这些错误?我应该怎么做才能从同一台计算机和网络中的其他计算机连接到 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
Run Code Online (Sandbox Code Playgroud)
Dan*_*l B 32
“连接被拒绝”表示目标机器主动拒绝连接。以端口 80 作为上下文,可能是以下原因之一:
因此,请检查您的 Apache 和 iptables 配置。
“没有到主机的路由”是指网络问题。它不是来自目标机器的回复。
Ter*_*nen 16
显示 的输出netstat -lnp,以便我们可以看到哪些进程实际上正在侦听服务器上的哪些端口,以及它们绑定到哪些 IP 地址。
关于第二台计算机,其网络连接看起来已损坏。netstat -rn将对那里的问题提供一些见解。
为了提供更好的建议,需要有关两台计算机上的一般网络配置和 IP 配置的更多详细信息。
编辑:
您必须更改 Apache 配置,使其成为 HTTP 服务器,而不是 SSL 服务器。大多数情况下,配置文件位于 /etc/apache2 下。
其他问题还需要IP配置和网络配置信息来分析。traceroute 信息没有透露任何信息。
小智 5
我发现这篇文章描述了我在公共云计算节点上尝试使用 nodejs 设置简单的 http 页面时遇到的问题。
这个命令对我有用:
iptables -F
此命令刷新即清除 Linux 系统内部设置的防火墙规则。
警告:由于我使用了属于公共云 VCN 的分布式防火墙,因此我并没有真正使用操作系统的防火墙。如果您没有外部防火墙,请确保在 iptables 中添加防火墙规则。