如何将所有* .dev路由到流浪盒上的子文件夹

问题描述 投票:1回答:3

我希望每个*.dev主机将被路由到我的流浪机到/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

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

# ************************************
# 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
3个回答
2
投票

我用的是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替换为流浪盒的IP和Web服务器端口。将此文件存储在某处。您可以在本地存储它,也可以让Vagrant-box上的Web服务器托管该文件。

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

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

Linux:对于linux来说,它取决于,但我确信linux用户可以根据自己的具体情况使用Google。


1
投票

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

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


0
投票

最后,我使用dnsmasq将所有.localdev域路由到127.0.0.1。请注意,我使用的是.localdev,而不仅仅是.dev.local,因为这似乎会导致问题(OS X 10.10),因为.devproposed gTLD.local使用Apple'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

© www.soinside.com 2019 - 2024. All rights reserved.