一. Web主机托管
不用自己购买设备,使用web主机托管到别人的机器上。
Web托管者通常让多个小流量用户共享一台主机,即共享主机托管(虚拟主机托管)
但是在HTTP/1.0中,由于header只发送URI的相对路径,服务器没有办法直到主机名,不知道应该把消息发送到那个虚拟网站。
(HTTP/1.1中必须添加host字段解决了该问题)
解决HTTP/1.0问题的方法:
- 扩展URI: 比如jos.com和mary.com都托管在同一个主机上,由于HTTP/1.0的首部发送的uri都是GET index.html HTTP/1.0,那么主机无法定位到底应该返回那个docroot的页面。如果把每个uri都扩展为jos.com/jos/和mary.com/mary/,那么主机将能够定位。
但是,这样造成的uri冗杂会是一种非常不好的用户体验。 - 端口号配置,对不同的网站分配不同的端口号。也是不好的用户体验
- IP地址进行托管
为每个虚拟网站分配不同的IP地址,服务器可以通过查询TCP连接得到正确的地址。
但是IP实际上比主机还要稀缺,捡了芝麻丢西瓜的故事就是这样。 - 强制客户端写入host首部
二. 重定向与负载均衡
重定向方法
机制
| 工作方式 | 重新路由基础 | 局限 |
---|---|---|---|
HTTP重定向 | Web服务器告诉客户端去别的机器 | 第一台机器负载会很重,并且速度会变慢 | |
DNS重定向 | 由DNS服务器决定URI中host的IP地址 | 使用round-robin一类的算法使服务器负载均衡 | |
任播寻址 | 几个服务器使用同样的ip地址,向network层的路由一样,使用最短路径寻找路 | 路由器有内建的寻路功能 | 路由表的变化可能造成TCP连接断裂 |
IP MAC转发 | 处理data link层的mac地址。交换机或路由器分组重定向 | 服务器或代理的跳距必须是1 | |
IP地址转发 | 交换机根据IP地址分组(局域网的IP地址服务器端都看到是交换机的) | 服务器可能看不到真正的IP地址 |
三. 日志记录与使用情况跟踪
日志通常记录
HTTP方法、版本
请求的URI
响应状态码
请求和响应报文的尺寸
时间宠
referer首部和user-agent
服务器有时候需要代理迁移日志以统计命中率