【问题标题】:How do subdomains work?子域如何工作?
【发布时间】:2015-06-06 04:09:56
【问题描述】:

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

【问题讨论】:

    标签: c# asp.net-mvc-4 iis subdomain multi-tenant


    【解决方案1】:

    我的直觉(虽然我还没有为 ASP.Net MVC 验证这一点)是它为您的应用程序“保留”了 URL http://+:80/ - 这意味着端口 80 上解析为 localhost 的任何域名(* .localhost、127.0.0.1、hosts 文件等)将被(由操作系统和 IIS)路由到您的 ASP.Net 进程以供其处理。

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

    • 您可以在 IIS 管理员面板中检查(如果您不使用 IISExpress)它已经获取了哪些 URL(在应用程序的“站点绑定”下)。 “所有未分配”将(我认为)将所有请求路由到该端口(无论主机/子域如何)到您的站点;
    • 或者您可以使用 netsh 找出保留了哪些 URL:

    netsh 命令示例:

    $ netsh http show urlacl
    

    【讨论】:

    • 感谢您的所有回答。你们都是对的。
    【解决方案2】:

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

    【讨论】:

    • 但是系统仍然需要解析whatever.localhost,除非你配置了一些东西,否则它不应该这样做,对吧?在 IIS 中配置一个没有主机名/绑定的网站是不够的。
    • Localhost 知道您是否有条目。它仍然解析到您的本地地址。执行“nslookup localhost”,它指向 127.0.0.1。
    • 我知道,但是 OP 声明 dev.localhost、test.localhost 等无需他做任何事情就可以工作(“我没有主机文件条目,除了默认值”),这没有任何意义我。
    • 我猜 OP 只是混合术语,将主机文件条目与主机头条目混淆。要让 dev.localhost 等工作,肯定需要主机文件条目(或 DNS 记录)。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2018-11-03
      • 2012-01-06
      • 2017-01-21
      • 2013-08-04
      • 2019-11-27
      • 2017-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多