使用Laravel Homestead的Vagrant港口转发80至8000

时间:2014-06-30 14:49:16

标签: iis laravel vagrant virtualbox portforwarding

我的问题:

我只能通过端口8000访问我的网站,但不能通过80访问我的网站,这让我觉得它没有重定向80到8000,因为它应该是。我想简单地在我的浏览器中键入local.kujif.com并加载该站点,我在默认情况下读取的是端口80。我使用curl检查它并返回:

curl 'http://local.kujif.com'
curl: (7) Failed connect to local.kujif.com:80; No error

但是,如果我在网址中添加:8000则可以正常工作;它返回我的index.php,它只是打印' test':

curl 'http://local.kujif.com:8000'
test

我的详细信息:

我正在使用Laravel Homestead和Vagrant与Oracle VM VirtualBox。

在Homestead.rb中,它具有端口转发功能。我根本没有编辑过它:

config.vm.network "forwarded_port", guest: 80, host: 8000
config.vm.network "forwarded_port", guest: 3306, host: 33060
config.vm.network "forwarded_port", guest: 5432, host: 54320

我也为我的工作安装了Microsoft IIS。每当我需要vagrant使用localhost时,我显然会停止该服务。

"流浪"所示:

enter image description here

My Homestead.yaml文件:

---
ip: "192.168.10.10"
memory: 2048
cpus: 1

authorize: /Users/Tyler/.ssh/id_rsa.pub

keys:
    - /Users/Tyler/.ssh/id_rsa

folders:
    - map: C:\DEV\Linux
      to: /var/www/

sites:
    - map: homestead.app
      to: /home/vagrant/Code/Laravel/public
    - map: local.kujif.com
      to: /var/www/kujif

variables:
    - key: APP_ENV
      value: local

3 个答案:

答案 0 :(得分:8)

你应该继续使用1024以上的端口,因为它们是非特权端口,但如果你确实希望你可以在Homestead VM上作为端口80运行,只要你没有任何东西坚持主机上的端口。只是尝试了它,它有效,有一些陷阱。首先,您从.rb文件中更改该行:

  

config.vm.network" forwarded_port",guest:80,host:8000

     

     

config.vm.network" forwarded_port",guest:80,host:80

当您在保存后启动VM时,您将收到来自流浪者的警告:

  

==> default:您正尝试转发到特权端口(端口< = 1024)。最

     

==>默认值:操作系统将此限制为仅限特权进程(通常为

     

==> default:作为管理用户运行的进程)。这是一个警告

     

==>默认:端口转发不起作用。如果出现任何问题,请尝试

     

==>默认值:端口高于1024。

     

==>默认:转发端口......

default: 80 => 80 (adapter 1)

但它对我有用。现在,要实际访问VM,我必须使用它的私有IP而不是localhost名称:

http://192.168.10.10/

但果然我的网站就在那里,一切正常。如果您决定保留它,则可以将该IP地址添加到hosts文件中,以便为其提供一个很好的短名称。

希望这有帮助。

答案 1 :(得分:6)

我看到有一个公认的答案,但这个替代方案也可以帮助某人。 如果我理解正确,你真的不喜欢这个端口" 8000"!

您是否尝试过设置专用网络?

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
    /*other config stuff here */
    config.vm.network :private_network, ip: "192.168.33.22"

这样您只需使用该IP地址,或编辑主机文件即可将本地域映射到该IP。

查看Vagrant文​​档:Vagrant Private Networks

顺便说一句,您不应该关闭IIS本地服务器,因为它在完全不同的IP范围上运行。我在本地运行Apache,同时也访问VM服务器。如果需要,这允许您在本地使用诸如composer之类的工具(拉入laravel)。

答案 2 :(得分:4)

我不确定混淆是什么 - 这是它应该工作的方式。

VM上的Web服务器侦听端口80. Vagrant / VirtualBox将该端口从80(在VM上)转发到8000(在localhost上),以便您可以http://localhost:8000访问该站点。

虚拟机域名上的端口80将无法使用 - 该域名可能会解析为localhost

请尝试以下操作:dig local.kujif.com(或nslookup甚至ping - 我不知道Windows上可用的工具),以找出该名称的IP地址解决。您可能会发现它是127.0.0.1(localhost)。

您可以尝试使用宅基地文件中设置的IP地址:http://192.168.10.10/ - 此可能有效,但这取决于VM中如何配置网络。

理想情况下,您需要将网络设置为"桥接"在VM中 - 这将使VM(与您的网络一样)看起来像网络上的任何其他设备。 VM中的其他网络选项(对不起,我不熟悉VirtualBox中的选项)会将VM设置为自己的网络无法在VM外部访问 - 这就是端口转发用于公开网络服务的原因在VM上。