我在 VirtualBox 上设置了一个 ArchLinux 框,在其中安装并配置了 NGINX 服务以接受来自任何地方的请求。
listen 80;
server_name _;
我还更新了我的 UFW(并且尝试禁用它)以允许从 WWW(80)的任何位置进行访问,并且我还设置了仅主机网络桥,以便我可以通过静态 IP 从我的 Windows 主机访问我的盒子。
Status: active
To Action From
-- ------ ----
WWW ALLOW Anywhere
WWW (v6) ALLOW Anywhere (v6)
enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.33.16 netmask 255.255.255.0 broadcast 192.168.33.255
inet6 fe80::a00:27ff:fead:14c2 prefixlen 64 scopeid 0x20<link>
ether 08:00:27:ad:14:c2 txqueuelen 1000 (Ethernet)
RX packets 495 bytes 82862 (80.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 45 bytes 5446 (5.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
我可以通过给定的 IP 地址 (从其他 GUEST 机器和 HOST 机器) ping 该盒子,也可以 cURL 该 IP (如果我在同一个网络上),但是当我尝试从我的浏览器访问它时,在 Windows 主机上,我无法:“无法访问此站点”
PING:从主机 Windows 计算机
Pinging 192.168.33.16 with 32 bytes of data:
Reply from 192.168.33.16: bytes=32 time<1ms TTL=128
Reply from 192.168.33.16: bytes=32 time<1ms TTL=128
Reply from 192.168.33.16: bytes=32 time<1ms TTL=128
Reply from 192.168.33.16: bytes=32 time<1ms TTL=128
Ping statistics for 192.168.33.16:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
CURL:来自同一网络内的其他 GUEST 机器
curl -I 192.168.33.16:80
HTTP/1.1 200 OK
Server: nginx/1.10.1
Date: Mon, 10 Oct 2016 11:02:03 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 31 May 2016 18:11:32 GMT
Connection: keep-alive
ETag: "574dd3d4-264"
Accept-Ranges: bytes
CURL:从主机 Windows 计算机
curl: (7) Failed to connect to 192.168.33.16 port 80: Connection refused
有什么想法可以解释为什么以及如何解决它吗?
谢谢
答案1
好吧……经过一段时间的反复试验,似乎更改网络适配器并更改该适配器上定义的 IP 范围就可以了。我不知道这是否是它应该的工作方式,但它确实做到了。主要区别在于并非所有的 VirtualBox 都位于同一 IP 范围内。我的 Vagrant 是,而这个全新安装的不是。
如果有人有更好的解决方法或真正的解决方案(以便我们可以使用相同的适配器并将所有盒子保持在同一个网络上)请与我(和我们其他人)分享。
谢谢!