设为首页 收藏本站
查看: 1479|回复: 0

[经验分享] 理解IIS中的Host Header

[复制链接]

尚未签到

发表于 2017-2-11 12:36:29 | 显示全部楼层 |阅读模式
简介:
  IIS可以在一个服务器上搭建多个网站。你需要使用到host header名,ip地址,和端口号。这篇文章解释了什么是host header以及它是如何工作的。
  

  Host header是HTTP消息的一部分:
  客户端与web服务器之间的通信使用的是HTTP协议。客户端与服务器之间发送的数据称为HTTP消息。HTTP消息有body部分和header部分。Body部分可以包含服务器响应客户端GET请求的网页HTML代码。Header部分包含Content-Length, Referer, Host等等的信息。
  

  客户端是如何与web服务器进行通信的:
这个通信过程是由用户在网页浏览器的地址栏中键入域名及端口号所引发的。比如说一个用户键入www.ilopia.com,他的浏览器会自动地使用HTTP协议以及80端口http://www.ilopia.com
客户端需要与ip地址和端口号建立连接,所以浏览器需要解析域名。域名解析为ip地址可以通过使用DNS服务器和hosts文件。
一旦域名被解析后,客户端就与web服务器建立了连接,然后发送一个请求消息。这个请求消息包含host header,比如象下面这样:
GET /index.htm HTTP/1.1
Host: www.ilopia.com
  服务器接收到HTTP消息后对它进行检查。如果发现HTTP消息中包含host header(HTTP消息中也可以不包含host header), IIS会查找它的配置中是否有匹配的host header名。如果发现了匹配,网站中home folder里的index.htm就会被返回。最后的这一步就是IIS响应请求。
  

  域名解析不是IIS的一部分:
  从上面一节可以看出,HTTP消息(host header)一直到客户端与服务器间建立连接后才被检查。所以当配置服务器使用host header时,必须也配置DNS服务,对于一个小的网络,hosts file也可以满足需求。
  

  后台:
每个IIS搭建的网站都bind到一个ip地址,端口号和host header名。每个网站的配置都存储在metabase属性ServerBindings,它的字符串结构是IP:Port:Hostname。举一个例子192.168.0.1:80:www.gafvert.info。要决定哪个网站处理请求,IIS检查是否有一个网站配置监听这个ip地址和端口号,并且也匹配HTTP消息中的host header。如果发现了一个网站的ServerBindings属性匹配,请求就会被转发到这个网站。如果没有网站匹配,IIS检查是否有一个网站配置为监听所有的ip地址(在IISManager中叫做”All Unassigned”),和端口,并且配置了一个host header匹配HTTP消息中的host header。如果找到了这样一个网站,IIS把请求转发到这个网站。如果还是没有找到匹配,最后一步是检查IIS是否有一个网站有空白的host header配置,如果有的话,转发请求到该网站。


  最后举一个实例,有一个网站使用了一个host header(Host Name)为crmexport的site binding,当用浏览器访问这个网站是,用fidller截取HTTP请求的消息中包含Host为crmexport,见下图:
DSC0000.jpg

DSC0001.jpg

  

  原文参见http://www.it-notebook.org/iis/article/understanding_host_headers.htm Kristofer Gafvert

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-340634-1-1.html 上篇帖子: XP安装IIS时提示 “Failed to access IIS metabase” 解决办法 下篇帖子: 添加删除组件 找不到IIS
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表