varnish加速web网站

news/2024/5/20 15:47:40/文章来源:https://blog.csdn.net/weixin_43273168/article/details/104393672

简介

Varnish可以有效降低web服务器的负载,提升访问速度。根据官方的说法,Varnish是一个cache型的HTTP反向代理。

按照HTTP协议的处理过程,web服务器接受请求并且返回处理结果,理想情况下服务器要在不做额外处理的情况下,立即返回结果,但实际情况并非如此。本文将分析在web服务器处理请求的过程中,Varnish能起到什么作用。

web服务器的实现千差万别,但典型的处理过程是相同的,都要经过一系列的步骤来处理接收到的每个请求。有可能需要启动一个进程来处理请求,有可能需要从磁盘上载入文件,或者启动内部线程来编译执行一些脚本。在执行脚本的过程中,还会有进行很多别的动作,比如进行数据库查询,读取文件等等。当成百上千个请求并发访问时,服务器的负载会很快上升,出现系统资源不够的情况。一种更糟的情况是,很多请求是重复的,但web服务器无法记住曾经作出的响应,还会重复上面复杂的处理过程。

当把Varnish部署上之后,web请求的处理过程会有一些变化。客户端的请求将首先被Varnish接受。Varnish将分析接收的请求,并将其转发到后端的web服务器上。后端的web服务器对请求进行常规的处理,并将依次将处理结果返回给Varnish。

但Varnish的功能并非仅限于此。Varnish的核心功能是能能将后端web服务器返回的结果缓存起来,如果发现后续有相同的请求,Varnish将不会将这个请求转发到web服务器,而是返回缓存中的结果。这将有效的降低web服务器的负载,提升响应速度,并且每秒可以响应更多的请求。Varnish速度很快的另一个主要原因是其缓存全部都是放在内存里的,这比放在磁盘上要快的多。诸如此类的优化措施使得Varnish的相应速度超乎想象。但考虑到实际的系统中内存一般是有限的,所以需要手工配置一下缓存的空间限额,同时避免缓存重复的内容。

下面来看一下Varnish的安装过程。

varnish安装

https://packagecloud.io/varnishcache/varnish63/packages/el/7/varnish-6.3.2-1.el7.x86_64.rpm

https://pkgs.org/ 找包工具(jemalloc-3.6.0-1.el7.x86_64.rpm)依赖包

找不到的同学可在我的资源进行下载。

下载好后直接安装就可以

服务配置(每次修改都需要重启)

  • 修改varnish用户限制文件

[root@server2 ~]# vim /usr/lib/systemd/system/varnish.service

# Maximum number of open files (for ulimit -n)
LimitNOFILE=131072              #打开文件数

# Locked shared memory - should suffice to lock the shared memory log
# (varnishd -l argument)
# Default log size is 80MB vsl + 1M vsm + header -> 82MB    #内存锁定
# unit is bytes
LimitMEMLOCK=85983232

查看当前系统配置可打开文件数

[root@server2 ~]# sysctl -a | grep file
fs.file-max = 200904         #如果小于varnish需求就增加内存
fs.file-nr = 896    0    200904
fs.xfs.filestream_centisecs = 3000

修改系统限制文件

# End of file
varnish     -     nofile        131072
varnish        -    memlock        82000

  • 修改varnish服务端口

[root@server2 ~]# vim /usr/lib/systemd/system/varnish.service

ExecStart=/usr/sbin/varnishd -a :80 -T localhost:6081 -f /etc/varnish/default.vcl -s malloc,256m

  • 配置后端web服务器
  • 告知varnish

[root@server2 ~]# cat /etc/varnish/default.vcl

backend default {
    .host = "172.25.254.3";
    .port = "80";
}

  • 测试:

[root@server2 ~]# curl 172.25.254.1

server3

varnish的cache

[root@server2 ~]# vim /etc/varnish/default.vcl

sub vcl_deliver {     #在缓存数据将要发送到客户端时调用

if (obj.hits > 0){
        set resp.http.X-Cache = "Hit from server2 cache";
}
else{
        set resp.http.X-Cache = "Miss from server2 cache";   #resp.http由varnish响应给客户端的报文首部
}
return (deliver);
}

  • 测试

[root@server4 ~]# curl -I bbs.westos.org
HTTP/1.1 200 OK
Date: Wed, 19 Feb 2020 10:36:28 GMT
Server: Apache/2.4.6 (Red Hat Enterprise Linux)
Last-Modified: Wed, 19 Feb 2020 06:32:06 GMT
ETag: "17-59ee7f279264f"
Content-Length: 23
Content-Type: text/html; charset=UTF-8
X-Varnish: 32773 32771
Age: 7
Via: 1.1 varnish (Varnish/6.3)
X-Cache: Hit from server2 cache
Accept-Ranges: bytes
Connection: keep-alive

  • 清除varnish缓存

[root@server2 ~]# varnishadm ban req.url "~" /      #再次测试报文头部为MISS

[root@server2 ~]# varnishadm ban req.url "~" /index.html


varnish多个后端

[root@server2 ~]# vim /etc/varnish/default.vcl

backend web1 {
    .host = "172.25.254.3";
    .port = "80";
}
backend web2 {
    .host = "172.25.254.4";
    .port = "80";
}

sub vcl_recv {
        if (req.http.host ~ "^(www.)?westos.org") {
        set req.http.host = "www.westos.org";
        set req.backend_hint = lb.backend();
} elsif (req.http.host ~ "^bbs.westos.org") {
        set req.backend_hint = web2;
} else {
        return (synth(405));
}

}

vcl_recv

vcrl_recv是http请求到达后的第一个状态,在这个状态中,可以对请求进行以下的一些处理

1.修改client请求,以减少缓存决策时的差异性

2.根据client请求决定缓存策略

3.重定向请求

4.决定请求的backend

在缓存数据将要发送到客户端时调用

  • 测试(先要在测试主机进行本地解析)

[root@server4 ~]# curl  bbs.westos.org
server4
[root@server4 ~]# curl  www.westos.org
server3

  • varnish多个后端之间实现负载均衡

在server4上配置虚拟主机

[root@server4 ~]# vim /etc/httpd/conf.d/vhost.conf

<VirtualHost *:80>
        DocumentRoot /www
        ServerName www.wetos.org
</VirtualHost>
<Directory "/www">
        Require all granted
</Directory>

<VirtualHost *:80>
        DocumentRoot /bbs
        ServerName bbs.wetos.org
</VirtualHost>
<Directory "/bbs">
        Require all granted
</Directory>

[root@server4 ~]# cat /www/index.html
server4:www.westos.org
[root@server4 ~]# cat /bbs/index.html
server4:bbs.westos.org


配置varnish

[root@server2 ~]# vim /etc/varnish/default.vcl

vcl 4.1;
import directors from "/usr/lib64/varnish/vmods/libvmod_directors.so";

sub vcl_init {
        new lb = directors.round_robin();      #轮询
        lb.add_backend(web1);
        lb.add_backend(web2);
}

sub vcl_recv {
    # Happens before we check if we have this in cache already.
    #
    # Typically you clean up the request here, removing cookies you don't need,
    # rewriting the request, etc.
        if (req.http.host ~ "^(www.)?westos.org") {
        set req.http.host = "www.westos.org";
        set req.backend_hint = lb.backend();
} elsif (req.http.host ~ "^bbs.westos.org") {
        set req.backend_hint = web2;
} else {
        return (synth(405));
}

}

  • 测试(先关闭缓存)

[root@server2 ~]# vim /etc/varnish/default.vcl

sub vcl_recv {
        if (req.http.host ~ "^(www.)?westos.org") {
        set req.http.host = "www.westos.org";
        set req.backend_hint = lb.backend();
        return (pass);
} elsif (req.http.host ~ "^bbs.westos.org") {
        set req.backend_hint = web2;
} else {
        return (synth(405));
}

}

[root@server4 ~]# curl  www.westos.org
server3
[root@server4 ~]# curl  www.westos.org
server4:www.westos.org
[root@server4 ~]# curl  www.westos.org
server3
[root@server4 ~]# curl  www.westos.org
server4:www.westos.org

varnish cdn 推送管理

  yum insatll php -y
  unzip bansys.zip -d /var/www/html/
  mv /var/www/html/bansys/* /var/www/html/

  cd /var/www/html/
  vim config.php

 

  更改apache端口为8080

更改varnish配置

acl westos {
"127.0.0.1";
"172.25.254.0"/24;
}

sub vcl_recv {
    if (req.method == "BAN") {
        if (!client.ip ~ westos){
            return(synth(405,"Not allowed"));
    }
    ban("req.url ~ " + req.url);
        return(purge);
    }

}

 

  重启服务

  • 测试

 

[root@server4 ~]# curl -I www.westos.org
HTTP/1.1 200 OK
Date: Thu, 20 Feb 2020 03:24:57 GMT
Server: Apache/2.4.6 (Red Hat Enterprise Linux)
Last-Modified: Wed, 19 Feb 2020 03:11:21 GMT
ETag: "8-59ee52486b54d"
Content-Length: 8
Content-Type: text/html; charset=UTF-8
X-Varnish: 10 32777
Age: 4
Via: 1.1 varnish (Varnish/6.3)
X-Cache: Hit from server2 cache
Accept-Ranges: bytes
Connection: keep-alive

[root@server4 ~]# curl -I www.westos.org
HTTP/1.1 200 OK
Date: Thu, 20 Feb 2020 03:25:35 GMT
Server: Apache/2.4.6 (Red Hat Enterprise Linux)
Last-Modified: Wed, 19 Feb 2020 03:11:21 GMT
ETag: "8-59ee52486b54d"
Content-Length: 8
Content-Type: text/html; charset=UTF-8
X-Varnish: 14
Age: 0
Via: 1.1 varnish (Varnish/6.3)
X-Cache: Miss from server2 cache
Accept-Ranges: bytes
Connection: keep-alive

 

 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_742325.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手把手教你从零开始用WordPress建站

最近&#xff0c;很多人来问我&#xff0c;怎么做一个实际项目&#xff1f;其实这个说简单也简单&#xff0c;说复杂也复杂&#xff0c;但是不管怎么样&#xff0c;从今天开始&#xff0c;一步一步的走&#xff0c;你肯定可以做一个属于自己的站点。 之前我也在群里说了&#x…

快盘做网站服务器,快盘云服务器地址

快盘云服务器地址 内容精选换一换在您申请了云耀云服务器后&#xff0c;可以通过管理控制台查看和管理您的云耀云服务器。本节介绍如何查看云耀云服务器的详细配置&#xff0c;包括云耀云服务器名称、镜像信息、系统盘、数据盘、安全组、弹性公网IP等信息。登录管理控制台。单击…

websocket用ip不能访问_为什么直接用IP不能访问知乎的网站,而百度却可以?

打开cmd&#xff0c;输入ping baidu.com&#xff0c;然后把得到的ip地址111.13.101.208输入浏览器的地址栏&#xff0c;可以打开百度。但我重复操作ping zhihu.com&#xff0c;得到ip地址54.223.189.245&#xff0c;输入地址栏&#xff0c;返回的却是405 not allowed。想请教一…

网站模板怎么和虚拟服务器,模板站用虚拟主机还是用服务器

模板站用虚拟主机还是用服务器 内容精选换一换本章指导用户使用华为云市场镜像“PHP运行环境AMH4.2面板PHP CentOS6.8”部署AMH环境。AMH是一套通过Web控制和管理服务器的Linux服务器管理系统以及虚拟主机管理系统。弹性云服务器创建成功后&#xff0c;还需要配置安全组&#x…

aix如何查看日志策略_企业网站排名,SEO诊断,网站日志分析经常忽略的6个细节!...

在做SEO的过程中&#xff0c;我们总是会遇到各种莫名其妙的问题&#xff0c;比如&#xff1a;某一天你的网站突然出现收录缓慢的问题&#xff0c;而平时都是秒收录。 最开始我们在做审查的时候&#xff0c;总是在思考&#xff1a; ①是否搜索引擎算法在调整。 ②是否自己的内容…

pHP分析网站日志,通过用数据挖掘技术来分析Web网站日志?

Web日志挖掘是指采用数据挖掘技术&#xff0c;对站点用户访问Web服务器过程中产生的日志数据进行分析处理&#xff0c;从而发现Web用户的访问模式和兴趣爱好等&#xff0c;这些信息对站点建设潜在有用的可理解的未知信息和知识&#xff0c;用于分析站点的被访问情况&#xff0c…

如何进行web端安全性测试_如何使用LoadRunner进行Web网站性能测试?

loadrunner压力测试原理本质就是在loadrunner上模拟多个用户同时按固定行为访问web站点。其中固定行为在loadrunner中是通过录制脚本定义的&#xff0c;多个用户同时访问的策略是在loadrunner的场景中定义的loadrunner压测思路通过loadrunner进行压力测试web应用的主要思路分两…

一个好用的在线微信二维码设计网站

帮一个朋友设计他的微信公众号二维码&#xff0c;本来打算用ps画图&#xff0c;想到之前公众号配图有在线网站&#xff0c;简单方便&#xff0c;类似于这类的工具应该会有很多&#xff0c;在百度上查找体验了一下&#xff0c;终于找到了一款可以快速设计文章末尾二维码的在线网…

计算机找不到was服务器,win7系统搭建网站提示计算机“.”上没有找到wAs服务的图文步骤?...

win7系统搭建网站提示计算机“.”上没有找到wAs服务的图文步骤??在win7系统中&#xff0c;很多用户都会在电脑中使用iis搭建网站&#xff0c;然而在安装完iis&#xff0c;添加了网站之后&#xff0c;网站图标上有一个红叉&#xff0c;单击右键&#xff0c;启动&#xff0c;会…

seo2 php什么意思,url对seo最友好的是

对于静态网站来说&#xff0c;一定程度上来说url可以是每个页面唯一的"身份标志"&#xff0c;对于搜索引擎优化(SEO)来说网站url设置是否合理&#xff0c;页影响着最终的效果&#xff0c;达到事半功倍的效果&#xff0c;今天我根据以往经验来说什么样网站url对于百度…

表格标题浮动html,HTML和CSS 入门系列(二):文字、表单、表格、浮动、定位、框架布局、SEO...

一、文字1.1 属性1.2 字体样式&#xff1a;font-family1.3 字体大小&#xff1a;font-size1.4 字体粗细&#xff1a;font-weight1.5 字体风格&#xff1a;font-style1.6 行高&#xff1a;line-height二、表单点击文字自动关联&#xff1a;三、表格四、浮动4.1 清除浮动.d-paren…

php用sublimetext写网站,sublime text3 phpfmt插件使用

sublime text3 phpfmt插件使用通过包安装管理器安装phpfmt插件.在sublime界面按快捷键 ctrlshiftP选择并选择: Install Package等待片刻输入并选择 phpfmt配置 (Windows)打开并编辑配置文件 ( %AppData%\Sublime Text\Packages\phpfmt\phpfmt.sublime-settings )(建议编辑插件的…

Nginx详解反向代理、负载均衡、LNMP架构上线动态网站

转载于:https://www.cnblogs.com/WIU1905/p/11100752.html

更换服务器对SEO不修改内容,六个步骤搞定更换网站服务器对SEO没影响的方法

谢谢非你不爱的文章投稿近期又许多网站站长盆友发帖子资询说要拆换网址的网络服务器了&#xff0c;可是怕操作失误造成 网址被K&#xff0c;由于早已有许多的网站站长盆友来意见反馈&#xff0c;说自身由于换了IP造成 网址被K了。那麼今日百度搜索百度站长工具新手夏令营论坛版…

java分页sql语句_「sql分页」sql语句 实现分页 - seo实验室

sql分页sql语句 实现分页/*分页思想&#xff1a;比如你要每页获取10条记录&#xff0c;当你显示第5页的记录时&#xff0c;也就是选取第40条至50条的记录.首先应该从所有的记录集中选取50条记录&#xff0c;同时进行倒序,再从中选10条&#xff0c;就完成工作了。下面是一个具体…

花瓣网服务器维护一个月,花瓣网维护网站推荐-只需要这一个网站就够了

推荐一款非常实用的设计师导航&#xff0c;可以说是自己目前用过最好用的设计师导航。里面精选推荐了大量优秀网站&#xff0c;包含高清图库、灵感创意、素材资源、摄影美图、教程文章、设计工具、绘画涂鸦、设计社区、字体下载、图标下载、前端学习、等等众多精选优质站点。目…

常州网站服务器_常州专业网站seo优化推广

网站seol31b10优化推广专业常州&#xff0c;SEO排名&#xff0c;它是指搜索引擎优化关键词排名。而影响到seo排名的因素有很多&#xff0c;比如说域名注册的时间&#xff0c;服务器的空间速度和稳定性&#xff0c;或者像是网站整体的结构&#xff0c;网站的内容等等都是影响了s…

ue怎样显示页面标签_网站各页面该如何布局关键词优化提升排名?

在网站优化中&#xff0c;最值得关注的一个事情就是关键词的布局&#xff0c;因为关键词的布局直接影响着网站的排名。那么怎样布局关键词才能提高页面和关键词的相关性&#xff0c;并提高网站排名呢&#xff1f;下面一起来看看。一、利用HTML标签布局关键词众所周知&#xff0…

直链下载Windows和office安装包,这个网站值得收藏

前面分享了一个下载Windows和office官方安装包的网站&#xff1a;我告诉你&#xff01; 这个网站是通过磁力链接下载的&#xff0c;所以有时候会发现某些磁力链接下载非常慢。本期分享一个直链下载Windows和office官方安装包的网站。 网站名称&#xff1a;TechBench官方网址&am…

白捡的网站

contents&#xff1a;壁纸&#xff1a;软件&#xff1a;收藏夹&#xff1a;图片&#xff0c;视频素材&#xff1a;Pixabay&#xff1a;设计百宝箱&#xff1a;seeseed&#xff1a;优设导航&#xff1a;编程导航&#xff1a;HiPPTer&#xff1a;淘声网&#xff1a;熊猫搜书&…