运行 CentOS 的虚拟机,可以 ping 但无法访问 Web 服务器

运行 CentOS 的虚拟机,可以 ping 但无法访问 Web 服务器

我一直在尝试首次设置 CentOS 服务器(曾经设置过 Linux 服务器)。安装过程很顺利,我安装了 LAMPP(以及 x86 所需的依赖项),使用了 lampp 安全工具,然后开始http://192.168.0.112:8888/使用 elinks。

到目前为止一切顺利...但后来我想从网络中的其他计算机(包括虚拟机的主机)访问服务器。但我无法让它工作并且一直收到 404...

请注意,我在该网络上运行了另一个 Web 服务器(在端口 80 上),因此我在 httpd.conf 中更改为Listen 80Listen 8888并将路由器中的 8888 转发到 CentOS 安装的 IP(静态:192.168.0.112,根据 ifconfig)。

Ping192.168.0.112返回:

Ping statistics for 192.168.0.112:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

服务器详细信息:

  • CentOS 6.5 最小版本,从 .iso 安装
  • LAMPP 1.8.1(通过 apachefriends.org 的 wget)

主人详细信息:

  • Windows 8.1 x64
  • VirtualBox 正在使用桥接网络适配器(荷兰语翻译:Netwerk 桥接适配器)

有什么办法可以解决这个问题吗?我自己就是一名前端开发人员,因此对网络和服务器还比较陌生,但我真的想涉足后端领域。

现在真的很晚了,所以我要睡觉了。希望明天早上我能对网络/CentOS 的工作原理有一些很好的了解!

提前致谢。

答案1

很可能是 apache 内部的虚拟主机配置。其中有一节会显示“允许来自 [某物]”。确保它显示“允许来自所有人”。

这是我的样子;

<Directory /var/www/>
    Options FollowSymLinks
    AllowOverride AuthConfig FileInfo Limit
    Order allow,deny
    allow from all
</Directory>

我个人的意见是根本不使用 xampp。你实际上让事情变得更加困难。只需使用 CentOS 中的本机软件包即可。这里有一个很好的教程(来自快速谷歌搜索)

https://www.digitalocean.com/community/articles/how-to-install-linux-apache-mysql-php-lamp-stack-on-centos-6

或者,您可以安装 Ubuntu Server,在安装阶段有一个选项,您可以选中它来安装 LAMP。它将为您下载并安装所有软件包。

祝你好运。

答案2

我也遇到了这个问题。根据您的描述,我运行的设置与您相同。事实证明我已经firewalld安装并正在运行,因此必须使用以下命令:

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

这样我就可以apache从虚拟机外部访问在虚拟机上运行的服务器。

答案3

运行以下命令:

iptables -I INPUT -i eth1 -p tcp -m tcp --dport 80 -j ACCEPT

为了使更改持久化,请转到 /etc/sysconfig/ 并将以下行添加到 iptables:

-A INPUT -i eth1 -p tcp -m tcp --dport 80 -j ACCEPT

然后,重新启动网络服务器:

service httpd restart

现在您就可以访问 VirtualBox 了。

答案4

听起来你把路由器上的流量转发到了 ,而192.168.0.112你真正想要的是192.168.0.112:8888。了解更多有关哪些计算机可以和不能 ping CentOS 计算机、路由器如何配置以将端口转发到它以及 的内容是什么的信息会很有帮助/etc/httpd/conf/httpd.conf

此外,您在这个网络上拥有另一个网络服务器也没关系,除非您正在路由到另一个网络并希望能够访问这个网络服务器,而且这两个网络服务器都具有相同的外部 IP。

如果是这种情况,则假设您的“外部” IP 为 ,10.10.10.10而此路由器的内部 IP 为192.168.0.1。假设您的 CentOS 网络服务器位于 ,192.168.0.112如所述,而您的其他服务器位于 ,192.168.0.110并在端口 处托管网络服务器80

因为您希望192.168.0.110能够为 上的设备提供 HTTP 流量10.10.10.*,所以您转发10.10.10.10:80到了192.168.0.110。但是,这并不意味着您必须在 端口上提供来自 的 Web 流量。只有当您想从需要路由的设备进行访问8888时,它们才需要 之外的端口。因此在这种情况下,您将继续在 端口上提供网页,并将入站流量从 转发到。192.168.0.112192.168.0.112192.168.0.180192.168.0.1128010.10.10.10:8888192.168.0.112:80

最后,您在浏览器中收到404消息意味着您正在访问某种网络服务器:

404 或 Not Found 错误消息是 HTTP 标准响应代码,表示客户端能够与服务器通信,但服务器找不到所请求的内容。(维基百科)

相关内容