惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
小众软件
小众软件
博客园 - 叶小钗
宝玉的分享
宝玉的分享
博客园_首页
Hugging Face - Blog
Hugging Face - Blog
人人都是产品经理
人人都是产品经理
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
SegmentFault 最新的问题
B
Blog RSS Feed
Engineering at Meta
Engineering at Meta
N
Netflix TechBlog - Medium
Google DeepMind News
Google DeepMind News
U
Unit 42
F
Fortinet All Blogs
IT之家
IT之家
Y
Y Combinator Blog
Martin Fowler
Martin Fowler
T
The Blog of Author Tim Ferriss
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The GitHub Blog
The GitHub Blog
Stack Overflow Blog
Stack Overflow Blog
Blog — PlanetScale
Blog — PlanetScale
酷 壳 – CoolShell
酷 壳 – CoolShell

博客园 - vento

[转]15年双11手淘前端技术巡演 - H5性能最佳实践 [转]新兵训练营系列课程——编写优雅代码 [转]新兵训练营系列课程——海量数据存储基础 [转]新兵训练营系列课程——平台RPC框架介绍 [转]mysql binlog in realtime 利用IDA Pro反汇编程序 WinDbg入门 小巧方便的ORM类库——PetaPoco 2011总结 门户网站的ip查询接口 Lucene实践 xp3中运行s60 v3模拟器,出现闪退问题的解决方法 ubuntu日常操作 使用Mono.Cecil更改程序集dll特性 增加Android模拟器的"Internal Storage"容量 WSGI处理流程图 linux常用命令 如何查看哪些进程和服务器正在使用数据库 如何在ubuntu server 10.04中安装vmware tools
了解IIS的主机名(Host Headers)配置项
vento · 2012-03-04 · via 博客园 - vento

IIS可以在一台服务器上配置多个web站点,每个站点通过ip地址、端口(port)和主机名(host)结合的标识符(ServerBindings Metabase)进行区分。标识字符串的格式如下:

IP:Port:Hostname

上面的IP和Hostname是可选项,假如设定站点时不指定,表示匹配所有。

主机名(Host Headers)是HTTP消息的一部分

浏览器和web服务器之间是通过http协议通信的。http发送的请求头部(headers)部分包含有很多信息,如Content-Length, Referer, Host等等。

浏览器如何和web服务器通信

互联网上的两台主机之间是通过TCP/IP协议进行通信的,通信建立连接时需要指定ip和端口号(port)。当我们在浏览器中输入一个网站的域名,并按回车后,浏览器默认会使用http协议和80端口发出请求。

浏览器首先需要把域名解析为对应的ip地址。域名解析可以使用dns服务器或本地的host文件。 当域名解析为ip地址后,浏览器会和web服务器建立连接,并发出网页访问请求信息。请求信息的头部一般像下面这样:

GET /index.htm HTTP/1.1
Host: www.ilopia.com

IIS接收到请求后,会检查请求是否带有host信息(请求中也可能不带有host信息,如使用ip直接访问)。IIS发现有host后,会查找是否有匹配该host的站点,如果有匹配的站点,就会把请求路由给它进行处理。 最后一步是IIS响应处理请求。

IIS如何分发请求到指定web站点

IIS分发请求到指定站点的规则如下:

  1. 1、是否存在准确匹配 IP:Port:Hostname标识字符串的站点,存在即分发请求,没有进行下一步匹配
  2. 2、是否存在监听所有IP地址(站点设定时不指定),并且Port和Hostname都匹配的站点,存在即分发请求,没有进行下一步匹配
  3. 3、是否存在端口Port匹配,而IP和Hostname都未指定的站点,存在即分发请求,没有浏览器会提示没法连接到服务器

参考资料

ServerBindings Metabase Property (IIS 6.0) Understanding Host Headers in IIS Using Host Headers to host multiple websites on IIS 6.0