该章的主要内容是讲解与 HTTP 协作的 Web 服务器

一、用单台虚拟主机实现多个域名

基于虚拟主机的功能,可以只使用一台物理机实现多个域名的网站部署。

在互联网上,域名通过 DNS 域名解析系统可以映射到具体的 IP 上,多个域名可以映射到同一个 IP,但是一个域名只能映射到一个 IP。如果服务器想知道请求来自于哪个域名,可以通过请求头中的 Host 首部字段获取。

二、代理、网关和隧道

HTTP 通信时,除服务端和客户端以外,还有一些用于通信数据转发处理的应用程序,例如代理、网关和隧道,它们可以配合服务器工作。

  • 代理是一种有转发功能的应用程序,扮演者服务器和客户端的中间人的角色。代理接受客户端的请求转发给服务器,然后接受服务器的响应转发给客户端。
  • 网关是转发其他服务器通信数据的服务器,接收从客户端发送来的请求时,它就像自己拥有资源的源服务器一样对请求进行处理。
  • 隧道是在相隔甚远的客户端和服务器之间进行中转并保持双方连接的应用程序。

2.1 代理

代理服务器的基本行为就是在客户端和服务端之间转发请求和响应,代理不改变请求 URI,会直接发送给持有资源的服务器(称为源服务器)。

每次通过代理转发请求或者响应时,会追加写入 Via 首部字段,该字段会标记处经过的代理主机信息。

使用代理服务器的理由包括利用缓存技术减少网络带宽的流量,组织内部针对特定网站的访问控制,获取访问日志等。

代理的使用方式可以按照是否使用缓存和是否修改报文来进行分类。

缓存代理:代理转发响应时,会把资源保存在代理服务器上,当代理再接收到相同的资源请求时,会返回之前缓存的资源。

透明代理:转发请求或者响应时,不对报文进行任何修改的代理类型称为透明代理,反之称为非透明代理。

2.2 网关

网关的工作机制和代理十分相似,但是网关可以使通信线路上的服务器提供非 HTTP 协议服务。

利用网关能提高通信的安全性,因为可以在客户端和网关之间的通信线路上加密以确保连接的安全性。

2.4 隧道

隧道可以按照要求建立起一条与其他服务器的通信线路,届时使用 SSL 等加密手段进行通信。隧道的目的是确保客户端与服务端能够进行安全的通信

三、保存资源的缓存

缓存是指代理服务器或客户端本地磁盘内保存的资源副本。

利用缓存可以减少对源服务器的访问,可以减少通信流量和通信时间。

缓存服务器是代理服务器的一种,并归类在缓存代理类型中。

3.1 缓存的有效期限

即使存在缓存,也会因为客户端的要求、缓存的有效期等因素向源服务器确认资源的有效性。若缓存失效,缓存服务器会再次向源服务器获取“新的”资源。

3.2 客户端缓存

除了代理服务器内的缓存以外,客户端的浏览器也可以缓存。同样的客户端也会向源服务器确定资源的有效性,然后再返回有效的资源。

图解 HTTP 笔记(五)——Web 服务器的更多相关文章

  1. HTTP权威协议笔记-5.Web服务器

    5.1 Web服务器工作内容 建立连接--接受一个客户端的连接,或者将其拒绝 接受请求--从网络中读取一条HTTP报文 处理请求--对请求报文进行解释,并采取行动 访问资源--访问报文中指定的资源 构 ...

  2. 06-Node.js学习笔记-创建web服务器

    创建web服务器 //引用系统模块 const http = require('http'); //创建web服务器 //用于处理url地址 const url = require('url'); c ...

  3. 「图解HTTP 笔记」Web 基础

    Web 基础 三项构建技术: HTML:页面的文本标记语言 HTTP:文档传输协议 URL:指定文档所在地址 一些概念 HTTP(HyperText Transfer Protocol):通常被译为& ...

  4. 《图解HTTP》阅读笔记-第五章-web服务器

      第五章.与HTTP协助的web服务器单台虚拟主机实现多个域名可以用单台物理主机运行多台虚拟主机,这些虚拟主机的IP相同,而虚拟主机有可以寄存多个不同主机名和域名的web网站,所以要保证发送HTTP ...

  5. HTTP权威指南阅读笔记五:Web服务器

    Web服务器会做些什么: 1.建产连接:接受一个客户端连接,或者如果不希望与这个客户端建立连接,就将其关闭. 1)处理新连接 2)客户端主机名识别 3)通过ident确定客户端用户 ident在组织内 ...

  6. Node.js学习笔记(五) --- 使用Node.js搭建Web服务器

    1. Node.js 创建的第一个应用 1.引入http模块 var http = require("http"); 2. 创建服务器接下来我们使用 http.createServ ...

  7. 20145216 20145330 《信息安全系统设计基础》 实验五 简单嵌入式WEB 服务器实验

    20145216 20145330 <信息安全系统设计基础> 实验五 简单嵌入式WEB 服务器实验 实验报告封面 实验步骤 1.阅读理解源码 进入/arm2410cl/exp/basic/ ...

  8. 20145208《信息安全系统设计基础》实验五 简单嵌入式WEB 服务器实验

    20145208<信息安全系统设计基础>实验五 简单嵌入式WEB 服务器实验 20145208<信息安全系统设计基础>实验五 简单嵌入式WEB 服务器实验

  9. 20145210 20145226 《信息安全系统设计基础》实验五 简单嵌入式WEB服务器实验

    20145210 20145226 <信息安全系统设计基础>实验五 简单嵌入式WEB服务器实验 结对伙伴:20145226 夏艺华 实验报告封面 实验目的与要求 · 掌握在ARM开发板实现 ...

随机推荐

  1. 从win到多系统

    相信有不少电脑爱好者喜欢折腾系统,尤其还是一个小白(感觉多系统强的不要不要的,各种崇拜),然后就走上了深渊. 首先,我一开始也是个win系统的忠实用户,没用过其他系统的我几乎不知道其他系统的存在,反正 ...

  2. vim 操作命令大全

     转子:https://www.cnblogs.com/yangjig/p/6014198.html 和 https://blog.csdn.net/u010956473/article/detail ...

  3. 大数据之路week02 Collection 集合体系收尾(Set)

    1.Set集合(理解) (1)Set集合的特点 无序,唯一. (2)HashSet集合(掌握) A: 底层数据结构是哈希表(是一个元素为链表的数组) B: 哈希表底层依赖两个方法: hashCode( ...

  4. temp数据预处理--以24h为周期的序列

    1.按照周期来截取数据 从数据库加载下来的是以5min取一次mean()的列,因此24h应取了24*60/5=288次数据 首先把这8352个数据(最后一个以倒数第二个填充)改成288*30的形式 t ...

  5. Mysql中对字符串类型的字段进行数字值排序

    排序字段+0或者*1,类似  Java 把 其他类型转换成字符串 比如 +“”: 一.对普通数字字符串字段排序 -- 方式一 SELECT * FROM xxxxxx WHERE STATUS ' O ...

  6. Django ManyToManyField.through_fields 和

    示例: from django.db import models class Person(models.Model): name = models.CharField(max_length=50) ...

  7. 处理 read_csv 报错 OSError:Initializing from file failed

    1.问题发现 df=pd.read_csv("X-go报表_交易20191118.csv") print(df.info()) File "pandas/_libs/pa ...

  8. pycharm分辨率&清晰度

    三个月前换了新电脑,安装pycharm.又换了新的大屏幕. pycharm界面拖到大屏上时,字大小和字体都没有变化,清晰度低了很多,就像打了一层薄薄的马赛克一样.拖回到原本的屏幕又清晰了. 一直以为是 ...

  9. Java锁机制总结

    锁是用于控制多线程对共享资源的访问. Java中的锁可以分为内置锁与显式锁Lock.其中内置锁指synchronized关键字. Synchronized synchronized可以修饰方法或代码块 ...

  10. yii 查询垃圾分类接口

    public function actionGarbage() { // $param = \Yii::$app->request->post('rubbish', ''); // 接收j ...