三个月来,我一直在尝试解决这个问题(断断续续),但仍然无法让它发挥作用,甚至不明白为什么会发生这种情况。
场景:
{HP 32bit, Windows 7}
我的笔记本电脑上安装了 VirtualBox
在这个 VB 中,我已经安装了 CentOs 6.5 minimal、Nginx、PHP-FPM,没有任何问题。
简而言之,一切运转良好。
问题
问题是我只有locahost
连接到互联网才能访问。
当连接到互联网时,如果我http://192.168.1.100/
一切正常,我可以index.html
正常查看我的文件,但是一旦我离线,我什么也看不到,就好像我试图在没有连接到互联网的情况下访问谷歌一样。
这是我的 Vbox 设置的屏幕截图:
以下是配置/etc/sysconfig/network-scripts/ifcfg-eth0
:
我曾多次做过以下事情。
尝试过
iptables
禁用/启用,
尝试过仅主机、NAT 桥接适配器,
尝试过静态 IP 和 DHCP,
多次刷新网络
我确信答案就在某个地方,因为我仍然没有完美的设置配置,但是我混合了很多东西,所以仍然无法让它工作。
答案1
在 VirtualBox 网络设置中,您已将 CentOS 机器“桥接”到您的 WiFi 网络,并使用静态 IP 地址。
您的笔记本电脑在其 WiFi 连接上不会有固定的 IP 地址;当您未连接到 WiFi 时,Windows 没有网络连接,也不知道如何访问 CentOS 服务器。当您连接到 WiFi 时,您的路由器会为 Windows 提供同一网络上的地址,然后它就可以访问 CentOS 服务器。
它们运行在同一台计算机上,但它们是分开的,无法自动相互通信。解决方法是以某种方式更改网络设置,更改方式取决于您想要做什么。
最简单的方法可能是进入 Windows 控制面板、网络连接,然后找到您的有线网络适配器(假设您的笔记本电脑有一个而您不使用它),然后转到属性并设置 TCP/IP 网络地址为 192.168.1.101、子网掩码为 255.255.255.0、无网关。
这将假装您的计算机始终与 CentOS 机器在同一个网络上并且可以随时访问它,但仍应允许 WiFi 连接接管并作为您使用它时的互联网连接,并且仍允许 CentOS 在连接 WiFi 时连接到互联网,并且仍允许其他计算机连接到 CentOS,并且仍允许您的计算机在其他 WiFi 网络上运行,但它将阻止您的有线连接在很多地方运行。
您还可以采用其他方法,但它们都会影响一个或多个用例,并且需要后续做更多的工作。
[编辑:我忽略了您说“无法访问localhost
”的地方。这可能很重要。您应该准确描述您的测试是什么 - 您使用的是哪台计算机,您正在加载什么软件,您在哪里输入 localhost?]
编辑:新的建议配置
这涉及到一个单独的双计算机网络,仅用于 Windows 与 CentOS 通信。
在 Windows 中,在您在此处显示的图像中https://i.stack.imgur.com/a3CIZ.jpg- 转到 VirtualBox 仅主机网络适配器的属性,进入 Internet 协议 TCP/IP v4 属性,设置 IP 地址为 192.168.250.1,子网掩码为 255.255.255.0,其他设置保留为空,然后单击“确定”。
在 CentOS 虚拟机设置(关闭电源)中,转到网络设置并将适配器 1 设置为“仅主机适配器”。
启动 CentOS 机器。编辑
/etc/sysconfig/network-scripts/ifcfg-eth0
并设置 IP 地址 192.168.250.2 和子网掩码 255.255.255.0。没有网关,没有 DNS 服务器。重启网络或重启 CentOS 机器。
现在您应该有了这个新的、独立的网络 192.168.250.1 -- 192.168.250.2,它们之间可以进行通信。运行 NGinX,让它监听 192.168.250.2 地址,然后http://192.168.250.2/
在 Windows 中访问它。
无论有没有 WiFi,这都应该可以工作。唯一的问题是 CentOS 无法访问互联网进行更新或安装。如果这是个问题:
关闭 CentOS 计算机并转到网络上的 VirtualBox 设置。选择适配器 2 选项卡,启用它,并将其设置为桥接适配器。
启动 CentOS 机器,并配置 eth1 接口。配置它以动态/通过 DHCP 获取 IP 地址。我使用过,
system-config-network-tui
但我必须安装它。您可能能够复制/etc/sysconfig/network-scripts/ifcfg-eth0 to /etc/sysconfig/network-scripts/ifcfg-eth1
重新启动网络以确保它出现。
它应该有一个连接到你的 WiFi 的网络连接,就像原来的一样,只有在连接 WiFi 时才有效,但 CentOS 可以使用它来访问互联网。