使用Varnish代替Squid做网站缓存加速器的详细解决方案

news/2024/5/20 15:47:22/文章来源:https://blog.csdn.net/weixin_34320159/article/details/85021757

今天写的这篇关于Varnish的文章,已经是一篇可以完全替代Squid做网站缓存加速器的详细解决方案了。网上关于Varnish的资料很少,中文资料更是微乎其微,希望本文能够吸引更多的人研究、使用Varnish。

  在我看来,使用Varnish代替Squid的理由有三点:
  1、Varnish采用了“Visual Page Cache”技术,在内存的利用上,Varnish比Squid具有优势,它避免了Squid频繁在内存、磁盘中交换文件,性能要比Squid高。
  2、Varnish的稳定性还不错,我管理的一台图片服务器运行Varnish已经有一个月,没有发生过故障,而进行相同工作的Squid服务器就倒过几次。
  3、通过Varnish管理端口,可以使用正则表达式快速、批量地清除部分缓存,这一点是Squid不能具备的。  

 



  下面来安装Varnish网站缓存加速器(Linux系统):
  1、创建www用户和组,以及Varnish缓存文件存放目录(/var/vcache):
 

/usr/sbin/groupadd www -g 48
/usr/sbin/useradd -u 48 -g www www
mkdir -p /var/vcache
chmod +w /var/vcache
chown -R www:www /var/vcache



  2、创建Varnish日志目录(/var/logs/):
 

mkdir -p /var/logs
chmod +w /var/logs
chown -R www:www /var/logs



  3、编译安装varnish:
 

wget http://blog.s135.com/soft/linux/varnish/varnish-1.1.2.tar.gz
tar zxvf varnish-1.1.2.tar.gz
cd varnish-1.1.2
./configure --prefix=/usr/local/varnish
make && make install



  4、创建Varnish配置文件:
 

vi /usr/local/varnish/vcl.conf


  输入以下内容:
 

引用
backend myblogserver {
       set backend.host = "192.168.0.5";
       set backend.port = "80";
}

acl purge {
       "localhost";
       "127.0.0.1";
       "192.168.1.0"/24;
}

sub vcl_recv {
       if (req.request == "PURGE") {
               if (!client.ip ~ purge) {
                       error 405 "Not allowed.";
               }
               lookup;
       }

       if (req.http.host ~ "^blog.s135.com") {
               set req.backend = myblogserver;
               if (req.request != "GET" && req.request != "HEAD") {
                       pipe;
               }
               else {
                       lookup;
               }
       }
       else {
               error 404 "Zhang Yan Cache Server";
               lookup;
       }
}

sub vcl_hit {
       if (req.request == "PURGE") {
               set obj.ttl = 0s;
               error 200 "Purged.";
       }
}

sub vcl_miss {
       if (req.request == "PURGE") {
               error 404 "Not in cache.";
       }
}

sub vcl_fetch {
       if (req.request == "GET" && req.url ~ "\.(txt|js)$") {
               set obj.ttl = 3600s;
       }
       else {
               set obj.ttl = 30d;
       }
}


  这里,我对这段配置文件解释一下:
  (1)、Varnish通过反向代理请求后端IP为192.168.0.5,端口为80的web服务器;
  (2)、Varnish允许localhost、127.0.0.1、192.168.0.***三个来源IP通过PURGE方法清除缓存;
  (3)、Varnish对域名为blog.s135.com的请求进行处理,非blog.s135.com域名的请求则返回“Zhang Yan Cache Server”;
  (4)、Varnish对HTTP协议中的GET、HEAD请求进行缓存,对POST请求透过,让其直接访问后端Web服务器。之所以这样配置,是因为POST请求一般是发送数据给服务器的,需要服务器接收、处理,所以不缓存;
  (5)、Varnish对以.txt和.js结尾的URL缓存时间设置1小时,对其他的URL缓存时间设置为30天。

  5、启动Varnish
 

ulimit -SHn 51200
/usr/local/varnish/sbin/varnishd -n /var/vcache -f /usr/local/varnish/vcl.conf -a 0.0.0.0:80 -s file,/var/vcache/varnish_cache.data,1G -g www -u www -w 30000,51200,10 -T 127.0.0.1:3500 -p client_http11=on



  6、启动varnishncsa用来将Varnish访问日志写入日志文件:
 

/usr/local/varnish/bin/varnishncsa -n /var/vcache -w /var/logs/varnish.log &



  7、配置开机自动启动Varnish
 

vi /etc/rc.local


  在末尾增加以下内容:
 

引用
ulimit -SHn 51200
/usr/local/varnish/sbin/varnishd -n /var/vcache -f /usr/local/varnish/vcl.conf -a 0.0.0.0:80 -s file,/var/vcache/varnish_cache.data,1G -g www -u www -w 30000,51200,10 -T 127.0.0.1:3500 -p client_http11=on
/usr/local/varnish/bin/varnishncsa -n /var/vcache -w /var/logs/youvideo.log &



  8、优化Linux内核参数
 

vi /etc/sysctl.conf


  在末尾增加以下内容:
 

引用
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 5000    65000


 



  再看看如何管理Varnish:
  1、查看Varnish服务器连接数与命中率:
 

/usr/local/varnish/bin/varnishstat


  2、通过Varnish管理端口进行管理:
  用help看看可以使用哪些Varnish命令:
 

/usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 help


 

引用
Available commands:
ping [timestamp]
status
start
stop
stats
vcl.load
vcl.inline
vcl.use
vcl.discard
vcl.list
vcl.show
param.show [-l] [ ]
param.set
help [command]
url.purge
dump.pool



  3、通过Varnish管理端口,使用正则表达式批量清除缓存:
  (1)、例:清除类似http://blog.s135.com/a/zhangyan.html的URL地址):
 

/usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 url.purge /a/


  (2)、例:清除类似http://blog.s135.com/tech的URL地址:
 

/usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 url.purge w*$


  (3)、例:清除所有缓存:
 

/usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 url.purge *$



  4、一个清除Squid缓存的PHP函数(清除Varnish缓存同样可以使用该函数,无需作任何修改,十分方便):
 

view plaincopy to clipboardprint?
  1. <?php   
  2. function purge($ip$url)   
  3. {   
  4.     $errstr = '';   
  5.     $errno = '';   
  6.     $fp = fsockopen ($ip, 80, $errno$errstr, 2);   
  7.     if (!$fp)   
  8.     {   
  9.          return false;   
  10.     }   
  11.     else  
  12.     {   
  13.         $out = "PURGE $url HTTP/1.1\r\n";   
  14.         $out .= "Host:blog.s135.com\r\n";   
  15.         $out .= "Connection: close\r\n\r\n";   
  16.         fputs ($fp$out);   
  17.         $out = fgets($fp , 4096);   
  18.         fclose ($fp);   
  19.         return true;   
  20.     }   
  21. }   
  22.   
  23. purge("192.168.0.4""/index.php");   
  24. ?>  

<?php function purge($ip, $url) {    $errstr = '';    $errno = '';    $fp = fsockopen ($ip, 80, $errno, $errstr, 2);    if (!$fp)    {         return false;    }    else    {        $out = "PURGE $url HTTP/1.1\r\n";        $out .= "Host:blog.s135.com\r\n";        $out .= "Connection: close\r\n\r\n";        fputs ($fp, $out);        $out = fgets($fp , 4096);        fclose ($fp);        return true;    } } purge("192.168.0.4", "/index.php"); ?>

  附1:Varnish官方网站:http://www.varnish-cache.org/

  附2:2007年12月10日,我写了一个每天0点运行,按天切割Varnish日志,生成一个压缩文件,同时删除上个月旧日志的脚本(/var/logs/cutlog.sh):
  /var/logs/cutlog.sh文件内容如下:

引用
#!/bin/sh
# This file run at 00:00
date=$(date -d "yesterday" +"%Y-%m-%d")
pkill -9 varnishncsa
mv /var/logs/youvideo.log /var/logs/${date}.log
/usr/local/varnish/bin/varnishncsa -n /var/vcache -w /var/logs/youvideo.log &
mkdir -p /var/logs/youvideo/
gzip -c /var/logs/${date}.log > /var/logs/youvideo/${date}.log.gz
rm -f /var/logs/${date}.log
rm -f /var/logs/youvideo/$(date -d "-1 month" +"%Y-%m*").log.gz


  设置在每天00:00定时执行:
  

/usr/bin/crontab -e

  或者  

vi /var/spool/cron/root

  输入以下内容:

引用
0 0 * * * /bin/sh /var/logs/cutlog.sh
 
转自:张宴 http://blog.s135.com/post/313

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

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

相关文章

iis10 asp 如何连接mdb_如何攻破一个网站

原标题&#xff1a;如何攻破一个网站通过本文你将了解黑客常用的入手思路和技术手法&#xff0c;适合热爱网络信息安全的新手朋友了解学习。本文将从最开始的信息收集开始讲述黑客是如何一步步的攻破你的网站和服务器的。阅读本文你会学到以下内容&#xff1a;1.渗透测试前的简…

数据太多加滚动标题不动_SEO怎么对页面标题优化,页面优化要注意什么?

页面的标题主要是规定了一些网页的内容&#xff0c;然后去告诉搜索引擎蜘蛛这个页面的大概内容&#xff0c;页面标题也就是搜索引擎来判断页面内容的主要参考信息&#xff0c;这就是网页优化最重要的因素。SEO去优化页面标题可以从下面几方面入手(1)相关且准确每个页面标题都要…

建站模板论坛_运营自建站并不难!SHOPYY教你快速建站及精准引流

自建站一直是跨境电商圈中热议的话题。相较于平台&#xff0c;自建站有更大的发挥空间&#xff0c;不受条款限制。不过大部分卖家的印象都停留在“难”上。因为他们在做自建站之后只有少数能做起来。而运营难度究竟有多高&#xff0c;怎样才是正确的建站姿势呢?自建站做不起来…

springboot访问静态页面404_网站404是什么原因,网站404怎么解决

404对于SEO的影响是非常严重的。一旦处理不当网站就会被K&#xff0c;轻微的是降权。所以死链接的处理一定要用正规的处理方式。而更加重要的就是预防404&#xff0c;因为企赢SEO优化那么多网站从来没有出现过死链接这东西。首先我们要知道404出现的原因有哪些&#xff0c;才能…

纯html静态网站_Python爬虫抓取纯静态网站及其资源 !这个项目挣了10k!

遇到的需求前段时间需要快速做个静态展示页面&#xff0c;要求是响应式和较美观。由于时间较短&#xff0c;自己动手写的话也有点麻烦&#xff0c;所以就打算上网找现成的。中途找到了几个页面发现不错&#xff0c;然后就开始思考怎么把页面给下载下来。由于之前还没有了解过爬…

加密狗 加密.net网站_实战案例浅析JS加密 RSA与XXTEA

这次要研究的网站采用的是rsa加密以及xxtea。这里先复习下上一篇讲过的调试流程基础版:如果网页有跳转&#xff0c;必须勾选 preservelog 防止丢包看一下有没有框架 右键查看框架源代码(弹出式登陆界面)登陆尽量使用错误密码 防止跳转查看关键登陆包 分析哪些参数是加密的使用别…

在html中加入搜索词条,如何为网站添加关键字与描述信息

meat标签的奥妙META标签&#xff0c;是HTML语言head区的一个辅助性标签。在几乎所有的page里&#xff0c;我们都可以看到类似下面这段html代码&#xff1a;这就是meta标签的典型运用。meta标签有多少参数&#xff0c;有什么作用&#xff0c;为什么我们要特别重视它呢&#xff1…

Sassaparilla – 简单、快速的创建响应式网站

Sassaparilla 是一组创建响应式网站的规则和风格&#xff0c;Sassaparilla 使用 Sass 和 Compass 建立灵活的可重用的样式表&#xff0c;帮助你简单、快速的创建出响应式网站。 您可能感兴趣的相关文章基于拖放布局的 Twitter Bootstrap 网站生成器Superhero&#xff1a;构建大…

php网站选择什么服务器配置,php选择什么服务器配置

php选择什么服务器配置 内容精选换一换华为云帮助中心&#xff0c;为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档&#xff0c;帮助您快速上手使用华为云服务。简要介绍WebSVN是一个基于Web的Subversion Repository浏览器…

优秀设计:12个带给你灵感的创意单页网站作品

单页网站作为一个流行趋势已有一段时间了&#xff0c;但他们的受欢迎程度似乎并没有任何减少。这种页面设计方法并不适用于每个项目&#xff0c;但有时它是合适的&#xff0c;是有意义的。例如&#xff0c;当没有很多内容&#xff0c;而且你知道的内容在未来不会增长很多&#…

织梦建站第一课(上):搭建织梦本地调试环境

织梦建站第一课&#xff08;上&#xff09;&#xff1a;搭建织梦本地调试环境1织梦简介该步骤可做也可不做&#xff0c;因为如果你想在你的真机上安装织梦本地环境可以&#xff0c;如果选择本地安装则跳过此步&#xff0c;也可以在虚拟机中安装&#xff0c;案例中我在虚拟机中安…

网站打开速度慢如何压缩图片_8个免费实用的图片压缩网站、软件(含下载地址)吐血推荐...

很多朋友在生活、工作中都会遇到图片太大的情况&#xff0c;影响导出、存储。这个时候就需要我们压缩图片或者干脆换掉图片。但是换图是一件很影响效率的事情&#xff0c;找到中意的替代图片可不是件容易的事情。所以今天我给大家整理了一个在线图片压缩网站及软件合辑&#xf…

可以发外链的网站_seo排名就是发外链,网站运营就是写文章

seo排名就是发外链&#xff0c;网站运营就是写文章。常规的菜鸟和从业seo几年的人对于seo和网站运营的理解&#xff0c;基本就在于此。1.seo排名就是发外链我从参加线上网络营销的培训班&#xff0c;在里面学习了seo的一些基本理论和皮毛之后我就开始接企业网站关键词seo排名的…

多吉搜索不能用了_百度停更!火狐插件失效?5个资源搜索网站送给你,搜一下很简单...

在五一放假之前&#xff0c;百度方面就发布了公告&#xff0c;表示将在月底停止更新PC端的百度浏览器&#xff0c;并且一些百度产品也不能在使用&#xff0c;一开始没注意&#xff0c;结果打开电脑中的浏览器突然发现&#xff0c;嗯&#xff1f;我收藏在页面的网站咋都没了&…

html怎么快速收录,新网站上线后如何实现快速收录的原理

SEOer一般都会动手为自己搭建一个网站&#xff0c;一般以个人博客类为主流。对于刚刚入行的SEOer来说&#xff0c;搭建个人博客的目的大致相同。一方面是作为学*结经验使用&#xff0c;也就是拿来练练手&#xff0c;熟悉作业学习经验;一方面也是想能够把关键词优化上首页&#…

关于UI资源获取资源的好的网站

前言&#xff1a;和我一样喜欢UI的一定喜欢这里的内容。 下面是关于sketch资源获取网页&#xff0c;点击图片就能进入&#xff1a; 连接是&#xff1a;https://github.com/JakeLin 居然意外百度到Sketch中国&#xff0c;还提供sketch破解版下载哦&#xff1a;http://www.sketch…

mysql 触发器 增删改写在一起_MYSQL在线学习网站

SQL初步学习1、书籍《SQL必知必会》初学学习SQL语句必备书籍&#xff0c;本书没有涉及理论&#xff0c;而是直接介绍不同平台上数据的排序&#xff0c;过滤和分组&#xff0c;以及表&#xff0c;视图&#xff0c;联结&#xff0c;子查询&#xff0c;游标&#xff0c;储存过程和…

因为此网站使用了 hsts_服务器启用HSTS–HTTP Strict Transport Security – HTTPS教程

服务器启用HSTS–HTTP Strict Transport Security – HTTPS教程 HTTP Strict Transport Security (简称 HSTS) , 是一个安全特性,可以让一个网站告诉浏览器它只能使用HTTPS访问,而不是使用HTTP。本教程教您如何在服务器上配置HSTS。Apache# 必须加载 headers 模块: LoadModule …

千图网解析网站_【软件】千图网美工图片水印解析下载工具

作者/二曼第129篇我们都知道&#xff0c;小到一份ppt&#xff0c;一份word大到一份推文都需要一定的设计基础一份美观的设计是一份材料吸引人的关键在排版的过程中需要的大量图片素材相当一部分无版权的图片就要依赖第三方平台了千图网怎么样没有会员也能得到无水印的图片呢不妨…

dedecms 如何调用多个不同栏目的文章_网站SEO聚合页优化干货,如何优化聚合页排名...

聚合页面是SEO的一个路径依赖&#xff0c;什么SEO项目接手之后&#xff0c;可以啥都不用想&#xff0c;先给上一个聚合。聚合策略对于有一定权重基础的网站来说&#xff0c;还是有效的。能够获得一些流量&#xff0c;但瓶颈也比较明显&#xff0c;很难成为站内最大的搜索流量入…