Apache 2.4 虚拟主机的连接被拒绝

Ten*_*nch 10 mac-osx virtualhost

我在 Mac OS X 上运行 Apache 2.4。apachectl configtest给我:语法确定。

我设置了两个虚拟主机,一个叫做 localhost,一个叫做 test.dev。

<VirtualHost *:80>
    DocumentRoot "/Users/psychomachine/Development/_localhost"
    ServerName localhost
    ServerAlias www.localhost
    <Directory />
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/Users/psychomachine/Development/test"
    ServerName test.dev
    ServerAlias www.test.dev
    <Directory />
        Require all granted
    </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

本地主机只是工作:

? curl -I -L localhost                                                                                                                                                              15:51:08
HTTP/1.1 200 OK
Date: Tue, 08 Dec 2015 14:51:17 GMT
Server: Apache/2.4.16 (Unix)
Last-Modified: Tue, 08 Dec 2015 08:52:04 GMT
ETag: "c-5265f1673f500"
Accept-Ranges: bytes
Content-Length: 12
Content-Type: text/html
Run Code Online (Sandbox Code Playgroud)

而 test.dev 没有:

? curl -I -L test.dev                                                                                                                                                               15:51:01
curl: (7) Failed to connect to test.dev port 80: Connection refused
Run Code Online (Sandbox Code Playgroud)

我的主机文件有一个 test.dev 条目,这就是为什么我可以 ping test.dev 并从 127.0.0.1 收到回复。

? ping test.dev                                                                                                                                                                     15:53:39
PING test.dev (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.069 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.096 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.111 ms
^C
--- test.dev ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.069/0.092/0.111/0.017 ms
Run Code Online (Sandbox Code Playgroud)

我已经花了几个小时看这个,但我仍然不明白如何 ping test.dev 但仍然拒绝连接。Apache 正在侦听端口 80,我没有收到页面禁止类型的错误。Apache 日志中没有 test.dev 的任何内容,因为 test.dev 的请求从未发送到 Apache。

我遗漏了拼图的一个关键要素——我希望有人能够指出我正确的方向。

提前谢谢了。

编辑: 正如我所说,Apache 正在监听 80:

sudo lsof -i ':80'                                                                                                                                                                16:54:46
COMMAND  PID   USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
httpd   2464   root    5u  IPv6 0x8883a2a43af0ca7f      0t0  TCP *:http (LISTEN)
httpd   2466 daemon    5u  IPv6 0x8883a2a43af0ca7f      0t0  TCP *:http (LISTEN)
httpd   2467 daemon    5u  IPv6 0x8883a2a43af0ca7f      0t0  TCP *:http (LISTEN)
httpd   2468 daemon    5u  IPv6 0x8883a2a43af0ca7f      0t0  TCP *:http (LISTEN)
httpd   2469 daemon    5u  IPv6 0x8883a2a43af0ca7f      0t0  TCP *:http (LISTEN)
httpd   2470 daemon    5u  IPv6 0x8883a2a43af0ca7f      0t0  TCP *:http (LISTEN)
Run Code Online (Sandbox Code Playgroud)

附加信息

scutil -r test.dev                                                    08:25:59
Reachable 

telnet test.dev                                                       08:26:17
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
telnet: Unable to connect to remote host

telnet test.dev 80                                                    08:26:43
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
telnet: Unable to connect to remote host
Run Code Online (Sandbox Code Playgroud)

127.0.0.1 test.dev/etc/hosts并且Listen *:80在 apache 的 conf 中。

小智 8

检查您httpd.conf是否有以下情况:

Listen 127.0.0.1:80
Run Code Online (Sandbox Code Playgroud)

您必须将其替换为:

Listen *:80
Run Code Online (Sandbox Code Playgroud)

通过这样做,Apache 将绑定到计算机的所有接口,而不仅仅是环回接口。

编辑完后不要忘记重新启动Apache httpd.conf


Ten*_*nch 4

尽管 Apache 正在侦听端口 80,但该端口拒绝连接。最后这对我有用:

我确保端口 80 在所有接口上对 TCP 开放,在 OSX 上您可以通过添加

pass in proto tcp from any to any port 80
Run Code Online (Sandbox Code Playgroud)

/etc/pf.conf。重新加载 pfctl 并没有完全解决问题,但重新启动却可以。现在我所有的虚拟主机都可以访问了。世界又恢复秩序了。