一.Web缓存代理
1.工作机制
- 代替客户机向网站请求数据,从而可以隐藏用户的真实IP地址。
- 将获得的网页数据(静态Web元素)保存到缓存中并发送给客户机,以便下次请求相同的数据时快速响应。
2.代理服务器的概念
- 代理服务器是一个位于客户端和原始(资源)服务器之间的服务器,为了从原始服务器取得内容,客户端向代理服务器发送一个请求并指定目标原始服务器,然后代理服务器向原始服务器转交请求并将获得的内容返回给客户端。
- 缓存代理对于Web至关重要,尤其对于大型高负载Web站点。缓存可作为性能优化的一个重要手段,可以极大减轻后端服务器的负载。通常对于静态资源,即较少经常更新的资源,如图片,css或js等进行缓存,从而在每次刷新浏览器的时候,不用重新请求,而是从缓存里面读取,这样就可以减轻服务器的压力。
3.代理服务器的作用
- 存储一些之前给访问过的,且可能要被再次访问的静态网页资源对象,使客户端可以直接从缓存代理服务器获取资源,从而减少上游源服务器的负载压力,加快网站的整体访问速度。
- 代理服务器还可以代替客户端去获取源服务器的资源,从而隐藏客户端的真实地址。
4.常见的Web缓存代理应用
- 本地实现 Nginx Squid Varnish
- 云环境远端实现 CDN
- 数据库缓存代理:Redis Memcached
二.Nginx缓存代理部署
准备三台服务器都安装Nginx
- 192.168.86.10
- 192.168.86.20
- 192.168.86.30
1.初始化操作
systemctl stop firewalld
setenforce 0
2.上传Nginx yum源安装Nginx
cd /etc/yum.repos.d/
rz -E 上传Nginx yum源
yum install -y nginx
systemctl enable --now nginx
3. 准备测试界面
systemctl enable --now nginx
cd /usr/share/nginx/html/
vim test.html
#然后上传一张图片
192.168.86.20:
页面测试:
192.168.86.20
页面测试:
关闭两台服务器长连接
vim /etc/nginx/nginx.conf
4.设置Nginx缓存服务器配置(192.168.86.10)
mkdir /data/nginx/cache -p
chown nginx:nginx /data/nginx/cache/
vim /etc/nginx/nginx.cnf
添加配置:
proxy_cache_path /data/nginx/cache levels=1 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
定义服务器池:
upstream webservers {
server 192.168.86.20:80;
server 192.168.86.30:80;
{
vim /etc/nginx/conf.d/default.conf
三.CDN
CDN的全称是Content Delivery Network,即内容分发网络。其目的是通过在现有的Internet中增加一层新的CACHE(缓存)层,将网站的内容发布到最接近用户的网络”边缘“的节点,使用户可以就近取得所需的内容(就近原则),提高用户访问网站的响应速度。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等原因,提高用户访问网站的响应速度。
作用:
- 在最接近用户的网络边缘增加一层CDN缓存代理服务器,将源站点服务器的内容发布到CDN做缓存,可以使用户就近取得所需的内容,从而提高用户访问网站的响应速度。
- 总结一句话为CDN能够给Web网站内容做缓存,还可降低网络延迟。
工作原理:
- 先将源站点服务器的静态网页资源缓存到CDN节点上,用户请求资源时,通过与DNS的配合,再根据用户的IP地址和请求的URL,找到最靠近用户的CDN节点,然后CDN节点会将资源数据快速地分发给用户,使每用户的请求不需要都从源站点服务器获取。从而避免了网络拥塞,降低了源站点服务器的负载压力,提高用户访问资源的速度和体验。
CDN的内容是如何获取到的?
- 让用户直接访问资源,如果CDN有资源则可以命中缓存并直接响应返回给用户;如果没有命中到缓存则会将请求发送给上游源站点服务器获取资源,并同步到CDN的缓存中
- 对于热点资源,可以先做缓存预热,再让用户访问资源,即可命中CND中的缓存并直接响应返回给用户