Web服务器的部署地点

在公司里部署Web服务

(1)需要为公司网络中的所有设备,包括服务器和客户端计算机分配公有地址;
(2)安全问题:虽然可以通过部署防火墙的形式屏蔽一些网络包,但风险也不会降到零,比如允许网布访问的程序存在漏洞。

将web服务器部署在数据中心

部署在网络运营商管理的数据中心里,或者直接租用运营商提供的服务器。
数据中心是与运营商核心部分NOC直接相连,或者是与运营商之间的枢钮IX直接相连。换句话说,数据中心通过高速线路直接连接到互联网的核心部分,可以获得很高的访问速度。此外数据中心一般位于抗震结构的大楼内,还具有自主发电设备,门禁管理等安全性;另外还提供各种附加服务,比如服务器工作状态监控、防火墙配置和运营、非法入侵监控等,安全性更高。

防火墙的结构和原理

主流的包过滤方式

防火墙等基本思路:只允许发往特定服务器中的特定应用程序的包通过,屏蔽其他的包。可分为包过滤、应用层网关、电路层网关等几种方式。

如何设置包过滤的规则

网络包头部包含了用于控制通信操作的控制信息,只要检查这些信息就能获得更多的内容(发送方MAC地址,发送方IP地址,接收方IP地址,协议号,发送方端口,接收方端口,TCP控制位)。

通过端口号限定应用程序

通过前面的设置,相当于允许互联网和web服务器之间所有的包通过。当我们要限定某个应用程序时,可以在判断条件中加入TCP头部或者UDP头部的端口号。

通过控制位判断连接方向

通过前面的设置,可以指定到某个应用程序。
如果要求限制服务器访问互联网,那么前面的设置无法满足条件。Web使用的TCP协议是双向收发网络包的,因此如果单纯的阻止web服务器网络包发往互联网,则从互联网访问web服务器的操作也会收到影响而无法进行。这里用到TCP头部的控制位。TCP在执行连接操作时需要收发3个包(3次握手)。其中第一个包的控制位中SYN为1,ACK为0.其他的包中这些值不同,因此可以按照这个规则就能过滤掉第一个连接的包。

通过接收方IP地址、发送方IP地址、接收方端口号、发送方端口号、TCP控制位这些条件,我们可以判断出通信的起点和终点、应用程序种类以及访问方向。

从公司内网访问公开区域的规则

为了让公司内网与公共区域之间的网络包自由流动,可以将接收方IP地址为公共区域的包设置为全部通过。但是这条规则里没有限定发送方IP地址,也就是说来自互联网的包也会无条件的允许进入公共区域了。

从外部无法访问公司内网

包过滤方式的防火墙不仅可以允许或组织网络包的通过,还具备地址转换功能。具体来说就是跟包过滤一样,以起点和终点作为条件,根据需要设置是否进行地址转换。私有地址和公有地址之间的对应关系,以及端口号的对应关系都是自动管理的。因此只需要设置是否允许地址转换就可以了。

通过防火墙

通过防火墙中设置各种规则,当包到达防火墙时,会根据这些规则判断是允许通过还是阻止通过。在防火墙允许包通过之后,就没有什么特别的机制了。

防火墙无法抵御的攻击

防火墙可以根据包的起点和终点来判断是否允许其通过,但仅凭起点和终点不能筛选出所有风险的包。某些情况下,只有检查包的内容才能识别这种风险。其根源在于Web服务器程序的bug,因此修复Bug防止宕机数其中的一种方法;另一种方法是在防火墙外部署用于检查包的内容。

通过将请求平均分配给多台服务器来平衡负载

性能不足时需要负载均衡

当服务器的访问量上升时,增加服务器线路的带宽是有效的,但是一定程度后服务器的性能也会表现的越来越明显;这种情况下,使用多个服务器来负载的方法变得更加有效。

使用负载均衡器分配访问

负载均衡器可以定期采集 Web 服务器的 CPU、内存使用率,并根据这些数据判断服务器的负载状况,也可以向 Web 服务器发送测试包,根据响应所需的时间来判断负载状况。

也可以根据服务器的性能进行负载配置。或者基于cookie信息,将一些列的相关服务分配发送到同一台服务器上。

利用缓存服务器分担负载

将访问过的数据保存到缓存服务器中,当再次访问时直接使用缓存的数据。

不过,如果在缓存了数据之后,Web 服务器更新了数据,那么缓存的数据就不能用了,因此缓存并不是永久可用的。

内容分发服务

内容分发服务是从缓存服务器发展而来的,他在互联网中部署很多缓存服务器,并将用户的访问引导到最近的缓存服务器上。

还有另一个让客户端访问最近的缓存服务器的方法。HTTP 规格中定义了很多头部字段,其中有一个叫作 Location 的字段。当 Web 服务器数据转移到其他服务器时可以使用这个字段,它的意思是“您要访问的数据在另一台服务器上,请访问那台服务器吧。”这种将客户端访问引导到另一台 Web 服务器的操作称为重定向,通过这种方法也可以将访问目标分配到最近的缓存服务器