【问题标题】:How to route all *.dev to subfolders on vagrant box如何将所有 *.dev 路由到 vagrant box 上的子文件夹
【发布时间】:2015-01-31 22:20:21
【问题描述】:

我希望每一个*.dev的Host都会被路由到我的vagrant机器到/var/www/vhosts/*.dev/public,例如我的本地开发环境project1.dev位于/var/www/vhosts/project1.dev/public

所以当我在我的盒子中添加一个新的(子)项目时,我不需要更改我的 config.yaml(通过 puphpet.com 安装的 Vagrant)并重新加载机器。

在我的电脑上,我在/private/etc的hosts文件中添加了以下内容:

192.168.56.101 *.dev

在我的虚拟机上,我将/etc/apache2/sites-enabled 中的10-default_vhosts80.conf 更改为:

# ************************************
# Vhost template in module puppetlabs-apache
# Managed by Puppet
# ************************************

<VirtualHost *:80>
  ServerName default

  ## Vhost docroot
  DocumentRoot "/var/www/default"

  ## Directories, there should at least be a declaration for /var/www/default

  <Directory "/var/www/default">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Require all granted
  </Directory>

  ## Load additional static includes

  ## Logging
  ErrorLog "/var/log/apache2/default_vhost_80_error.log"
  ServerSignature Off
  CustomLog "/var/log/apache2/default_vhost_80_access.log" combined

  ## Custom fragment
    ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/default/$1
</VirtualHost>
<VirtualHost *.dev:80>
    ServerName dev
    VirtualDocumentRoot /var/www/vhosts/%0
</VirtualHost>

很遗憾,这不起作用。有任何想法吗?我是这门学科的初学者。

【问题讨论】:

    标签: apache vagrant vhosts virtual-hosts


    【解决方案1】:

    很遗憾,hosts 文件不支持使用通配符。您必须手动定义要重定向的每个主机。

    另外,您的主机文件位于/etc/hosts

    【讨论】:

    【解决方案2】:

    最后,我使用dnsmasq 将所有.localdev 域路由到127.0.0.1。请注意,我使用的是.localdev 而不仅仅是.dev.local,因为这似乎会导致问题(OS X 10.10),因为.devproposed gTLD,而.localApple's Bonjour 使用。

    然后我通过创建和启用此站点来配置 Apache:

    <VirtualHost *:80>
      ServerAlias localhost *.localdev #wildcard catch all
      VirtualDocumentRoot /hosts/%1/public
      UseCanonicalName Off
      <Directory "hosts">
        Options FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
      </Directory>
    </VirtualHost>
    

    (来自:http://brunodbo.ca/blog/2013/04/26/setting-up-wildcard-apache-virtual-host-wildcard-dns

    【讨论】:

      【解决方案3】:

      我使用proxy auto configuration file。这适用于 Windows、MacOS 和 Linux。简单,flexible,无需其他软件。以下示例将所有 *.dev 流量路由到您的 vagrant box:

      function FindProxyForURL(url, host) {
          if (dnsDomainIs(host, ".dev")) {
              return "PROXY 127.0.0.1:8080";
          }
      
          return 'DIRECT';
      }
      
      

      如果需要,请将127.0.0.1:8080 替换为您的 vagrant box 的 IP 和网络服务器端口。将此文件存储在某处。您可以将其存储在本地,也可以让 Vagrant-box 上的网络服务器托管该文件。

      Windows:请参阅here 如何在 Windows 上使用 PAC 文件。

      MacOS:请参阅here 如何在 MacOS 上使用 PAC 文件。您可以使用file:///Users/username/path/to/proxy.pac 链接到该文件。

      Linux:取决于 linux,但我相信 linux 用户可以通过 Google 了解他们的具体情况。

      【讨论】:

        猜你喜欢
        • 2013-06-09
        • 1970-01-01
        • 2018-05-10
        • 2015-06-19
        • 1970-01-01
        • 2021-08-09
        • 2014-03-30
        • 2014-06-27
        • 1970-01-01
        相关资源
        最近更新 更多