nginx正向代理缓存服务器和CDN应用

代理服务器的概念

代理服务器是一个位于客户端和原始(资源)服务器之间的服务器,为了从原始服务器取得内容,客户端向代理服务器发送一个请求并指定目标原始服务器,然后代理服务器向原始服务器转交请求并将获得的内容返回给客户端。

缓存代理对于Web至关重要,尤其对于大型高负载Web站点。缓存可作为性能优化的一个重要手段,可以极大减轻后端服务器的负载。通常对于静态资源,即较少经常更新的资源,如图片,css或js等进行缓存,从而在每次刷新浏览器的时候,不用重新请求,而是从缓存里面读取,这样就可以减轻服务器的压力。

代理的工作机制

  1. 代替客户机向网站请求数据,从而可以隐藏用户的真实IP地址。
  2. 将获得的网页数据(静态Web元素)保存到缓存中并发送给客户机,以便下次请求相同的数据时快速响应。

Web缓存代理:
作用:存储一些之前给访问过的,且可能要被再次访问的静态网页资源对象,使客户端可以直接从缓存代理服务器获取资源,从而减少上游源服务器的负载压力,加快网站的整体访问速度。
代理服务器还可以代替客户端去获取源服务器的资源,从而隐藏客户端的真实地址。 

常见的缓存代理应用

本地实现:squid、nginx、varnish
云环境远端实现:CDN数据库缓存代理:Redis、Memcached


cd /usr/share/nginx/html

nginx缓存代理部署

三台服务器

nginx缓存服务器 :192.168.73.130

nginx服务器:192.168.73.120

nginx服务器:192.168.73.110

配置实验环境

初始化操作
systemctl disable --now firewalld
setenforce 0
vim /etc/selinux/config
SELINUX=disabled

 准备测试界面

cd /usr/share/nginx/html

nginx缓存服务器配置:

vim /etc/nginx/nginx.cnf
在http块中:
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;

●path:强制参数,指定缓存文件的存放路径。
●levels:定义了缓存目录的层级。每层可以用1(最多16种选择,0-f)或2(最多256种选择,00-ff)表示,中间用 : 分隔。
proxy_cache_path /data/nginx/cache;  代表所有缓存只有一个目录,比如/data/nginx/cache/d7b6e5978e3f042f52e875005925e51b
proxy_cache_path /data/nginx/cache levels=1:2;  代表缓存是二层目录(有16*256=4096个目录),比如/data/nginx/cache/b/51/d7b6e5978e3f042f52e875005925e51b
●keys_zone:强制参数,定义共享内存区的名称和大小,该共享内存用于保存缓存项目的元数据(所有活动的key和缓存数据相关的信息),这样nginx可以快速判断一个request是否命中或者未命中缓存,1m可以存储8000个key,10m可以存储80000个key。
●inactive:删除指定时间内未被访问的缓存文件,默认10分钟。
●max_size:设置了缓存存储的上限,如果不指定,最大会用掉所有磁盘空间。
●use_temp_path:直接把临时文件放在缓存目录中。

转发地址池:
upstream cache_server{
        server 192.168.80.73:110;
        server 192.168.80.73:120;
    }

vim /etc/nginx/conf.d/default.conf 
  proxy_no_cache $cache_name;      #判断该变量是否有值,如果有值则不进行缓存,如果没有值则进行缓存
  proxy_cache my_cache;            #设置缓存内存
  proxy_cache_valid 200 5m;        #缓存状态为200的请求,缓存时长为5分钟
  proxy_cache_key $request_uri;    #缓存文件的key为请求的URI
  add_header Nginx-Cache-Status $upstream_cache_status    #把缓存状态设置为头部信息,响应给客户端
  proxy_pass http://cache_server;  #代理转发

重启nginx缓存服务器 

CDN 内容分发网络

作用:

在最接近用户的网络边缘增加一层CDN缓存代理服务器,将源站点服务器的内容发布到CDN做缓存,可以使用户就近取得所需的内容,从而提高用户访问网站的响应速度。
总结一句话为CDN能够给Web网站内容做缓存,还可降低网络延迟。


工作原理:

先将源站点服务器的静态网页资源缓存到CDN节点上,用户请求资源时,通过与DNS的配合,再根据用户的IP地址和请求的URL,找到最靠近用户的CDN节点,然后CDN节点会将资源数据快速地分发给用户,使每用户的请求不需要都从源站点服务器获取。从而避免了网络拥塞,降低了源站点服务器的负载压力,提高用户访问资源的速度和体验。

 CDN的内容是如何获取到的?

1.让用户直接访问资源,如果CDN有资源则可以命中缓存并直接响应返回给用户;如果没有命中到缓存则会将请求发送给上游源站点服务器获取资源,并同步到CDN的缓存中
2.对于热点资源,可以先做缓存预热,再让用户访问资源,即可命中CND中的缓存并直接响应返回给用户。

  • 12
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值