正如威廉所提到的,除非它们以 root 身份运行,否则 linux/unix 操作系统不会让进程侦听 < 1024 的端口。您可以以 root 身份运行 VirtualBox,尽管我已经阅读了关于这样做的可怕警告。这可能是非常不安全的。
相反,在主机系统上设置 Apache2 以侦听端口 80(它应该已经设置好了),但不是在主机上为网站提供服务,而是让它代理流量到某个更高的端口 - 比如 8080 - on主人。
然后,让 VirtualBox 将该更高端口转发到来宾操作系统端口 80。
Apache 设置将是这样的:
安装 HTTP 代理模块
a2enmod proxy_http
确保里面/etc/apache2/ports.conf
有Listen 80
指令
添加另一个站点/etc/apache2/sites-available
或修改默认站点(或只是将其添加ports.conf
)
<虚拟主机 *:80>
ProxyPreserveHost 开启
代理请求关闭
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</虚拟主机>
弹跳阿帕奇
service apache2 restart
VirtualBox 设置为host port: 8080, guest port: 80
.
流量会去:
client --> host:80 --> Apache --> host:8080 ---> vbox NAT ----> guest:80
这类似于 William 的 ssh 隧道,但每次重新启动主机时都不需要手动干预(重新输入密码)。