我注意到两台 Mac 上的 Apache 虚拟主机存在一些问题,它们的设置(就 httpd.conf、vhosts、主机等而言)相同。在一台 Mac 上,虚拟主机运行正常,但在另一台 Mac 上,端口 80 上的连接被拒绝。
我认为这似乎不是 Apache 配置的问题,而是与端口有关。
也就是说,无法在 80 上为虚拟主机 test.dev 提供服务的机器在端口扫描时显示了以下内容:
斯堪的纳维亚半岛
Port Scanning host: 127.0.0.1
Open TCP Port: 88 kerberos
Open TCP Port: 445 microsoft-ds
Open TCP Port: 548 afpovertcp
Open TCP Port: 631 ipp
Сканирование портов завершено…
为 test.dev 提供服务的机器显示如下信息:
Port Scanning host: 127.0.0.1
Open TCP Port: 22 ssh
Open TCP Port: 53 domain
Open TCP Port: 80 http
Open TCP Port: 88 kerberos
Open TCP Port: 445 microsoft-ds
Open TCP Port: 548 afpovertcp
Open TCP Port: 631 ipp
Сканирование портов завершено…
因此,在“好”的机器上,列出了端口 80,而在“坏”的机器上则没有。
我在两台机器上都让 apache 监听 *:80 等,正确设置了 vhosts、在 hosts 文件中设置了适当的条目等。两台 Mac 都运行 El Capitan,都在同一个网络上等。
在好的 Mac 上,可以运行 test.dev,但是在坏的 Mac 上,我得到以下信息:
↪ curl -I -L test.dev 15:51:01
curl: (7) Failed to connect to test.dev port 80: Connection refused
我有点不知所措,因为我不知道如何解决这个问题。为什么端口 80 没有显示在坏 Mac 的端口扫描中(使用网络实用程序应用程序),但却sudo lsof -i -P | grep -i "80"
给我:
httpd 4482 root 5u IPv6 0xfe89d5ee2c7da24b 0t0 TCP *:80 (LISTEN)
httpd 4484 daemon 5u IPv6 0xfe89d5ee2c7da24b 0t0 TCP *:80 (LISTEN)
httpd 4485 daemon 5u IPv6 0xfe89d5ee2c7da24b 0t0 TCP *:80 (LISTEN)
httpd 4486 daemon 5u IPv6 0xfe89d5ee2c7da24b 0t0 TCP *:80 (LISTEN)
httpd 4487 daemon 5u IPv6 0xfe89d5ee2c7da24b 0t0 TCP *:80 (LISTEN)
httpd 4488 daemon 5u IPv6 0xfe89d5ee2c7da24b 0t0 TCP *:80 (LISTEN)
提前谢谢了。
一切顺利,Tench
编辑:我被要求解释为什么这不是关于拒绝连接的更普遍的问题的重复问题。不是因为我的问题特定于 Mac OSX,并且对我有用的解决方案(见下文)需要编辑 pf.conf 并使用 pfctl,而所谓的重复问题中根本没有提到。
答案1
为了确保所有接口上的 80 端口均对 TCP 开放,我添加了
pass in proto tcp from any to any port 80
至/etc/pf.conf
。重新加载 pfctl 并没有起到什么作用,但重新启动却起了作用。现在,端口在端口扫描中显示为打开,我的虚拟主机也得到了应有的服务。