【发布时间】:2009-06-22 16:26:28
【问题描述】:
我有一个使用 IIS 6 的开发机器设置。我在不同的 IP 地址上配置了 3 个网站:
默认(全部未分配) WS1 (192.168.1.250) WS2 (192.168.1.249)
我想知道当我在 URL 中指定 localhost 时,IIS 如何确定要访问的站点?这是可配置的吗?如果是这样,我该怎么做?
【问题讨论】:
我有一个使用 IIS 6 的开发机器设置。我在不同的 IP 地址上配置了 3 个网站:
默认(全部未分配) WS1 (192.168.1.250) WS2 (192.168.1.249)
我想知道当我在 URL 中指定 localhost 时,IIS 如何确定要访问的站点?这是可配置的吗?如果是这样,我该怎么做?
【问题讨论】:
当 IIS 响应 HTTP 请求时,它使用 3 条信息来确定它应该使用哪个网站来构建响应。
www.foo.com secure.foo.com server1.foo.com subdomain.foo.com server2.subdomain.foo.com等。基于您的问题的假设:
1 - 您的机器分配了 3 个 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)。
【讨论】:
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 地址并显示您想要的站点。
【讨论】:
localhost 与 127.0.0.1 相同,因此我认为它属于 All Unassigned,因为它与您的任何其他 IP 地址都不匹配。
【讨论】:
“localhost”在
中映射到127.0.0.1C:[你的 windows 目录]\system32\drivers\etc\hosts
没有扩展名,但 hosts 是一个文本文件,您可以在选择的文本编辑器中进行编辑。
【讨论】:
这是一个简单的解决方法:
通过 IIS 客户端使用协议:http、端口:80 并且没有主机名添加到该站点的绑定。 inetmgr.exe。
来自http://tipila.com/tips/93/configure-a-web-site-to-respond-to-localhost-addresses-in-iis
【讨论】: