子域如何工作?

How do subdomains work?

我在 IIS 的 80 端口设置了一个 ASP.net MVC 应用程序。该网站解析任何子域。像 dev.localhost、test.localhost 等。不,我没有在我的机器上设置任何这些子域。除了默认值,我没有主机文件条目,也没有主机头。从我在网上阅读的所有内容来看,它看起来像是配置一个子域,你需要做一个主机文件条目并添加主机头。如果我不做任何事情,这是如何工作的?我的网站设置有误吗?

我的直觉(虽然我还没有为 ASP.Net MVC 验证这一点)是它有 'reserved' 和 url http://+:80/ 适合您的应用程序 - 这意味着解析为本地主机(*.localhost、127.0.0.1、hosts 文件整体等)的端口 80 上的任何域名都将(由 OS 和 IIS)路由到您的 ASP.Net 进程手柄。

有几种方法可以验证这一点:

  • 您可以在 IIS 管理员面板中查看(如果您未使用 IISExpress)它已捕获哪些 URL(在应用程序的 'Site bindings' 下)。 'All unassigned' 将(我认为)将所有请求路由到该端口 - 无论 host/subdomain - 到您的站点;
  • 或者您可以使用 netsh 找出哪些 URL 被保留:

示例 netsh 命令:

$ netsh http show urlacl

我猜你有一个网站,没有用于 http 绑定的主机名,所以所有请求都将发送到它。如果您在主机名中填写 "localhost",除非您在主机中添加条目,否则它将不再适用于子域。

子域将像基于 DNS 解析的主域一样路由到端口 80。如果您在 IIS 中没有多个绑定,则主绑定将为所有请求提供服务。