合肥做公司网站联系方式,玉田住房与城乡建设局网站,2100000000级超变传奇,公司网络组建工作方案一、web缓存代理
web代理的工作机制
代理服务器是一个位于客户端和原始#xff08;资源#xff09;服务器之间的服务器#xff0c;为了从原始服务器取得内容#xff0c;客户端向代理服务器发送一个请求#xff0c;并指定目标原始服务器#xff0c;然后代理服务器向原始…一、web缓存代理
web代理的工作机制
代理服务器是一个位于客户端和原始资源服务器之间的服务器为了从原始服务器取得内容客户端向代理服务器发送一个请求并指定目标原始服务器然后代理服务器向原始服务器转交请求并将获得的内容返回给客户端。 缓存可作为性能优化的一个重要手段可以极大减轻后端服务器的负载。通常对于静态资源即较少经常更新的资源如图片、css或js等进行缓存从而在每次刷新浏览器的时候不用重新请求而是从缓存里面读取这样就可以减轻服务器的压力。 代理服务器主要作用
资源获取代替客户端实现从原始服务器的资源获取加速访问代理服务器可能离原始服务器更近从而起到一定的加速作用缓存作用代理服务器保存从原始服务器所获取的资源从而实现客户端快速的获取隐藏真实地址代理服务器代替客户端去获取原始服务器资源从而隐藏客户端真实信息。
常用的代理服务器
本地实现squid、nginx、varnish云环境远端实现CDN数据库缓存代理Redis、Memcached
搭建web缓存代理
1、在三台服务器上部署nginx
192.168.10.101192.168.10.103192.168.10.109
初始化 systemctl disable --now firewalldsetenforce 0vim /etc/selinux/config下载nginx的yum源安装
[rootlocalhost ~]# cd /etc/yum.repos.d
[rootlocalhost yum.repos.d]# ls
local.repo repos.bak
[rootlocalhost yum.repos.d]# ls
local.repo nginx.repo repos.bak
[rootlocalhost yum.repos.d]# yum install -y nginx
2、在后端原始服务器上创建测试页面
在192.168.10.103上创建测试页面 在192.168.10.109上创建测试页面 3、完成nginx服务器配置修改
先关闭两台测试机的长连接并重启服务 vim /etc/nginx/nginx.conf systemctl restart nginx 创建数据缓存目录 mkdir /data/nginx/cache -pchown nginx:nginx /data/nginx/cache/开启nginx缓存配置 vim /etc/nginx/nginx.conf proxy_cache_path /data/nginx/cache levels1:2 keys_zonemy_cache:10m max_size10g inactive60m use_temp_pathoff; /data/nginx/cache 这是缓存文件在文件系统中的存储路径。NGINX 将在该目录下存储缓存文件。 levels1:2 1:2 表示缓存文件将分两级目录存储。第一层有一个字符第二层有两个字符。这种结构可以避免单个目录下文件过多的问题提高文件查找效率。 keys_zonemy_cache:10m 这定义了缓存区域的名称和大小。my_cache 是缓存区域的名称用于在其他指令中引用该缓存。 10m 表示分配给该缓存区域的内存大小为10MB。NGINX 在内存中保存缓存项的元数据如缓存键和过期时间实际的缓存内容存储在磁盘上。 max_size10g 这定义了缓存的最大磁盘空间为10GB。当缓存达到这个大小时NGINX 会自动删除最老的缓存项以腾出空间。 inactive60m 这定义了缓存项的非活动时间。60m 表示如果缓存项在60分钟内未被访问则会被删除。 这个参数帮助清理长期不使用的缓存项。 use_temp_pathoff 这指示 NGINX 在写入缓存文件时直接写入目标目录而不使用临时目录。设置为 off 可以提高性能因为省去了临时目录到目标目录的文件移动操作。 继续在nginx.conf中加入配置定义一个上游服务器组 修改default.conf文件 vim /etc/nginx/conf.d/default.conf systemctl restart nginx 配置项解释 1、proxy_cache my_cache: 该指令启用了名为 my_cache 的缓存区域。这个缓存区域在 proxy_cache_path 指令中定义。 2、proxy_cache_valid 200 60m: 该指令设置缓存时间。具体来说它指定了 HTTP 200 响应成功响应的缓存时间为60分钟。 3、proxy_cache_key $request_uri: 该指令定义缓存键用于确定缓存条目的唯一标识。 4、add_header Nginx-Cache-Status $upstream_cache_status: 该指令添加一个自定义 HTTP 头部 Nginx-Cache-Status其值为 $upstream_cache_status。 $upstream_cache_status 是一个内置变量用于指示缓存状态。它可以是以下值之一 MISS请求没有命中缓存。BYPASS缓存被绕过。EXPIRED缓存条目已过期需要重新获取。STALE使用陈旧的缓存条目。UPDATING缓存条目正在更新。REVALIDATED缓存条目被重新验证。HIT请求命中缓存。 5、proxy_pass http://webservers 该指令将请求代理到上游服务器组 webservers。 webservers 已经在上述 upstream 块中定义 4、验证
在访问之前cache缓存中没有文件
cd /data/nginx/cache
ls在网页中进行访问 第一次访问没有命中会在缓存区生成缓存文件之后继续访问即可直接命中 总结
Web缓存代理
作用存储一些之前给访问过的且可能要被再次访问的静态网页资源对象使客户端可以直接从缓存代理服务器获取资源从而减少上游源服务器的负载压力加快网站的整体访问速度。代理服务器还可以代替客户端去获取源服务器的资源从而隐藏客户端的真实地址。常见的Web缓存代理应用本地实现 Nginx Squid Varnish云环境远端实现 CDN数据库缓存代理Redis MemcachedNginx 配置 缓存代理
http {......proxy_cache_path /data/nginx/cache levels1:2 keys_zonemy_cache:10m max_size10g inactive60m use_temp_pathoff;
# 缓存目录 目录层级 缓存共享内存区的名称和大小 缓存数据上限 缓存失效时间 是否存放临时文件upstream XXXX {server IP:PORT; #定义上游源服务器的IP和端口 .....}server {listen IP:PROT;server_name 主机名;location 匹配路径 {proxy_cache my_cache; #指定缓存共享内存区的名称proxy_cache_valid 200 60m; #指定有效缓存的状态码 缓存时间;proxy_cache_key $request_uri; #指定缓存数据的key为请求的URLadd_header Nginx_Cache_Status $upstream_cache_status #添加请求头显示缓存状态proxy_pass http://XXXX; #设置没有命令缓存时的代理转发proxy_no_cache $自定义变量; #通过判断自定义变量是否有值来决定是否进行缓存} }
}二、CDN内容分发网络
CDN概述
CDN的全称是Content Delivery Network即内容分发网络。其目的是通过在现有的Internet中增加一层新的cache(缓存)层将网站的内容发布到最接近用户的网络“边缘”节点使用户可以就近取得所需的内容就近原则提高用户访问网站的响应速度。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等原因提高用户访问网站的响应速度。 CDN优势
CDN节点解决了跨运营商和跨地域访问的问题访问延时大大降低大部分请求在CDN边缘节点完成CDN起到了分流作用减轻了源站的负载。
工作原理
将源站点web应用服务器的静态网页资源缓存到CDN节点上用户请求资源时就近返回
CDN节点上缓存的资源而不需要每个用户的请求都从源站点获取从而避免了网络拥塞缓解
了源站点的压力提高用户访问资源的速度 1、浏览器发起图片 URL请求经过本地 DNS解析会将域名解析权交给域名 CNAME 指向的CDN 专用 DNS 服务器。 2、CDN的DNS 服务器将 CDN的全局负载均衡设备IP 地址返回给浏览器 3、浏览器向 CDN全局负载均衡设备发起 URL 请求 4、CDN 全局负载均衡设备根据用户IP 地址以及用户请求的 URL选择一台用户所属区域的区域负载均衡设备向其发起请求。 5、区域负载均衡设备会为用户选择最合适的 CDN 缓存服务器(考虑的依据包括: 服务器负载 情况距离用户的距离等)并返回给全局负载均衡设备. 6、全局负载均衡设备将选中的 CDN 缓存服务器IP地址返回给用户。 7、用户向 CDN 缓存服务器发起请求缓存服务器响应用户请求最终将用户所需要偶的内容返回给浏览器。使用 CDN 服务的网站只需要将域名解析权交给 CDN 服务商接着将需要分发的内容上传到CDN就可以实现内容加速了. CDN的内容是如何获取到的 1让用户直接访问资源如果CDN有资源则可以命中缓存并直接响应返回给用户如果没有命中到缓存则会将请求发送给上游源站点服务器获取资源并同步到CDN的缓存中 2对于热点资源可以先做缓存预热再让用户访问资源即可命中CND中的缓存并直接响应返回给用户