2.1引入反向代理apache模块
2.1.2 根据http请求的内容来控制系统的行为
1.若客户端请求的网址为 /images/logo.jpg, 则分配到图片专用服务器上
2.若客户端请求的网址为 /news , 则分配到生成动态内容的web服务器上
使用的是apache的 mod_rewrite 的 RewriteRule 功能。mod_rewrite 有很多强大的功能,如
1.查看客户端ip地址,仅允许特定的ip访问服务器
2.通过查询客户端的 User-Agent(用户代理),web服务器可以根据客户端的User-Agent 对客户端返回合适的数据
3.将 /hoge/foo/bar 修改为 /hoge?foo=bar,再请求web服务器
2.1.3 优化系统整体的内存使用率
将动态内容和静态内容分离到不同的服务器。
1.将 images 目录及css等静态内容的网址交由web服务器
2.将除此之外的动态内容的网址交由AP服务器
2.1.4 缓存web服务器的应答数据
反向代理分离出了AP服务器,为 AP 服务器提供了一个缓冲。特别是使用 HTTP的 Keep-Alive 功能时,反向代理的存在就显得非常重要。
反向代理服务器开启 Keep-Alive, 而 AP 服务器不开启。
2.1.5 使用apache模块控制处理规则
mod_deflate, mod_ssl,mod_dosdetector
2.1.6 增设反向代理
prefork 会为每个客户端分配一个进程,worker 为每个客户端分配一个线程。
2.1.8 使用mod_proxy_balancer向多台主机分流
2.2.2 Squid 缓存服务器
Squid内部的存储器转为缓存设计,速度非常理想,而且Squid可以以较小的资源消耗处理大规模的请求。
Squid是以HTTP协议的缓存功能为前提的缓存服务器。可以缓存动态页面,以URL为 key来缓存内容,即每个url对应一个缓冲文件,
以此缓存数据。但如果动态页面包含有状态的信息,就不能缓存了,这时候可以使用memcache来解决
2.2.3 使用memcached 进行缓存
Squid 的优点在于可以使用http协议将文件进行缓存。http协议是无状态的可扩展协议,Squid也同样是可扩展的。
很多情况都不适用于http级别的缓存。在web应用程序的世界中,可以使用缓存服务器,根据应用程序内部是以的数据粒度来管理缓存。
memcached就是其中一例。
memcached(根据所装载的客户端库)存在抗障碍性。若某特定的主机运行的memcached宕机,客户端库会感知其问题,从而避免将该服务器
作为缓存服务器使用。
2.1引入反向代理--Apache模块
2.2 增设缓存服务器(Squid, memcached)
2.2.3 使用 memcached 进行缓存