![无法连接到主机外的 ubunu 虚拟机上的 apache 服务器](https://linux22.com/image/1180827/%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5%E5%88%B0%E4%B8%BB%E6%9C%BA%E5%A4%96%E7%9A%84%20ubunu%20%E8%99%9A%E6%8B%9F%E6%9C%BA%E4%B8%8A%E7%9A%84%20apache%20%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
我在我的 ubuntu 虚拟机上设置了一个 apache 服务器,但无法在主机、手机、虚拟机等外部连接到它。我不知道我是否已正确设置所有设置,因为这是我第一次做这样的事情。我尝试过端口转发端口 80 和 443,但我不确定在哪里使用哪个 IP。在端口转发页面上,系统要求我输入服务器 IP 和原始 IP,以及起始/结束端口。我应该在这里使用什么 IP?
我还尝试完全禁用主机上的防火墙。当我尝试通过其静态 ipv4 地址或本地主机访问主机上的服务器时,它可以工作。但是我无法使用同一网络上的手机等上的相同 ip 连接到它。有些东西告诉我我在某处使用了错误的 ip。
在 apache2.conf 文件中,它显示“Include ports.conf”,其中包含:
Listen *:80
Listen *:443
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listem 443
</IfModule>
正如我所说,我对 Linux 和服务器完全陌生。现在,我只想让我的服务器显示一个简单的 php 页面,显示当前时间。
答案1
为了连接到 VirtualBox 实例,您需要将网络配置为使用“桥接适配器”。此操作在主机上完成,如下面的屏幕截图所示:
完成后,启动虚拟机并确认分配给它的 IP 地址。您可以使用以下命令执行此ip
操作,如以下示例中所示:
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s31f6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 8c:16:45:06:86:49 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.110/24 brd 192.168.0.255 scope global noprefixroute enp0s31f6
valid_lft forever preferred_lft forever
inet6 2402:6b00:3ed9:f300:fc3f:a893:ec64:92ea/64 scope global temporary dynamic
在这里我可以看到虚拟机的 IP 地址为192.168.0.110
。如果我将其放入浏览器中,那么我将看到来自 Apache 的结果。
如果您要在本地网络上对虚拟机使用 SSL(端口 443),则可能需要自签名的东西或进行大量 DNS 繁琐工作才能在独立网络内使用 Let's Encrypt 的东西。除非您计划将虚拟机暴露给整个互联网,否则您应该能够熟练使用端口 80 上的标准 HTTP 请求。
希望这能帮助你解决一些最初的问题