Homestead 无法远程访问第二个站点

Homestead cant access second site remotely

我有一个站点设置正常,但无法远程访问第二个站点:

我的 YAML:

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

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: ~/Projects
  to: /home/vagrant/Projects

sites:
    - map: app.app
      to: /home/vagrant/sites/app1/public
    - map: app2.app
      to: /home/vagrant/sites/app2/public
      port: 8100

ports:
    - host: 81
    - guest: 8100

我可以使用我的 IP 轻松访问第一个站点 - http://192.168.0.5/ 但是第二个站点不能共享同一个端口,所以我添加了 81 -> 8100.

当我尝试重新配置我的 homestead vagrant box 时,它说: 这台机器的配置有错误。请修复 以下错误并重试:

vm:
* Forwarded port definitions require a "host" and "guest" value
* Ports to forward must be 1 to 65535
* Ports to forward must be 1 to 65535

有什么想法吗?

根据 https://laravel.com/docs/5.4/homestead

中的文档

添加多个站点时不需要指定端口

sites:
    - map: homestead.app
      to: /home/vagrant/Code/Laravel/public
    - map: another.app
      to: /home/vagrant/Code/another/public

然后将以下内容添加到您的主机文件

192.168.10.10  homestead.app
192.168.10.10  another.app

确保 运行 vagrant reload --provision

服务 xip.io 可以快速解决这个问题。方法如下:

例如,我有以下 Homesite 应用设置,'rentmanager.test'。这是我在 Homestead 上配置的第一个应用程序,因此它是默认路由。要从我的本地网络访问它,我所要做的就是转到:

http://rentmanager.test.192.168.5.124.xip.io:8000

其中 'rentmanager.test.' 是我在 Homestead 上的 Laravel 应用程序的名称,“192.166.5.124”。是我在本地网络上的 IP 地址,'xip.io:8000' 是重定向服务域和在 Homestead 设置的默认路由之外访问应用程序 (8000) 所需的端口。

现在,这对于您提供的第一个站点开箱即用,但如果我们有多个站点会怎样?这需要更多的跑腿工作。假设我们有第二个我们想要访问的名为 'sitescanner.test' 的应用程序。如果我尝试使用新应用程序 URL 访问上面相同的 URL,您会看到我仍然收到第一个应用程序!让我们也解决这个问题。

首先,您需要在主机文件中添加一条额外的规则。因此,假设我们的新应用名为 'sitescanner.test':

# Vagrant Sites External Access

192.168.10.10 sitescanner.test.192.168.5.124.xip.io

一旦就绪,我们必须更新 Homestead 中的配置脚本以创建正确的虚拟主机条目,以便 Homestead 知道如何路由请求。为此,我们将编辑您的 Homestead.yaml。在 'sites:' 指令下:

- map: sitescanner.test
  to: /home/vagrant/Code/sitescanner/public   
- map: sitescanner.test.192.168.5.124.xip.io
  to: /home/vagrant/Code/sitescanner/public 

完成后,只需 'vagrant halt'(如果它已经 运行),然后 'vagrant up --provision',您应该可以从

访问您的站点
http://sitescanner.test.192.168.5.124.xip.io:8000

网络上的任何地方!希望这可以帮助。

思来想去,最后考虑一下这个配置:

  • 如果可能,您可能希望在主机上设置一个静态 IP 地址。如果您通过 DHCP 分配了一个动态 IP 地址,那么如果您曾经分配过一个新 IP,则此配置可能(并且很可能)最终会中断。

我不知道您使用的 Laravel 或 Homestead 是哪个版本,但这是可能的。使用 Laravel 5.6 或 5.7 记录的 Homestead 版本,您已经完成了 95% 的工作。

  1. 您应该使用 port: 81.
  2. ,而不是在 sites 配置中使用 port: 8100
  3. 代替guesthost,使用sendto

除了这两个差异外,我使用的设置与您完全相同,它适用于我。

ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: ~/Projects
      to: /home/vagrant/Projects

sites:
    - map: app.app
      to: /home/vagrant/sites/app1/public
    - map: app2.app
      to: /home/vagrant/sites/app2/public
      port: 81

ports:
    - send: 8100
      to: 81

如果您的主机文件有 app2.app 的条目,您将能够通过 http://app2.app:8100 访问您的应用程序,如果您不使用主机文件,则可以通过 http://192.168.0.5:8100 访问您的应用程序。