Apache服务器不听80端口

我的工作站和服务器都在同一个局域网段上,可以相互ping通(而且我可以从我的工作站ssh进入服务器,没有问题)。

centos 7上安装了一个默认的apache。

启动服务,但我无法从我的工作站浏览到我的networking服务器。

nmap报告端口80被过滤。

我禁用了服务器上的SELinux,但端口仍然被过滤。

这是netstat -l给我的:

Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN tcp 0 0 localhost:smtp 0.0.0.0:* LISTEN tcp6 0 0 [::]:http [::]:* LISTEN tcp6 0 0 [::]:ssh [::]:* LISTEN tcp6 0 0 localhost:smtp [::]:* LISTEN raw6 0 0 [::]:ipv6-icmp [::]:* 7 

奇怪的是,netstat -na将端口80显示为监听,但对于ipv6(尽pipe我在某处读取这并不意味着它不监听ipv4)

 Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 64 10.1.1.1:22 10.2.2.2:44939 ESTABLISHED tcp6 0 0 :::80 :::* LISTEN tcp6 0 0 :::22 :::* LISTEN tcp6 0 0 ::1:25 :::* LISTEN raw6 0 0 :::58 :::* 7 

这里是我的/etc/httpd/conf/httpd.conf的相关部分(我没有修改)

 <Directory /> AllowOverride none Require all denied </Directory> <Directory "/var/www"> AllowOverride None # Allow open access: Require all granted </Directory> <Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> <Files ".ht*"> Require all denied </Files> 

该服务似乎运行正常:

 httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled) Active: active (running) since Fri 2015-10-02 08:36:40 EDT; 1h 27min ago Process: 23294 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS) Main PID: 23302 (httpd) Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec" CGroup: /system.slice/httpd.service ├─23302 /usr/sbin/httpd -DFOREGROUND ├─23303 /usr/sbin/httpd -DFOREGROUND ├─23304 /usr/sbin/httpd -DFOREGROUND ├─23305 /usr/sbin/httpd -DFOREGROUND ├─23306 /usr/sbin/httpd -DFOREGROUND └─23307 /usr/sbin/httpd -DFOREGROUND 

为什么不在80端口监听?

正如迈克尔汉普顿已经评论你的文章,我敢打赌,你的防火墙(iptables)阻止你的stream量。

禁用它( systemctl disable firewalld ),或者告诉它允许端口80( firewall-cmd --zone=public --add-port=80/tcp --permanentstream量。

端口80被过滤的事实与netstat输出无关。 即使iptablesconfiguration为阻止(DROP或REJECT)连接到该端口,您应该看到Apache正在侦听80端口。

问题是httpd被configuration为侦听IPv4和IPv6 ANY地址(0.0.0.0和:),在这种情况下,netstat只显示IPv6地址。 这里的解释是:

https://bugs.launchpad.net/ubuntu/+source/net-tools/+bug/657270

简而言之:在这种情况下,IPv6连接能够提供两种协议,因此只有一个套接字被打开。 而且由于只打开了一个套接字,所以在netstat输出中只显示一个套接字。

检查iptables规则( iptables-save ),看看是否允许80端口。

出于testing目的,你可以做service iptables stopiptables -F