我遇到了一个奇怪的问题。我会快速完成设置:
DNS
以下是指向同一 IP 的 A 记录:
- www.域名.com
- 域名.com
- 登录域名.com
- dev.domain.com
我曾尝试对子域名使用 CNAME,但没有任何改变。
Apache 2 设置
我有两个虚拟主机:
<VirtualHost *:80>
ServerName domain.com
ServerAlias www.domain.com
DocumentRoot /var/www/a
[...log setup]
</VirtualHost>
和
<VirtualHost *:80>
ServerName dev.domain.com
DocumentRoot /var/www/b
[...log setup]
</VirtualHost>
请注意,没有为 login.domain.com 设置主机。
问题
现在来谈谈问题。当我输入 dev.domain.com 时,系统立即显示未找到服务器。我尝试清除缓存等,并在多台计算机上尝试。www.domain.com 和 domain.com 均来自正确的目录。login.domain.com 因某种原因重定向到 domain.com。
上面的配置是 sites-enabled 下唯一的配置,但它也从 phpmyadmin 加载配置。
我想问的是,我该如何开始诊断问题?我该如何排除 DNS 问题?我尝试将 dev.domain.com 作为服务器别名添加到当前配置中 - 没有任何变化。我不知道为什么 login.domain.com 会重定向 - 据我所知,任何地方都没有通配符。
我从哪说起呢?
答案1
当有人查询一个不存在的域名时,该域名不存在的答复(NXDOMAIN)会缓存在中间 DNS 服务器中。
可能对于 dev.domain.com,否定答复已被缓存在某处。
要测试,请尝试
1. nslookup dev.domain.com (or dig dev.domain.com)
2. nslookup dev.domain.com ns1.domain.com (or dig @ns1.domain.com dev.domain.com)
如果是这种情况,您将在 1 中得到否定的答案,并在 2 中得到您的 IP。
除了等待 SOA 记录的最后一个字段中指定的时间(nslookup -type=SOA domain.com 或 dig domain.com SOA)之外,没有其他解决方案。为了防止将来再次发生这种情况,请在此处设置较低的值。
至于 login.domain.com - 它会返回到定义的第一个 VirtualHost。这是正常行为。
(我同意,如果你发布真实的域名,我们的生活会变得更好)
答案2
我想问的是,我该如何开始诊断问题?我该如何排除 DNS 问题?
- 如果 Apache 中有多个 virthost,则第一个 virthost 将作为所有主机请求的后备,这些主机请求未在 visthosts 列表中找到,但由于 DNS 配置(或其他方法)到达服务器,对于不存在的 virthost 来说,这显然是可以的
- 绝不,绝不如果出现与域相关的问题,则屏蔽域 - 这样你就可以保证迫使所有对答案感兴趣的人去猜测,而不是测试和调试。
- 对于我来说,“dev.domain.com”根据您的引用是完全有效的,但我更喜欢在现实生活中测试它
- 胡乱猜测 - dev.domain.com 可以以某种方式解析到错误的 IP,而无需 http-server。如何测试
- nslookup dev.domain.com,验证 dev.domain.com 的 IP
- traceroute IP-of-dev.domain.com 或 traceroute dev.domain.com
- telnet dev.domain.com 80 并执行最短的 http 会话(如果已连接)或用于
wget dev.domain.com/index.file
监控与站点 dev 的 http 客户端的行为