【问题标题】:How does IIS determine what website to hit for localhostIIS 如何确定访问 localhost 的网站
【发布时间】:2009-06-22 16:26:28
【问题描述】:

我有一个使用 IIS 6 的开发机器设置。我在不同的 IP 地址上配置了 3 个网站:

默认(全部未分配) WS1 (192.168.1.250) WS2 (192.168.1.249)

我想知道当我在 URL 中指定 localhost 时,IIS 如何确定要访问的站点?这是可配置的吗?如果是这样,我该怎么做?

【问题讨论】:

    标签: iis iis-6


    【解决方案1】:

    当 IIS 响应 HTTP 请求时,它使用 3 条信息来确定它应该使用哪个网站来构建响应。

    1. IP 地址 - 浏览器使用地址栏中的名称执行 DNS 查询并获取主机的实际 IP 地址。它将 http 请求发送到该 IP 地址。
    2. 端口 - 默认情况下,非 SSL 请求为 80,SSL 为 443。
    3. 主机头 - http 请求的一部分是主机头。这个主机头匹配用户请求的地址的域名,包括子域名或主机名。例如:www.foo.com secure.foo.com server1.foo.com subdomain.foo.com server2.subdomain.foo.com等。

    基于您的问题的假设:

    1 - 您的机器分配了 3 个 IP 地址:

    • 192.168.1.250 - 指定为网站 1,名称为 WS1
    • 192.168.1.249 - 指定为 web stie 2,名称为 WS2
    • WS1 和 WS2 都在 IIS 中定义并映射到相应的 IP 地址

    2 - 您有一个分配给您的机器的第三个 IP 地址,它是原始 IP 地址。 (这可能是也可能不是,我假设是这样,因为这是大多数人在为网站分配 IP 时所做的)。

    3 - IIS 中的默认网站的 IP 地址设置为:(All Unassigned)

    4 - 您没有在 IIS 配置中指定任何主机头或端口。

    那么,当在您的机器上运行浏览器时,您输入:http://localhost(无端口号),IIS 会做什么?

    根据之前的回复,浏览器将 localhost 转换为 127.0.0.1 作为 IP 地址,并为该 IP 地址构造一个 HTTP 请求。主机头将是localhost

    在这种情况下,IIS 将发现 WS1 和 WS2 没有匹配的 IP 地址,因此将使用默认站点来处理请求。

    如果您希望 WS1 或 WS2 响应请求,请禁用默认站点并将 WS1 或 WS2 的 IP 地址设置更改为 (All Unassigned)

    【讨论】:

    • 1,2、3 和 4 都是正确的 现在,当我这样做时,它会转到 WS2,这让我觉得很奇怪。我原以为它应该转到默认网站
    【解决方案2】:

    localhost 通常表示127.0.0.1,这是一个称为Loopback Address 的特殊IP 地址,它始终在任何地方都被定义为“当前机器”。它与您的 Web 服务器的外部 IP 地址不同:如果 IIS 期望连接到 IP 地址 192.168.1.250,那么到 127.0.0.1 的连接将不匹配。

    localhost 可在Hosts 文件中配置(通常位于C:\Windows\System32\Drivers\Etc\Hosts)。但不要重新配置它,因为如果重新配置它,可能会有很多程序崩溃。

    相反,您可以在 Hosts 文件中设置备用域。例如,你可以这样做

    192.168.1.250   my.internal.website.com
    192.168.1.249   your.internal.website.org
    

    然后,如果您浏览到其中一个域,IIS 会看到正确的 IP 地址并显示您想要的站点。

    【讨论】:

      【解决方案3】:

      localhost 与 127.0.0.1 相同,因此我认为它属于 All Unassigned,因为它与您的任何其他 IP 地址都不匹配。

      【讨论】:

        【解决方案4】:

        “localhost”在

        中映射到127.0.0.1

        C:[你的 windows 目录]\system32\drivers\etc\hosts

        没有扩展名,但 hosts 是一个文本文件,您可以在选择的文本编辑器中进行编辑。

        【讨论】:

          【解决方案5】:

          这是一个简单的解决方法:

          通过 IIS 客户端使用协议:http、端口:80 并且没有主机名添加到该站点的绑定。 inetmgr.exe。

          来自http://tipila.com/tips/93/configure-a-web-site-to-respond-to-localhost-addresses-in-iis

          【讨论】:

            猜你喜欢
            • 2010-10-10
            • 2012-02-20
            • 2016-10-13
            • 2021-10-03
            • 2015-11-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-06-19
            相关资源
            最近更新 更多