为什么 ?
我已经设置了一个非常简单的服务器,就像之前 50 次一样,但这是我第一次尝试使用 Vagrant。
当前行为:
Vagrant VM 在导航到“127.0.0.1:2222”时在浏览器中显示“SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1.1”。2222 是第一个 Vagrant VM 的标准端口。
预期行为:
127.0.0.1 应该显示 apache2 web 文件夹的 index.html/php。
为什么 ?
我已经设置了一个非常简单的服务器,就像之前 50 次一样,但这是我第一次尝试使用 Vagrant。
Vagrant VM 在导航到“127.0.0.1:2222”时在浏览器中显示“SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1.1”。2222 是第一个 Vagrant VM 的标准端口。
127.0.0.1 应该显示 apache2 web 文件夹的 index.html/php。
MarkBaker 的回答解决了这个问题,但 Vagrant 1.2.7(及更高版本)需要这种语法:
# Forward guest port 80 to host port 80
config.vm.forward_port 80, 80
完整的Vagrantfile
(您可以在 box 文件所在的位置找到它)如下所示:
Vagrant::Config.run do |config|
# Forward guest port 80 to host port 80
config.vm.forward_port 80, 80
end
此示例会将主机操作系统中端口 80(标准端口)上的请求路由到 Vagrant VM 中的端口 80。结果是,http://127.0.0.1
在主机浏览器中会显示 VM 的 localhost。
当使用多个虚拟机时,请注意您应该为每个虚拟机使用一个唯一的端口。
当您运行 vagrant up 时,您会看到一条消息显示 [default] Forwarding ports... -- 22 => 2222(适配器 1)。ssh 正在侦听 VM 上的端口 22,您可以从本地机器 ssh 到端口 22(默认)以连接到 VM;但是,如果您已将 VM 配置为允许外部访问,则另一台计算机上的其他任何人都需要使用您的 IP 地址,但端口 2222 才能连接到 VM。
如果您在工作中的机器上运行 VM,但希望在家中、客户办公室或什至从工作网络中的另一台机器上访问它,这可能会很有用。
使用浏览器连接到 SSH 端口 2222 将重定向到虚拟机上的端口 22,但监听该端口的是 ssh;并且网络浏览器不是 ssh 连接的正确工具。
我个人使用 putty 作为我的 ssh 客户端,但是使用 vagrant 您也可以vagrant ssh
在启动虚拟机后发出 a 。
额外的
端口转发的值
如果你设置
config.vm.network :forwarded_port, guest: 80, host: 8080
config.vm.network :forwarded_port, guest: 443, host: 8443
在您的 vagrantFile 中,并且您已允许对 VM 进行公共访问,那么您可以通过将浏览器指向端口 8080(或 8443 用于 https)而不是比更普通的默认端口 80 和 443... 这对于从笔记本电脑运行演示特别有用