我有一个指向 dyndns 地址的 cname 记录。以前这个方法很好用,但现在如果我使用 cname 错误,我会收到来自 IIS 7 的 502 错误。dyndns 地址和实际 ip 地址都很好用。有什么想法可以解释为什么会出现这种情况吗?
答案1
IIS 和您的应用程序是否已配置为接受您用于访问它的主机名上的请求? CNAME 记录特定于 DNS,与 IIS 无关。 DNS 解析器接收您在浏览器中输入的任何内容并执行 DNS 解析过程(无论您使用的是 A 记录还是 CNAME 记录),直到它获得权威 IP 地址。然后,它连接到该 IP 上的服务器,并使用输入到浏览器中的域名将 Host 标头呈现给服务器。 IIS 不知道或不关心该名称是否是 CNAME,只知道它正在某个 IP 上建立连接,并且正在呈现某个名称的 Host 标头。
如果您的应用程序绑定到特定的 IP 或 IP/主机名组合,那么如果出现不同的域名,IIS 可能不知道如何处理该请求,您可能需要将新名称添加到您的配置中,以便它知道它属于哪个网站。
同样,如果您的底层 Web 应用程序需要某个主机名,那么当 IIS 向其传递一些它不希望的内容时(通过 CGI 变量或其等效变量,具体取决于您的底层应用程序框架),它可能会产生内部错误。
答案2
使用 CName 时的错误可能是由 Kerberos 引起的。请参阅此热修复进行修复并更改注册表项。
请注意,这对于 IE 6 是必需的,但 IE 7 可能只需要注册表设置...
答案3
找到根本原因了。我在服务器级别为该域名设置了一条旧的重写规则。我只检查了网站级别的重写。它指向的域现在已消失,因此出现 502 错误网关消息。我禁用了该规则,一切正常。