下面介绍在Linux下如何安装和使用,该图显示了数
分类:巴黎人-服务器

Linux varnish(一款高性能的开源HTTP加速器),varnish加速器

Linux安装配置Varnish Web加速器

Varnish是一款高性能的开源HTTP加速器,它可以来做纯粹的代理服务器,负载均衡,但varnish最主要的功能是缓存加速,也是它最出色的地方。下面介绍在Linux下如何安装和使用。

一、环境

# cat /etc/issue

CentOS release 6.3 (Final)

Kernel r on an m

# getconf LONG_BIT

64

二、下载

cd /usr/local/src/

wget

tar xzvf varnish-3.0.1.tar.gz

三、安装

cd varnish-3.0.1

yum install -y automake autoconf libtool ncurses-devel libxslt groff pcre-devel pkgconfig

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

make

make install

四、校验安装

cd /usr/local/varnish/sbin/

./varnishd -V

五、配置

# cd /usr/local/varnish/etc/varnish/

# cp default.vcl default.vcl.bak

# > default.vcl

# cat default.vcl

# This is a basic VCL configuration file for varnish.  See the vcl(7)

# man page for details on VCL syntax and semantics.

#

# Default backend definition.  Set this to point to your content

# server.

#

 backend default {

    .host = "115.28.225.216";

    .port = "80";

    ###下面三行为新加配

    .connect_timeout = 1s;

    .first_byte_timeout = 5s;

    .between_bytes_timeout = 2s;

 }

#

# Below is a commented-out copy of the default VCL logic.  If you

# redefine any of these subroutines, the built-in logic will be

# appended to your code.

 sub vcl_recv {

    if (req.restarts == 0) {

        if (req.http.x-forwarded-for) {

            set req.http.X-Forwarded-For =

                req.http.X-Forwarded-For + ", " + client.ip;

        } else {

            set req.http.X-Forwarded-For = client.ip;

        }

    }

    if (req.request != "GET" &&

      req.request != "HEAD" &&

      req.request != "PUT" &&

      req.request != "POST" &&

      req.request != "TRACE" &&

      req.request != "OPTIONS" &&

      req.request != "DELETE") {

        /* Non-RFC2616 or CONNECT which is weird. */

        return (pipe);

    }

    if (req.request != "GET" && req.request != "HEAD") {

        /* We only deal with GET and HEAD by default */

        return (pass);

    }

    if (req.http.Authorization || req.http.Cookie) {

        /* Not cacheable by default */

        return (pass);

    }

    return (lookup);

 }

#

 sub vcl_pipe {

#    # Note that only the first request to the backend will have

#    # X-Forwarded-For set.  If you use X-Forwarded-For and want to

#    # have it set for all requests, make sure to have:

#    # set bereq.http.connection = "close";

#    # here.  It is not set by default as it might break some broken web

#    # applications, like IIS with NTLM authentication.

    return (pipe);

 }

#

 sub vcl_pass {

    return (pass);

 }

#

 sub vcl_hash {

    hash_data(req.url);

    if (req.http.host) {

        hash_data(req.http.host);

    } else {

        hash_data(server.ip);

    }

    return (hash);

 }

#

 sub vcl_hit {

    return (deliver);

 }

#

 sub vcl_miss {

    return (fetch);

 }

#

 sub vcl_fetch {

    if (beresp.ttl <= 0s ||

        beresp.http.Set-Cookie ||

        beresp.http.Vary == "*") {

                /*

                * Mark as "Hit-For-Pass" for the next 2 minutes

                */

                set beresp.ttl = 120 s;

                return (hit_for_pass);

    }

    return (deliver);

 }

#

 sub vcl_deliver {

    return (deliver);

 }

#

# sub vcl_error {

#    set obj.http.Content-Type = "text/html; charset=utf-8";

#    set obj.http.Retry-After = "5";

#    synthetic {"

# <?xml version="1.0" encoding="utf-8"?>

# <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

#  ";

# <html>

#  <head>

#    <title>"} + obj.status + " " + obj.response + {"</title>

#  </head>

#  <body>

#    <h1>Error "} + obj.status + " " + obj.response + {"</h1>

#    <p>"} + obj.response + {"</p>

#    <h3>Guru Meditation:</h3>

#    <p>XID: "} + req.xid + {"</p>

#    <hr>

#    <p>Varnish cache server</p>

#  </body>

# </html>

# "};

#    return (deliver);

# }

#

 sub vcl_init {

        return (ok);

 }

#

 sub vcl_fini {

        return (ok);

 }

六、启动与关闭varnish

/usr/local/varnish/sbin/varnishd -f /usr/local/varnish/etc/varnish/default.vcl -s malloc,1024m -T 127.0.0.1:200 -a 0.0.0.0:80

启动参数介绍:
-f /usr/local/etc/varnish/default.vcl
这个 –f 选项指定varnishd使用哪个配置文件。
-s malloc,1G
这个 –s 选项用来确定varnish使用的存储类型和存储容量,我使用的是malloc类型(malloc是一个C函数,用于分配内存空间), 1G 定义多少内存被malloced,1G = 1gigabyte。
-T 127.0.0.1:2000
Varnish有一个基于文本的管理接口,启动它的话可以在不停止varnish的情况下来管理varnish。您可以指定管理软件监听哪个接口。当然您不能让全世界的人都能访问您的varnish管理接口,因为他们可以很轻松的通过访问varnish管理接口来获得您的root访问权限。我推荐只让它监听本机端口。如果您的系统里有您不完全信任的用户,您可以通过防火墙规则来限制他访问varnish的管理端口。
-a 0.0.0.0:8080
这一句的意思是制定varnish监听所有IP发给8080端口的http请求,如果在生产环境下,您应该让varnish监听80,这也是默认的。

pkill varnishd    // 关闭Varnish

/usr/local/varnish/bin/varnishncsa -w /var/log/varnish.log &    //启动varnishncsa用来将Varnish访问日志写入日志文件;


Varnish Cache 的架构笔记

CentOS 5.8下Varnish-2.1.5的安装配置

RedHat脚本改用CentOS源更新安装Nginx、PHP 5.3、Varnish

利用Varnish构建Cache服务器笔记

缓存服务Varnish安装配置

Varnish 编译安装所需准备

Linux下Varnish缓存的配置优化

Varnish基础概念详解


Varnish 的详细介绍:请点这里
Varnish 的下载地址:请点这里

本文永久更新链接地址:

Web加速器 Varnish是一款高性能的开源HTTP加速器,它可以来做纯粹的代理服务器,负载均衡,但varnish最主要的功能是缓存...

高性能的开源http加速器Varnish介绍

Varnish
一、varnish简介
Varnish是一款高性能的开源HTTP加速器,它比squid还稳定,且效率更高,资源占用更少。相信在反向代理,web加速方面,varnish已经有足够能力代替squid。挪威最大的在线报纸 Verdens Gang 使用3台Varnish代替了原来的12台Squid,性能比以前更好。
 
二、Varnish的结构与特点
Varnish是一个轻量级的Cache和反向代理软件,先进的设计理念和成熟的设计框架是Varnish的主要特点,现在的Varnish总共代码量不大,功能上虽然在不断改进,但是还需要继续丰富和加强。下面总结了Varnish的一些特点:
(1)是基于内存缓存,重启后数据将消失。
(2)利用虚拟内存方式,io性能好。
(3)支持设置0~60秒内的精确缓存时间。
(4)VCL配置管理比较灵活。
(5)32位机器上缓存文件大小为最大2G。
(6)具有强大的管理功能,例如top,stat,admin,list等。
(7)状态机设计巧妙,结构清晰。
(8)利用二叉堆管理缓存文件,达到积极删除目的。

三、varnish的系统架构
varnish主要运行两个进程:Management进程和Child进程(也叫Cache进程)。
 
Management进程主要实现应用新的配置、编译VCL、监控varnish、初始化varnish以及提供一个命令行接口等。Management进程会每隔几秒钟探测一下Child进程以判断其是否正常运行,如果在指定的时长内未得到Child进程的回应,Management将会重启此Child进程。
 
Child进程包含多种类型的线程,常见的如:
cache-main线程:全局只有一个,用于启动cache;
acceptor线程:接收新的连接请求并响应;
worker线程:child进程会为每个会话启动一个worker线程,因此,在高并发的场景中可能会出现数百个worker线程甚至更多;
expiry线程:从缓存中清理过期内容;
backend poll线程:每个后端服务器一个,用于检测后端服务器的健康状况;
epoll/kqueue线程:数量可配置,默认为2,用于管理线程池
 
在配置varnish时,一般只需为关注cache-worker线程,而且也只能配置其线程池的数量,而除此之外的其它均非可配置参数。与此同时,线程池的数量也只能在流量较大的场景下才需要增加,而且经验表明其多于2个对提升性能并无益处。

四、Varnish的安装
由于我使用的系统为RHEL5.8 ,因此在安装varnish之前,需要安装如下软件包:
automake,autoconf,libtool,ncurses-devel,libxslt,groff,pcre-devel,pkgconfig
# yum -y install *.rpm
 
编译安装varnish
# tar xf varnish-2.1.3.tar.gz
# cd varnish-2.1.3
# ./configure --prefix=/usr/loca/varnish  

# make  && make install

为varnish提供配置文件
将varnish的默认配置文件复制成为/etc/sysconfig/varnish
# cp /usr/local/varnish/etc/varnish/default.vcl  /etc/sysconfig/varnish
 
创建Varnish用户和Varnish的工作目录
# useradd –s /sbin/nologin varnish
#mkdir  /web/cache
#chown –R varnish:varnish /web/cache

在varnish 2.0版本中,启动varnish之前首先需要为varnish指定后端服务器地址,因此,我们需要编辑varnish的配置文件,指定后端服务器地址。
# vim  /etc/sysconfig/varnish
添加如下信息即可:
backend default {
    .host = "127.0.0.1";
    .port = "80";
}
 
五、varnish的启动和停止
# /usr/local/varnish/sbin/varnishd -f /etc/sysconfig/varnish -s malloc,200M -T 127.0.0.1:2000 -a 0.0.0.0:8080
-f:指定varnish的配置文件
-s:指定varnish的存储类型和存储容量
-T:指定一个基于本文的管理接口,可用于在不停止varnish的情况下来管理varnish
-a:指定监听的套接字
 
查看varnish是否启动成功
# netstat -tunlp | grep varnish
tcp        0      0 0.0.0.0:8080                0.0.0.0:*                  LISTEN      18684/varnishd     
tcp        0      0 127.0.0.1:2000              0.0.0.0:*                  LISTEN      18683/varnishd     
其中8080为Varnish监听的端口,2000为Varnish基于telnet的管理端口。

停止Varnish,使用如下命令
# killall varnishd
 
六、Varnish的二进制程序文件
在安装Varnish后,会生成许多二进制程序文件,其中常见的命令有:
/usr/local/varnish/sbin/varnishd:这种Varnish的启动命令,最重要
/usr/local/varnish/bin/varnishadm:可用来控制管理Varnish实例的。如删除缓存对象
/usr/local/varnish/bin/varnishlog:显示Varnish的日志信息
/usr/local/varnish/bin/varnishncsa:这个命令也可以显示Varnish的日志信息,只不过这个命令显示的日志信息的格式有点类似于apache的combine格式输出的日志。
/usr/local/varnish/bin/varnishstat:显示Varnish的缓存信息
 
七、varnishd指令
varnishd的启动命令是/usr/local/varnishd/sbin/varnisd命令,这个命令有众多参数,可以使用/usr/local/varnish/sbin/varnishd –h来查看相关参数的详细信息。其中常用的参数有:
-a address:port:指定Varnish监听的套接字
-b address:port:指定后端服务器地址及其监听端口
-d:表示debug调试模式
-f file:指定Varnish的配置文件
-P file:指定Varnish的pid文件
-p param=value:指定服务器参数,用来优化Varnish性能的
-n dir:指定Varnish的工作目录
-s kind[,storageoptions]:指定Varnish后端存储的方式。常用的后端存储方式有:
        -s malloc,-s file,<dir_or_file>,<size>。注意在32位的操作系统下,Varnish最大仅支持2G的容量存储。
-t:指定缺省的ttl值
-T address:port:设定Varnish基于telnet的管理地址及其端口
-V:指定Varnish的版本号
-w int[,int[,int]]:指定Varnish的工作线程数。其配置方式有如下几种:
                  -w <fixed_count>
        -w min,max
        -w min,max,timeout [default: -w2,500,300]

八、Varnish是如何记录数据的?
Varnish一个比较显著的特点就是它如何记录数据的,varnish将所有的数据全部记录到内存当中,当内存全部使用以后,又从头开始记录,覆盖最旧的记录。因此,这样就可以很快的记录数据,而且也不占用磁盘空间。不过,一旦服务器宕机的话,则内存中所有的数据都会被释放。
 
九、varnishlog指令
Varnish提供了众多的工具来查看内存中的数据,在这里我只说varnishlog的应用
在命令行上执行varnishlog命令,显示结果如下:
  17 RxHeader    c Accept-Encoding: gzip, deflate
  17 RxHeader    c Host: 192.168.108.202:8080
  17 RxHeader    c Connection: Keep-Alive
  17 VCL_call    c recv
  17 VCL_return  c lookup
  17 VCL_call    c hash
  17 VCL_return  c hash
其中第一列是任意的数,它用来定义请求,相同的号码代表相同的HTTP传输。
第二列是信息标记,所有的日志都带有一个标记(tag),标记对应相对的操作。Rx表示varnish收到数据,Tx表示varnish发送数据。
第三列代表数据是从哪里传出或者传入的,是从c(client)还是b(backend)。
第四列是被记录的数据。
Varnishlog还有许多子选项:
-b:只显示varnish和backend server之间的日志,当您想要优化命中率的时候可以使用这个参数。
-c:和-b差不多,不过它代表的是varnish和client端的通信。
-i tag:只显示某个tag相关的信息,比如“varnishlog –iSessionOpen”将只显示新会话,注意,这个地方的tag名字是不区分大小写的。
-I:通过正则表达式过滤数据,比如“varnishlog -c -i RxHeader -I Cookie”将显示所有接到来自客户端的包含Cookie单词的头信息。

十、varnishstat指令
varnishstat的二进制程序是/usr/local/varnish/bin/varnishstat。缓存命中率的高低直接说明了varnish的运行状态和效果,较高的缓存命中率说明了varnish运行状态良好,web服务器的性能也会提高很多,反之,过低的缓存命中率说明varnish的配置可能存在问题,那么就需要进行调整,因此,从整体上了解varnish的命中率和缓存状态,对于优化和调整varnish至关重要。
使用/usr/local/varnish/bin/varnishstat命令可以查看Varnish的缓存状态信息。如:
# /usr/local/varnish/bin/varnishstat
Hitrate ratio:        1        1        1
Hitrate avg:    0.5294  0.5294  0.5294
 
          18        0.00        0.01 Client connections accepted
          17        0.00        0.01 Client requests received
          9        0.00        0.00 Cache hits
          8        0.00        0.00 Cache misses
          8        0.00        0.00 Backend conn. success
          8        0.00        0.00 Fetch with Length
          11          .            .  N struct sess_mem
          1          .            .  N struct objectcore
          1          .            .  N struct objecthead
          1          .            .  N struct smf
          1          .            .  N large free smf
          10          .            .  N worker threads
          10        0.00        0.00 N worker threads created
          1          .            .  N backends
          8          .            .  N expired objects
          8          .            .  N LRU moved objects
          10        0.00        0.00 Objects sent with write
          18        0.00        0.01 Total Sessions
          17        0.00        0.01 Total Requests
 
其中比较重要的参数有:
Client connections accepted:表示接受的连接数
Client requests received:表示接受的请求总数,如果使用了长连接,那么该值一般大于Client connections accepted值
Cache hits:表示命中的次数
Cache misses:表示非命中的次数
N struct objectcore:表示被缓存对象的数量
N expired objects:表示过期的缓存对象数量
N LRU moved objects:表示被淘汰的缓存对象数量

缓存服务器Varnish概念篇

缓存服务器Varnish概念篇

Varnish Cache 的架构笔记

CentOS 5.8下Varnish-2.1.5的安装配置

RedHat脚本改用CentOS源更新安装Nginx、PHP 5.3、Varnish

利用Varnish构建Cache服务器笔记

缓存服务Varnish安装配置

Varnish 编译安装所需准备

Linux下Varnish缓存的配置优化

Varnish 的详细介绍:请点这里
Varnish 的下载地址:请点这里

本文永久更新链接地址:

Varnish 一、varnish简介 Varnish是一款高性能的开源HTTP加速器,它比squid还稳定,且效率更高,资源占用更少...

1 Varnish简介

varnish:

varnish是一个Web应用程序加速器也被称为高速缓存HTTP反向代理。可以在HTTP的任何服务器的前端安装它并将其配置为缓存服务器。varnish加速明显,它通常加速到300- 1000倍,当然这也取决于你的架构。varnish的主要特点,除了它的性能,还有就是它的配置语言,VCL的灵活性。
varnish架构:

图片 1

图上显示了Varnish架构的框图。该图显示了数据流在varnish的主要部分之间。
主程序段是Manager进程,它包含在varnishd二进制程序中。该Manager进程的任务是将任务(包括缓存)委派给子进程。Manager过程确保每个任务总是有一个进程。
Manar的命令行界面(CLI)可通过以下方式访问:1)varnishadm,如解释中所述管理界面varnishadm部分,2)varnish代理vagent2,或 varnish管理控制台(VAC(通过vagent2)。

HTTP请求处理基本流程:

图片 2

Varnish

Varnish是一款高性能的开源HTTP加速器,挪威最大的在线报纸 Verdens Gang 使用3台Varnish代替了原来的12台Squid,性能比以前更好

Varnish是高性能且开源的反向代理服务器和HTTP加速器(cache server)。其开发者Poul-Henning Kamp是FreeBSD核心的开发人员之一。Varnish采用全新的软件体系结构,和现在的硬件体系配合比较紧密。

Varnish处理HTTP请求的过程如下:

Receive(vcl_recv)状态:也就是请求处理的入口状态,根据VCL规则判断该请求是应该进入 pass(vcl_pass)或者是 pipe(vcl_pipe)或者是lookup(缓存本地查询),还是purge(vcl_purge)。
Lookup 状态:进入该状态后,会在hash表中查找数据。若找到,则进入hit(vcl_hit)状态,否则进入miss(vcl_miss)状态。
Pass(vcl_pass)状态:在此状态下,对于请求会直接发往后端主机,进入到ackend_fetch(vcl_backend_fetch)状态。
Backend_Fetch(vcl_backend_fetch)状态:在此状态下,对请求会向后端服务器进行获取,发送请求,获得数据,并根据配置文件中对此类数据的缓存设置进行缓存或者其他操作。
Deliver(vcl_deliver)状态:将获取到的数据发送给客户端,完成本次请求。

常用的命令

varnishadm ban.url .*$         #清除所有
varnishadm ban.url /index.html  #清除 index.html 页面缓存
varnishadm ban.url /admin/$    #清除 admin 目录缓存

当前计算机系统的内存除了主存外,还包括CPU的L1级缓存、L2级缓存,甚至还包括L3级缓存。硬盘也有缓存,而Squid的架构导致其无法做到最佳存取,但操作系统可以实现这部分功能,所以这部分工作应该交给操作系统来处理,这就是Varnish Cache设计架构。挪威最大的在线报纸Verdens Gang(vg.no)使用了3台Varnish服务器代替了原来的12台Squid服务器,而且性能比以前更好,这是Varnish最成功的应用案例之一。目前,Varnish可以在FreeBSD6.0/7.0、Solaris和Linux 2.6内核上运行。

内置函数

vcl_recv:用于接收和处理请求;当请求到达varnish,通过判断请求的数据来决定如何处理请求
vcl_pipe:用于将请求直接传递至后端主机,并将后端响应原封不动返回给客户端
vcl_pass:用于将请求直接传递给后端主机,但后端主机的响应并不缓存,而是直接返回给客户端
vcl_hit:在缓存中找到请求的内容后自动调用
vcl_miss:在缓存中没有找到请求的内容后自动调用。用于判断是否需要从后端服务器获取内容
vcl_hash:在vcl_recv调用后为请求创建一个hash值时,调用。此hash值将作为varnish中hash表的key
vcl_pruge:在收到 purge请求时,执行此函数,清空特定页面/资源的缓存。
vcl_deliver:将在缓存中找到的请求的内容发送给客户端前调用。
vcl_backend_fetch:向后端主机发送请求前,调用。可修改发往后端的请求
vcl_backend_response:获得后端主机的响应后,调用。
vcl_backend_error:当从后端主机获取资源时失败时,调用。
vcl_init:VCL加载时调用此函数,用于初始化varnish模块(类似于awk中的BEGIN)
vcl_fini:当所有请求都离开当前VCL,且当前VCL被弃用时,调用。用于清理varnish模块(类似于awk中的END)

部署varnish

Varnish Cache 的架构笔记

内建变量:

图片 3

req.:request,表示由客户端发来的请求报文相关;
bereq.
:由varnish发往BE主机的httpd请求相关;
beresp.:由BE主机响应给varnish的响应报文相关;
resp.
:由varnish响应给client相关;
obj.:存储在缓存空间中的缓存对象的属性;只读;
常用变量:
bereq.
, req.*:

bereq.http.HEADERS
bereq.request:请求方法;
bereq.url:请求的url;
bereq.proto:请求的协议版本;
bereq.backend:指明要调用的后端主机;
req.http.Cookie:客户端的请求报文中Cookie首部的值;
req.http.User-Agent ~ "chrome"

beresp., resp.

beresp.http.HEADERS
beresp.status:响应的状态码;
reresp.proto:协议版本;
beresp.backend.name:BE主机的主机名;
beresp.ttl:BE主机响应的内容的余下的可缓存时长;

obj.*

obj.hits:此对象从缓存中命中的次数;
obj.ttl:对象的ttl值

server.*

server.ip varnish主机的ip
server.hostname varnish的主机hostname

client.*

lient.ip 请求客户端的 ip

1.server1下载安装 yum install *
varnish-libs-3.0.5-1.el6.x86_64.rpm 
varnish-3.0.5-1.el6.x86_64.rpm

CentOS 5.8下Varnish-2.1.5的安装配置

varnish配置文件

1.varnish.params 配置varnish服务进程的工作特性,例如监听的地址和端口,缓存机制;
通常这个配置文件不需要太大的改动。
一般较为常见的改动为

指定监听的服务端口:          
VARNISH_LISTEN_PORT=6081
VARNISH_LISTEN_PORT=80
设置存储类型以及大小;Varnish 4中默认使用malloc(即内存)作为缓存对象存储方式
VARNISH_STORAGE="malloc,256M"
VARNISH_STORAGE="malloc,1024M"
进程池配置,(视生产环境而定)
#DAEMON_OPTS="-p thread_pool_min=5 -p thread_pool_max=500 -p thread_pool_timeout=300" 
  1. default.vcl 配置各Child/Cache线程的缓存策略; 配置个缓存默认文件
    默认里面为空,这里可根据需求添加
vcl 4.0;
# Default backend definition. Set this to point to your content server.
backend default {
    .host = "127.0.0.1";
    .port = "8080";
}
sub vcl_recv {
}
sub vcl_backend_response {
}
sub vcl_deliver {

}
[root@cnetos7 varnish]#varnishadm -S secret -T 127.0.0.1:6082  可查看默认的 default.vcl配置
vcl.show  -v boot  

自己做的配置样本:

vcl 4.0;

import directors;     //加载后端负载均衡模块

probe healthchk {         //后端健康检查
        .url = "/.healthchk.html";    //检测后端是否有.healthchk文件,
        .timeout = 2s;      // 超时时长
        .interval = 2s;     //检测频度
        .window = 8;     //  基于最近的多少次检查来判断其健康状态
        .threshold = 5;   //最近.window中定义的这么次检查中至有.threshhold定义的次数是成功的
}

backend appsrv1 {        //后端服务器 动态1
    .host = "192.168.18.99";
    .port = "80";
    .probe = healthchk;
}
backend appsrv2 {        //后端服务器 动态2
    .host = "192.168.18.100";
    .port = "80";
    .probe = healthchk;
}
backend websrv1 {    //后端服务器 静态1
    .host = "192.168.18.101";
    .port = "80";
    .probe = healthchk;
}
backend websrv2 {    //后端服务器 静态2
    .host = "192.168.18.102";
    .port = "80";
    .probe = healthchk;
}

acl purgers {      //定义允许清理缓存的IP
        "127.0.0.0"/8;
        "192.168.18.131"/32;
}
acl baner {    //定义允许清理同一类的缓存的IP
         "127.0.0.1"/8;
}

sub vcl_init {           //创建后端服务器组
        new websrvs  = directors.round_robin();  //静态组
        websrvs.add_backend(websrv1);
        websrvs.add_backend(websrv2);
        new appsrvs = directors.round_robin(); //动态组
        appsrvs.add_backend(appsrv1);   
}  

sub vcl_recv {
   if (req.url ~ "(?i).(jpg|jpeg|png|gif|svg|txt|html|css|js)$") {    // 请求路径中包含 图片,文本,js...格式的转到后端静态服务器组,否则转到动态服务器组
        set req.backend_hint = websrvs.backup();
        }else {
        set req.backend_hint = appsrvs.backup();
   }

    if (req.url ~ "(?i)^/admin") {    //请求路径中含admin的直接不缓存,直接连向后端服务器
        return(pass);
    }

   if (req.method == "PURGE") {  //如果请求方法是PURGE,也就是裁剪缓存
        if (!client.ip ~ purgers) {
                return(synth(405,"Purging not allowed for " + client.ip));  //如果客户端IP不在我们之前定义的ACL for purges中,提示如下信息
        }
        return(purge);
        }

  if (req.method == "BAN") {    //BAN请求的处理
        if (!client.ip ~ baner) {
                return(synth(405,"baning  not allowed for " + client.ip));
        }
        ban("req.http.host == " + req.http.host + " && req.url == " + req.url);
        return (synth(200,"Ban added"));
        }

    if (req.method == "PURGE") {    // PURGE请求的处理
        return(purge);
    }

   if (req.restarts == 0) {        // #记录客户端ip
        if (req.http.X-Fowarded-For) {
           set req.http.X-Forwarded-For = req.http.X-Forwarded-For + "," + client.ip;
        } else {
           set req.http.X-Forwarded-For = client.ip;
        }
   }

}

sub vcl_purge {   //定义裁剪缓存的提示信息
        return (synth(200,"Purged."));
}

    if ( beresp.status != 200 && beresp.status != 404 ) {    // 如果相应的状态码不是200或者404,则不缓存
        set beresp.uncacheable = true;
        set beresp.ttl = 120s;
        return (deliver);
    }
   set beresp.ttl = 1h;   //设置默认ttl缓存为 1小时
   set beresp.grace = 30s;   //意思在30s 内复制旧的请求结果给客户端
    return (deliver);
}

sub vcl_deliver {    // 为响应添加X-Cache首部,显示缓存是否命中
    if (obj.hits > 0) {
        set resp.http.X-Cache = " Hit via " + server.ip;     //提示没有命中
    } else {
        set resp.http.X-Cache = " Miss  via " + server.ip;  // 提示有命中
    }
}
2.server1(部署varnish的主机上)
vim /etc/sysconfig/varnish
/etc/varnish/default.vcl
/etc/init.d/varnish start

RedHat脚本改用CentOS源更新安装Nginx、PHP 5.3、Varnish

本文由巴黎人手机版发布于巴黎人-服务器,转载请注明出处:下面介绍在Linux下如何安装和使用,该图显示了数

上一篇:没有了 下一篇:没有了
猜你喜欢
热门排行
精彩图文