pro*_*cer 27 domain-name-system wildcard subdomain
我让我的托管商添加三个子域,所有子域都指向 A 记录的 IP。似乎他只是添加了一个通配符 DNS 记录,因为任何随机子域现在都解析为我的 IP。从技术角度来看,这对我来说没问题,因为没有子域指向其他任何地方。再说一次,我不喜欢他不做我要求的事情。所以我想知道是否还有其他理由告诉他改变这一点。有吗?
我发现的唯一负面影响是有人可以使用http://i.dont.like.your.website.mywebsite.tld
.
Mic*_*ton 23
如果您曾经将一台计算机放在该域中,您会遇到奇怪的 DNS 故障,当您尝试访问 Internet 上的某个随机站点时,您反而会到达您的站点。
考虑:您拥有域example.com
。您设置了工作站并为其命名。......让我们说,yukon.example.com
。现在你会注意到/etc/resolv.conf
它有一行:
search example.com
Run Code Online (Sandbox Code Playgroud)
这很方便,因为这意味着您可以进行主机名查找,例如www
,它将www.example.com
自动为您搜索。但它有一个阴暗面:如果你访问,比如说,谷歌,那么它会搜索www.google.com.example.com
,如果你有通配符 DNS,那么它会解析到你的站点,而不是到达谷歌,你会在你自己的站点上结束。
这同样适用于您运行网站的服务器!如果它不得不调用外部服务,那么主机名查找可能会以同样的方式失败。因此api.twitter.com
,例如突然变为api.twitter.com.example.com
,直接路由回您的站点,当然会失败。
这就是我从不使用通配符 DNS 的原因。
Dam*_*nal 16
通配符 DNS 记录是不好的做法吗?
就个人而言,我不喜欢它。特别是当该域中有机器时。错别字不加检查,错误不那么明显……但它从根本上没有任何问题。
我发现的唯一缺点是有人可以使用http://i.dont.like.your.website.mywebsite.tld链接到我的网站。
让您的 http 服务器将所有此类请求重定向到正确的规范地址,或者根本不响应。对于 nginx,这将类似于:
server {
listen 80;
server_name *.mywebsite.tld;
return 301 $scheme://mywebsite.tld$request_uri;
}
Run Code Online (Sandbox Code Playgroud)
然后是常规
server {
listen 80;
server_name mywebsite.tld;
[...]
}
Run Code Online (Sandbox Code Playgroud)
这都是见仁见智的问题。对我来说,这不是坏习惯。
我正在创建一个多租户应用程序,它为每个租户使用一个数据库。然后它根据子域选择要使用的数据库。
例如milkman.example.com
将使用tenant_milkman
数据库。
像这样的我已经分居表为每个租户一样,tenant_milkman.users
,tenant_fisherman.users
,tenant_bobs_garage.users
,这在我看来是一个巨大的很多更容易维护,而不必在同一表中所有公司的所有用户对于此特定的应用程序。
[edit - Michael Hampton has a good point]
话虽如此,如果您没有像我一样接受任何(可变)子域的特定理由,那么您不应该接受它们。