通配符DNS仅适用于第一级子域

时间:2014-02-10 21:23:00

标签: dns wildcard-subdomain

我想知道如何仅为第一级子域设置通配符DNS,例如:

user.example.com     // valid
www.user.example.com // invalid

我的BIND区域域配置如下:

; example.com
$TTL 86400
@       IN      SOA     ns.example.com. domain.example.com. (
                                        2014021001 ; Serial
                                        28800      ; Refresh
                                        1800       ; Retry
                                        604800     ; Expire - 1 week
                                        86400 )    ; Minimum

                IN      NS      ns
                IN      NS      ns1

ns              IN      A       1.2.3.4 ; An IP
ns1             IN      A       1.2.3.4 ; An IP

@               IN      A       1.2.3.4 ; An IP
*.example.com   IN      A       1.2.3.4 ; An IP
www             IN      A       1.2.3.4 ; An IP

@               IN      TXT     "v=spf1 a mx -all"

我的Apache虚拟主机配置是这样的:

<VirtualHost 1.2.3.4:80>
  ServerAdmin domain@example.com
  DocumentRoot /var/www/html/example.com
  ServerAlias www.example.com
  ServerName example.com
  ErrorLog logs/example.com-error_log
  CustomLog logs/example.com-access_log common
</VirtualHost>

<VirtualHost 1.2.3.4:80>
  ServerAdmin domain@example.com
  DocumentRoot /var/www/html/apps.example.com
  ServerAlias *.example.com
  ServerName apps.example.com
  ErrorLog logs/apps.example.com-error_log
  CustomLog logs/apps.example.com-access_log common
</VirtualHost>

请帮忙!

1 个答案:

答案 0 :(得分:2)

您无法在DNS中执行此操作 - 通配符将匹配一个或更多 DNS标签。

可能能够在Apache服务器中执行此操作,可能使用mod_rewrite匹配提供的主机名,并在主机名无效时返回404错误。