企业项目实战----CDN加速的实现

2023-11-06

前言

CDN加速对企业非常重要,体现在哪呢?举个例子,A企业的后端服务器在杭州,用户遍布全国,让全国的用户都去访问企业A在杭州的后端服务器你觉得可行吗?肯定不可行呀!第一,后端服务器承受不了全国这么巨大的访问量;第二,访问速度慢,要经过的陆游太多了,等太久用户体验也不好。这个时候就需要有更多的代理服务器来接受用户的访问,将用户经常访问的数据缓存起来,直接将缓存的数据扔给用户,从而缓解后端服务器的压力以及更快的给用户所需结果!
能实现反向代理的除了varnish还有squid,squid已经被varnish取代了。

实验环境

目前,企业中大多用的还是企业6

server1		172.25.64.1	  varnish端(CDN缓存)	版本企业6
server2		172.25.64.2		服务器(apache)		版本企业6
allen		172.25.64.x	 	客户端				版本企业7(无影响)

一、varnish实现单个后端服务器的部署

需要有varnish的安装包:
varnish-3.0.5-1.el6.x86_64.rpm
varnish-libs-3.0.5-1.el6.x86_64.rpm

配置server1(CDN缓存端)

1、安装varnish相关软件

yum install varnish-3.0.5-1.el6.x86_64.rpm
yum install varnish-libs-3.0.5-1.el6.x86_64.rpm 

2、将server1的Memory改成2048

varnish要求能打开的最大文件数为131072,Memory值为2048就能满足!
在这里插入图片描述
3、查看当前系统允许打开最大文件数

sysctl -a | grep file

在这里插入图片描述
4、将varnish端口由6081改为80

vim /etc/sysconfig/varnish		#/etc/sysconfig/varnish为varnish配置文件
 66 VARNISH_LISTEN_PORT=80	##66为66行

5、修改varnish的安全配置文件

vim /etc/security/limits.conf 		#varnish的安全配置文件
##########在文件最后加入################
varnish         -       nofile          131072
varnish         -       memlock         82000
varnish         -       nproc           unlimited

6、修改varnish默认文件,配置单个后端服务器

vim /etc/varnish/default.vcl	#/etc/varnish/default.vcl为varnish默认文件
 backend default {
   .host = "172.25.64.2";		#要访问的服务器IP
   .port = "80";					#80端口
 }

7、重启varnish服务,完成单个后端服务器的部署

/etc/init.d/varnish restart

配置server2(服务器)

1、安装阿帕其

yum install httpd -y

2、进入阿帕其默认发布目录,建立默认发布文件

[root@server2 ~]# cd /var/www/html/
[root@server2 html]# vim index.html
####################内容
这里是服务器server2,ip为172.25.64.2!

3、启动阿帕其

[root@server2 html]# /etc/init.d/httpd start

客户端测试

客户端访问varnish端,访问结果为服务端给出的信息

[root@allen ~]# curl 172.25.64.1
这里是服务器server2,ip为172.25.64.2!
[root@allen ~]# 

网页访问也一样
在这里插入图片描述

二、清除varnish端缓存

清除缓存可以达到及时使varnish端更新服务端的最新数据

配置server1(CDN缓存端)

[root@server1 ~]# vim /etc/varnish/default.vcl	#编辑varnish默认配置文件
##########################################添加以下内容
sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = "--->varnish";	#显示--->varnish则为访问的是varnish端
}
else {
set resp.http.X-Cache = "--->http";	#显示--->http则为访问的是服务器端
}
return (deliver);
}
[root@server1 ~]# /etc/init.d/varnish restart	#重启varnish

客户端测试

[root@allen ~]# curl -I 172.25.64.1		#第一次

可以看到第一次访问的是server2(服务器),因为varnish端还没有缓存!
在这里插入图片描述

[root@allen ~]# curl -I 172.25.64.1		#第二次

可以看到第二次访问的是varnish端,因为第一次访问的时候varnish端已经缓存了,第三次第四次访问依旧是varnish端!
在这里插入图片描述
在varnish端清除缓存:

varnishadm ban.url .*$	#清除所有缓存
varnishadm ban.url /index.html	#清除网页的缓存

在这里插入图片描述
客户端测试

可以看到又是访问的服务器server2
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

企业项目实战----CDN加速的实现 的相关文章

随机推荐

  • 读取excel

    import java io FileInputStream import java io IOException import java io InputStream import java text DateFormat import
  • JVM--调优--04--案例01--生产oom分析案例

    JVM 调优 04 案例01 生产oom分析案例 1 问题描述 项目首页 匿名无登陆 对首页进行150个线程 8小时压测 可以看到老年代一直在增加 visual gc 到某一时刻 直接oom 堆空间的图不是矩形 2 解决方案 堆dump文件
  • JDBC报错java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column 14 to T

    出现这个错误的原因是 当数据库中的Date类型字段值是 0000 00 00 时 JDBC不能把 0000 00 00 转化为一个java sql Date 问题的解决方案是在连接数据库的url后加入 zeroDateTimeBehavio
  • java使用mybatis拦截器对数据库敏感字段进行加密存储并解密

    记录业务中遇到的使用场景 灵活对数据库敏感字段进行加密和解密 文章目录 前言 一 创建数据库表和实体类 二 Mapper Service Controller等 三 自定义注解 四 加密工具类 五 参数拦截器和结果集拦截器 六 运行结果 总
  • Unix编程艺术(前言)

    Preface 前言 Unix is not so much an operating system as an oral history NealStephenson Unix与其说是一个操作系统 不如说是一部口述史 作者 NealSte
  • 爬虫数据去重、存入数据库

    三种数据去重方式 1 数据存入mongodb时 可以对关键字进行复合索引 2 对数据的关键字进行哈希映射 生成的指纹判断是否存在redis的指纹集合中 如果存在 说明数据重复 3 布隆过滤器 可以实现大量数据去重 存入数据库 根据数据量及用
  • verify.js验证码

    文字验证码 mpanel6 pointsVerify defaultNum txtCount 默认的文字数量 checkNum 3 校对的文字数量 vSpace 5 间隔 type 2 arith 0 imgName pageContext
  • 2023河南萌新联赛第(一)场:河南农业大学

    2023河南萌新联赛第 一 场 河南农业大学 ACM NOI CSP CCPC ICPC算法编程高难度练习赛 牛客竞赛OJ C 硬币游戏 考察知识点 博弈 先说结论 若操作一次就能获胜则先手胜 若无论第一次怎么操作 第二次操作都能获胜则后手
  • Nginx启动失败的几种错误处理

    使用Nginx做Web服务器过程中 碰到过以下几个问题 1 nginx启动失败 systemctl start nginx service 启动nginx失败 报错信息如下 Starting nginx nginx emerg bind t
  • java 面向对象实例——近似求π

    代码如下 import java util Scanner public class Js double num 0 public void pai Scanner input new Scanner System in int n inp
  • Stable Diffusion WebUI内存不够爆CUDA Out of memory怎么办?

    在我们运行SD的时候 我们经常会爆CUDA Out of memory 我们应该怎么办呢 这是因为我们的显存或者内存不够了 如果你是用cpu来跑图的则表示内存不够 这个时候就需要换个大点的内存了 如果你是用gpu来跑图的就说明你显存不够用咯
  • 【教程】如何使用Java生成PDF文档?

    在如今数字化时代 越来越多的人使用PDF文档进行信息传递和共享 而使用Java生成PDF文档也成为了一个非常重要的技能 因为Java作为一种通用的编程语言 可以在不同的操作系统和平台上运行 下面 我们将为您介绍如何使用Java生成PDF文档
  • vue中手机号码+座机号码、邮箱正则校验规则封装

    直接上代码 封装验证器 export function isvalidPhone phone const isPhone 1 38 0 9 4 014 9 59 0 35 9 6 2567 7 0 8 d 8 11位合法手机号码 const
  • TI(德州仪器) TMS320C674x逆向分析之二

    TI官网文档 http www ti com product tms320c6745 technicaldocuments 里面资料非常详细 可以对着里面一个个看 用的比较多的两个文档 TMS320C674x指令格式 TMS320C674x
  • 【linux kernel】记一次linux内核裁剪总结

    记一次linux内核裁剪总结 一 背景 在linux内核构建过程中 根据实际应用场景 小生构建了一个大约5 7M大小的linux内核zImage镜像 发现其稍微有点大了 想着将其裁剪和缩小 于是乎对linux内核进行裁剪 本篇文章主要记录一
  • 谷歌浏览器ajax警告,ajax请求的问题,谷歌浏览器的警告提示Provisional headers are shown...

    不太了解百度后台是什么情况 我也只是做一个简单的搜索功能用了跨域 我看数据请求成功了 数据已经返回 但是谷歌浏览器总是出现这种情况 友情提示 愿意回答的大神就请帮着看看 不愿意帮助的也请别乱踩 别干缺德事 还有就是我在hbulider下面打
  • VNC unable to connect via 127.0.0.1:1080

    VNC远程登录出现自己电脑拒绝的时候 请查看一下自己是否设了代理登录之类的操作 这里是WIN 10 登录远程一台WIN 10 服务器 跟服务器设置没有什么关系 主要由于本地配置导致的 解决方案 File里面选择属性 取消代理设置即可 折腾了
  • WebTransport 开播的应用实践之路

    动手点关注 干货不迷路 Web开播的业务挑战 无论是本地软件推流还是Web推流 都需要解决推流抖动 画面高糊 音频卡顿等问题 在现有的Web技术环境下 如何稳定地把高质量的音视频流呈现给更多用户 是我们技术团队攻克的重点 从技术角度来解读一
  • Hashtable和HashMap、ConcurrentHashMap 之间的区别

    Hashtable和HashMap的区别 HashMap和Hashtable都是哈希表数据结构 但是Hashtable是线程安全的 HashMap是线程不安全的 Hashtable实现线程安全就是简单的把关键方法都加上了synchroniz
  • 企业项目实战----CDN加速的实现

    前言 CDN加速对企业非常重要 体现在哪呢 举个例子 A企业的后端服务器在杭州 用户遍布全国 让全国的用户都去访问企业A在杭州的后端服务器你觉得可行吗 肯定不可行呀 第一 后端服务器承受不了全国这么巨大的访问量 第二 访问速度慢 要经过的陆