使用通配符 dns 自动为 laravel 应用程序创建子域
Automatically create a sub-domain for laravel application using wild card dns
我正在使用 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时,我得到了结果
fil
和 Liz
但是如果我访问 joseph.tindahan.local 我得到了这个错误
This site can’t be reached
我需要在主机上创建另一个子域才能使其正常工作。
问题是,如何自动完成?
当我输入任何名称作为子域时,它应该会自动创建,这样我就永远不会手动创建了?
据我所知,错误将在网络层解决,而不是从应用层解决(在本例中 laravel
)。
我认为您需要自己的本地 DNS 服务器。
我在 Linux (ubuntu) 中使用了 dnsmasq
,并且效果很好。
步骤:
apt install dnsmasq
- 用编辑器打开
/etc/dnsmasq.conf
。
- 添加
address=/your_domain.loc/127.0.0.1
(这只是一个示例,因此您可能需要更改 domain
和 ip
)。
- 运行
sudo systemctl restart dnsmasq
重启服务。
- 好吧,您可以在浏览器中测试来自
your_domain.loc
的任何 url,您将不会收到该错误 ;)
祝你好运
我正在使用 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时,我得到了结果
fil
和 Liz
但是如果我访问 joseph.tindahan.local 我得到了这个错误
This site can’t be reached
我需要在主机上创建另一个子域才能使其正常工作。
问题是,如何自动完成?
当我输入任何名称作为子域时,它应该会自动创建,这样我就永远不会手动创建了?
据我所知,错误将在网络层解决,而不是从应用层解决(在本例中 laravel
)。
我认为您需要自己的本地 DNS 服务器。
我在 Linux (ubuntu) 中使用了 dnsmasq
,并且效果很好。
步骤:
apt install dnsmasq
- 用编辑器打开
/etc/dnsmasq.conf
。 - 添加
address=/your_domain.loc/127.0.0.1
(这只是一个示例,因此您可能需要更改domain
和ip
)。 - 运行
sudo systemctl restart dnsmasq
重启服务。 - 好吧,您可以在浏览器中测试来自
your_domain.loc
的任何 url,您将不会收到该错误 ;)
祝你好运