使用 localhost 从主机访问 Vagrant 机器上的 symfony Web 服务器

Posted

技术标签:

【中文标题】使用 localhost 从主机访问 Vagrant 机器上的 symfony Web 服务器【英文标题】:Acces symfony web server on Vagrant machine from host with localhost 【发布时间】:2016-01-28 01:09:41 【问题描述】:

我用 ubuntu 14.04(下面的 vagrant 文件)创建了一台 Vagrant 机器。

我将主机端口 8080 转发到访客端口 8000。

我在主机上有一个 symfony 项目(Vagrant 文件夹)(只是构建了一个 symfony 新的 myproject)。

我 ssh 到客户机并在 /vagrant 文件夹上执行 php app/console server:run (web server is up)

我尝试从主机浏览器访问 localhost:8080,但没有答案。

如何从主机访问 symfony Web 服务器?

为了便于阅读,我最大限度地简化了我的 vagrant 和 provision 文件。

这是我的流浪文件:

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(2) do |config|
  config.vm.box = "ubuntu/trusty64"
  config.vm.network "forwarded_port", guest: 8000, host: 8080
  config.vm.network "private_network", ip: "10.10.10.10"      
  config.vm.provision "shell", path: "provision.sh"
end

provision.sh 文件:

#!/usr/bin/env bash
apt-get update > /dev/null
apt-get install --assume-yes php5-cli

当我在客户机上执行 nmap localhost 时:

Starting Nmap 6.40 ( http://nmap.org ) at 2015-10-28 09:04 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00020s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
111/tcp  open  rpcbind
5432/tcp open  postgresql
8000/tcp open  http-alt

非常感谢!

乔迪

【问题讨论】:

你试过http://10.10.10.10:8080(你的私网ip和外网端口)吗? "I forwarded host port 8080 to guest port 8000.",这几乎可以回答您的问题。您应该打开 localhost:8000,因为您将其转发到本地端口 8000 而不是 8080 @qooplmao 是的,我试过但没有答案:-( @Oldskool 我也尝试将 8000 转发到 8000,但没有成功。如果你做 vagrant init,你有一个带有端口转发示例的 vagrant 文件,它说: # 创建一个转发端口映射,它允许从主机上的端口访问机器内的特定端口。在下面的示例中,#accessing "localhost:8080" 将访问来宾计算机上的端口 80。 # config.vm.network "forwarded_port", guest: 80, host: 8080 它让我想到当你从主机浏览到 localhost:8080 时,在 80 (或我修改此示例时为 8000)的客户机上接收到 http 请求: -S 服务器是否监听了正确的 ip/port?您是否尝试过使用php app/console server:start 0.0.0.0:8000 运行服务器? 【参考方案1】:

感谢@qooplmao 的回答。

我创建一个答案是因为可能会更容易找到另一个有类似问题的答案。

问题是使用 app/console server:run 启动的 symfony 服务器刚刚收到 127.0.0.1 请求。

为了解决这个问题,@qooplmao 告诉我我们可以为所有 IP 启动 symfony 网络服务器。

只是在做:app/console server:start 0.0.0.0:8000 哦!如果你想阻止它,你必须app/console server:stop 0.0.0.0:8000

再次感谢您的帮助!

【讨论】:

你拯救了我的一天!非常感谢【参考方案2】:

在 symfony3 中你需要使用这个:

cd project directory
php bin/console server:run 0.0.0.0:8000

并按下停止服务器 ctrl + c

【讨论】:

以上是关于使用 localhost 从主机访问 Vagrant 机器上的 symfony Web 服务器的主要内容,如果未能解决你的问题,请参考以下文章

如何从 kubernetes 集群内部访问主机的 localhost

使用 localhost 从主机访问 Vagrant 机器上的 symfony Web 服务器

从虚拟机访问 localhost

从互联网访问 localhost [关闭]

基于域名配置虚拟主机后localhost不能访问问题

从 Mac 访问 Parallels Windows localhost [关闭]