使用通配符dns

时间:2017-11-12 06:34:46

标签: linux host wildcard-subdomain dnsmasq

我正在使用laravel5.5并且我正在实现通配符dns,为每个用户提供他们自己的子域。

在我的实施中,我正在使用带有Windows 10和laragon服务器的笔记本电脑。

在laragon上我设置如下

<VirtualHost *:80>
    DocumentRoot "C:/laragon/www/tindahan/public/"
    ServerName tindahan.local
    ServerAlias *.tindahan.local
    <Directory "C:/laragon/www/tindahan/public/">
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

并在主机文件上

127.0.0.1      tindahan.local       
127.0.0.1      fil.tindahan.local   
127.0.0.1      liz.tindahan.local     

在路线上

Route::get('/', function () {
  $url       = parse_url(url()->current());
  $domain    = explode('.', $url['host']);
  $subdomain = $domain[0];

  dd($subdomain);
});

所以当访问fil.tindahan.local或liz.tindahan.local时,我得到了结果

filLiz

但如果我访问joseph.tindahan.local,我收到此错误

  

无法访问此网站

我需要在主机上创建另一个子域才能使其正常工作。

问题是,如何自动完成?

当我输入任何名称作为子域时,它应该自动创建,以便我永远不会手动创建它?

1 个答案:

答案 0 :(得分:0)

据我所知,错误将在网络层解决,而不是从应用层解决(在本例中为laravel)。

我认为您需要自己的本地DNS服务器。

我在Linux(ubuntu)中使用过dnsmasq,它运行良好。

步骤进行:

  1. apt install dnsmasq
  2. 使用编辑器打开/etc/dnsmasq.conf
  3. 添加address=/your_domain.loc/127.0.0.1(这只是一个示例,因此您可能需要更改domainip
  4. 运行sudo systemctl restart dnsmasq以重新启动服务。
  5. 嗯,您可以在浏览器中测试来自your_domain.loc的任何网址,但您不会收到该错误;)
  6. 古德勒克