我有一台运行 CentOS 6.4 的虚拟机,并尝试设置 Apache 服务器,但无法显示 Apache 测试页面。
我已经使用它进行了安装yum install httpd
,并检查所有软件是否都是最新的。
NameVirtualHost *:80
然后,我通过取消注释该行来启用端口 80 上的基于名称的虚拟托管/etc/httpd/conf/httpd.conf
,并在端口 80 中打开所有传入流量:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
/sbin/service iptables save
完成所有这些设置后,我进入 Windows 中的浏览器并输入虚拟机的 IP(192.168.1.XX),但浏览器无法连接到它。
另一方面,当我curl localhost
在虚拟机中运行时,我确实看到了测试页面的 HTML,因此可能是由于某种原因,防火墙仍然阻止了端口 80。
尚未添加虚拟主机,但据我所知,这对于显示 Apache 测试页面不是必需的。
编辑:
运行时netstat -ntlup
,看起来 httpd 正在运行并且打开了端口 80:
[root@myhostname ~]# netstat -ntlup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1167/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1243/master
tcp 0 0 :::80 :::* LISTEN 2245/httpd
tcp 0 0 :::22 :::* LISTEN 1167/sshd
tcp 0 0 ::1:25 :::* LISTEN 1243/master
udp 0 0 0.0.0.0:68 0.0.0.0:* 2087/dhclient
输出为apachectl -S
:
[root@myhostname ~]# apachectl -S
httpd: apr_sockaddr_info_get() failed for myhostname
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
[Tue Sep 17 17:03:06 2013] [warn] NameVirtualHost *:80 has no VirtualHosts
VirtualHost configuration:
Syntax OK
如果我将该行添加ServerName myhostname:80
到/etc/httpd/conf/httpd.conf
,那么apachectl
就可以确定服务器的名称(见下文),但我仍然在 Windows 浏览器中没有得到任何输出。
[root@myhostname ~]# apachectl -S
[Tue Sep 17 17:27:09 2013] [warn] NameVirtualHost *:80 has no VirtualHosts
VirtualHost configuration:
Syntax OK
对于我可能遗漏了什么有什么想法吗?
(我把这个问题从堆栈溢出)
答案1
这个问题已经得到解答了: CentOS 6-iptables 阻止通过端口 80 进行 Web 访问
需要重新安排 iptables 中的规则,而不是按照 CentOS 设置的默认规则