网络包朝着服务器前进,并通过服务器前面的防火墙、缓存服务器、负载均衡器等。
本章看点
- Web 服务器的部署地点
- 防火墙的结构和原理
- 通过多台 Web 服务器来分担负载
- 利用缓存服务器分担负载
一、Web 服务器的部署地点
- 在公司部署,并与路由器直接连接(不推荐,IP 地址有限,而且不安全)
- 在公司部署,并通过防火墙隔离
- 部署在接入服务商数据中心
二、防火墙的结构和原理
防火墙的过滤规则
- 包过滤(主流)
- 应用层网关
- 电路层网关
如何设置包过滤的规则
网络包的头部包含了用于控制通信操作的控制信息,比如 MAC 头部,IP 头部,TCP 或者 UDP 头部等。
根据接收方 IP 地址、接收方端口号、发送方 IP 地址、发送方端口号、TCP 控制位可以实现包过滤。
- 通过 IP 地址过滤不想接收的包
- 通过端口号限定应用程序(禁止互联网访问部分程序)
- 通过控制位判断连接方向(禁止服务器主动访问互联网)
通过防火墙
- 不允许包通过时,包会被丢弃并记录下来
- 允许包通过时,包就会被转发出去
包过滤并不是防火墙特有的机制,只是规则复杂时,路由器难以维护这些规则,而且路由器难以对被阻止的包进行记录。
防火墙不是绝对安全的
防火墙无法检查包的内容,而且就算检查包的内容,也无法判断是否会对服务器产生影响,所以修复 Web 服务器的 Bug 是最重要的。
三、通过多台 Web 服务器来分担负载
当服务器的访问量上升时,提高服务器的性能仍然不能很好的解决问题,最好的方法是使用多台服务器分担负载的方法更有效。
通过 DNS 服务器来分配
在 DNS 服务器里一个域名对应多个 IP 地址,每次返回的都是不同的,让每台服务器都分担负载。
问题在于,有些操作需要跨越多个网页,必须第一个页面填写用户名和密码,第二个页面填写信用卡号。这时需要在同一台服务器上完成。
使用负载均衡器分配访问
首先将服务器的域名和负载均衡器的 IP 地址注册到 DNS 服务器中,当客户端访问时服务器时,实际访问的是负载均衡器。
负载均衡器会根据服务器的负载状况来分配。当操作需要跨多个页面的时候,根据 Cookie 判断要发往哪一台服务器。
四、使用缓存服务器分担负载
缓存服务器的工作过程
- 代替 Web 服务器注册到 DNS 服务器
- 缓存服务器等待客户端的请求
- 缓存服务器检查内容是否存在
- 如果不存在,在 HTTP 头部加一个 Via 字段发送给 Web 服务器(根据规则确定要发送给谁)
- 缓存服务器收到相应内容之后会添加 Via 字段发送给客户端,并将响应消息保存到本地
- 如果存在,缓存服务器会添加一个 If-Modified-Since 字段并转发给 Web 服务器
- Web 服务器会返回 304 Not Modified 或者更新后的内容,然后缓存服务器响应客户端
三种代理
- 正向代理
- 反向代理
- 透明代理
五、内容分发服务
有专门的厂商部署服务器,并租借给 Web 服务器的运营者,提供内容分发服务。
缓存服务器可以缓存多个网站的数据,可以提供给多个 Web 服务器运营商共享。
当客户端进行访问时,会找到最近的缓存服务器。
当 Web 服务器的数据更新时,主动告知缓存服务器,而不用缓存服务器每次询问。