IIS如何确定要为localhost命中的网站

时间:2009-06-22 16:26:29

标签: iis iis-6

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

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

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

5 个答案:

答案 0 :(得分:9)

当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
  4. 基于您的问题的假设:

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

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

    2 - 您的计算机分配了第3个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 :(得分:3)

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地址并显示你想要的网站。

答案 2 :(得分:1)

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

答案 3 :(得分:-1)

“localhost”映射到

中的127.0.0.1

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

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

答案 4 :(得分:-1)

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

使用协议:http,端口:80向该站点添加绑定,并通过IIS客户端添加主机名。 inetmgr.exe。

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