Varnish实现Web站点加速

Varnish是一款高性能的HTTP缓存代理服务器,用于提升Web应用性能,支持HTTP压缩、内容缓存控制和请求重写等功能。可用于网站性能优化、负载均衡、HTTP压缩和CDN加速。

Varnish是一款开源的HTTP缓存代理服务器,用于提高Web应用程序的性能和响应速度。它充当位于Web服务器和客户端之间的中间层,通过缓存常用的网页内容来减轻Web服务器的负载并加快网站的加载速度。以下是关于Varnish的主要特点和用途:

主要特点:

  1. HTTP加速: Varnish可以加速HTTP请求和响应,将常用的网页内容缓存在内存中,以减少对后端Web服务器的请求次数。

  2. 高性能: Varnish被设计为高性能缓存服务器,可以在高负载和高流量的情况下提供快速的响应。

  3. HTTP压缩: 它支持HTTP内容压缩,可以减少传输数据的大小,从而提高页面加载速度。

  4. HTTP缓存控制: Varnish允许您通过HTTP头部控制缓存策略,例如缓存时间、过期时间和响应的可缓存性。

  5. HTTP请求重写: 它支持HTTP请求重写,可以根据需要修改或重写HTTP请求。

  6. 负载均衡: Varnish可以用作负载均衡器,将请求分发到多个后端Web服务器。

  7. HTTP内容无效ation: 它允许您将缓存中的内容标记为无效,并在需要时重新获取最新内容。

  8. 开源和自由: Varnish是开源软件,遵循BSD许可证,可以免费使用和自由修改。

用途:

  1. 网站性能优化: Varnish用于提高网站的性能和响应速度,通过缓存静态和动态内容,减轻后端Web服务器的负载。

  2. 负载均衡: 它可以用作反向代理和负载均衡器,将请求分发到多个Web服务器,以提高可用性和可伸缩性。

  3. HTTP压缩: Varnish支持HTTP内容压缩,可以减少数据传输的大小,从而减少带宽消耗。

  4. CDN加速: 一些内容分发网络(CDN)使用Varnish来加速内容分发,从而更快地将内容传送给全球各地的用户。

  5. 静态资源缓存: 静态资源(如图像、CSS和JavaScript文件)可以在Varnish缓存中存储,从而减少对Web服务器的请求,提高加载速度。

◆编译安装Varnish◆

1.安装依赖包

#yum install -y libtool ncurses-devel pcre-devel libxslt libedit python-imaging python-docutils

yum install -y pcre-devel python-docutils libedit-dev*

2.编译安装Varnish

wget http://varnish-cache.org/_downloads/varnish-6.0.0.tgz

tar -xzvf varnish-6.0.0.tgz

cd varnish-6.0.0/

./configure --prefix=/usr/local/varnish6

make && make install

ln -s /usr/local/varnish6/sbin/* /usr/sbin/
ln -s /usr/local/varnish6/bin/* /usr/local/bin/

cp -a /usr/local/varnish6/share/doc/varnish/example.vcl /usr/local/varnish6/default.vcl

◆Varnish实现负载均衡并实现页面缓存◆

1.编辑Varnish主配置文件,在相应的区域追加写入以下标★语句

vim /usr/local/varnish/default.vcl

15 # Default backend definition. Set this to point to your content server.
16 backend default {
17     .host = "127.0.0.1";
18     .port = "8080";
19 }
20 
★ backend web1 {                                          #均衡web主机1
★         .host="192.168.1.13";
★         .port="80";                                     #指定端口
★ .probe = {                                              #开启健康检查
★         .url = "/";                                     #请求的URL路径
★         .interval = 5s;                                 #查询间隔时间
★         .timeout = 1s;                                  #超时时间
★         .window = 5;                                    #滑动窗
★         .threshold = 3;                                 #上次检查.window数量的多少
★         }
★ }
★ backend web2 {
★         .host="192.168.1.14";                           #均衡web主机2
★         .port="80";                                     #指定端口
★ .probe = {                                              #开启健康检查
★         .url = "/";                                     #请求的URL路径
★         .interval = 5s;                                 #查询间隔时间
★         .timeout = 1s;                                  #超时时间
★         .window = 5;                                    #滑动窗
★         .threshold = 3;                                 #上次检查.window数量的多少,
★         }
★ }
★ 
★ import directors;                                       #加载directors模块
★ 
★ sub vcl_init {                                          #缓存及加速-03单-高性能缓存服务器
★ 
★ new bar = directors.round_robin();
★ bar.add_backend(web1);
★ bar.add_backend(web2);
★ 
★ }
★ 
★ sub vcl_recv {
★ 
★ set req.backend_hint = bar.backend();			#指定backend
★ 
★ }

2.检查配置文件,并启动Varnish

varnishd -C -f /usr/local/varnish6/default.vcl		#检查语法

varnishd -f /usr/local/varnish6/default.vcl		#启动

pkill varnishd						#关闭Varnish

varnishlog						#查看Varnish日志

netstat -anpt | grep varnishd				#检查是否启动

3.验证环节

elinks http://127.0.0.1/				#varnish服务器会根据算法分配流量
根据原作 https://pan.quark.cn/s/459657bcfd45 的源码改编 Classic-ML-Methods-Algo 引言 建立这个项目,是为了梳理和总结传统机器学习(Machine Learning)方法(methods)或者算法(algo),和各位同仁相互学习交流. 现在的深度学习本质上来自于传统的神经网络模型,很大程度上是传统机器学习的延续,同时也在不少时候需要结合传统方法来实现. 任何机器学习方法基本的流程结构都是通用的;使用的评价方法也基本通用;使用的一些数学知识也是通用的. 本文在梳理传统机器学习方法算法的同时也会顺便补充这些流程,数学上的知识以供参考. 机器学习 机器学习是人工智能(Artificial Intelligence)的一个分支,也是实现人工智能最重要的手段.区别于传统的基于规则(rule-based)的算法,机器学习可以从数据中获取知识,从而实现规定的任务[Ian Goodfellow and Yoshua Bengio and Aaron Courville的Deep Learning].这些知识可以分为四种: 总结(summarization) 预测(prediction) 估计(estimation) 假想验证(hypothesis testing) 机器学习主要关心的是预测[Varian在Big Data : New Tricks for Econometrics],预测的可以是连续性的输出变量,分类,聚类或者物品之间的有趣关联. 机器学习分类 根据数据配置(setting,是否有标签,可以是连续的也可以是离散的)和任务目标,我们可以将机器学习方法分为四种: 无监督(unsupervised) 训练数据没有给定...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微软技术分享

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值