使用 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