讲解一下Varnish安装与配置

Varnish作用是访问web速度的web加速器,被安装在web服务器之前,从而缓存web服务器的应用程序和数据,最后相应客户的请求。 功能与Squid服务器相似,都可以用来做HTTP缓存。

安装

安装pcre

如果没有安装pcre,在编译varnish 2.0以上版本时,会提示找不到pcre库,而pcre库是为了兼容正则表达式,所以必须先安装pcre库。下面是pcre的安装过程:

[root@varnish-server ~]# tar -zxvf pcre-7.9.tar.gz
[root@varnish-server ~]# cd pcre-7.9/
[root@varnish-server ~]# ./config  --prefix=/usr/local/pcre/
[root@varnish-server ~]# make && make install

安装Varnish

这里将Varnish安装到/usr/local/目录下,操作如下:

[root@varnish-server ~]# tar -zxvf varnish-2.1.2.tar.gz
[root@varnish-server ~]# cd varnish-2.1.2
[root@varnish-server ~]# export PKG_CONFIG_PATH=/usr/local/pcre/lib/pkgconfig
[root@varnish-server ~]# ./configuer  --prefix=/usr/local/varnish \
>--enable-dependency-tracking
>--enable-debugging-symbols
>--enable-developer-warnings
[root@varnish-server ~]# make
[root@varnish-server ~]# make install
[root@varnish-server ~]# cp redhat/varnish.initrc   /etc/init.d/varnish
[root@varnish-server ~]# cp redhat/varnish.sysconfig  /etc/syscinfug/varnish

其中,“PKG_CONFIG_PATH”是指定Varnish查找pcre库的路径,至此,Varnish安装完毕。

配置

由于篇幅限制,在这儿是介绍VCL内置函数的意义,请大家见谅!

vcl_recv函数

用于接受和处理请求。当请求达到并被成功接收后被调用,通过判断请求的数据来决定如何处理请求。 此函数一般以如下几个关键字结束:

>pass:表示进入pass模式,把请求控制权交给vcl_pass函数。
>pipe:表示进入pipe模式,请把请求控制权交给vcl_pipe函数。
>error code [reason]:表示返回“code”给客户端,并放弃处理该请求。

vcl_pipe函数

此函数在进入pipe模式时被调用,用于将请求直接传递至后端主机,在请求和返回的内容没有改变的情况下,将不变的内容返回给客户端,直到这个连接被关闭。 此函数一般以如下几个关键字结束:

>pipe:表示进入pipe模式,请把请求控制权交给vcl_pipe函数。
>error code [reason]:表示返回“code”给客户端,并放弃处理该请求。

vcl_pass函数

此函数在进入pass模式时被调用,用于将请求直接传递至后端主机。后端主机在应答数据后将应答数据发送给客户端,但不进行任何缓存,在当前连接下每次都返回最新的内容。 此函数一般以如下几个关键字结束:

>pass。
>error code [reason]:表示返回“code”给客户端,并放弃处理该请求。

lookup

表示在缓存中查找被请求的对象,并且根据查找的结果把控制权交给vcl_hit或者函数vcl_miss。

vcl_hit函数

在执行lookup指令后,在缓存中找到请求的内容后将自动调用该函数。 此函数一般以如下几个关键字结束:

>pass:表示进入pass模式,把请求控制权交给vcl_pass函数。
>deliver:表示将找到的内容发送给客户端,并把控制权交给vcl_deliver。
>error code [reason]:表示返回“code”给客户端,并放弃处理该请求。

vcl_miss函数

在执行lookup指令后,在缓存中没有找到请求的内容时自动调用该方法。此函数可用于判断是否需要从后端服务器获取内容。 此函数一般以如下几个关键字结束:

>pass。
>fetch:表示从后端获取请求的内容,并且把控制权交给vcl_fetch。
>error code [reason]:表示返回“code”给客户端,并放弃处理该请求。

vcl_fetch函数

在后端主机更新缓存并且获取内容后调用该方法,接着,通过判断获取的内容来决定是将内容放入缓存,还是直接返回给客户端。 此函数一般以如下几个关键字结束:

>pass。
>deliver:表示将找到的内容发送给客户端,并把控制权交给vcl_deliver。
>error code [reason]:表示返回“code”给客户端,并放弃处理该请求。

vcl_deliver函数

将在缓存中找到请求的内容发送给客户端前调用该方法。 此函数一般以如下几个关键字结束:

>deliver:表示将找到的内容发送给客户端,并把控制权交给vcl_deliver。
>error code [reason]:表示返回“code”给客户端,并放弃处理该请求。

vcl_timeout函数

在缓存内容到期前调用该函数。 此函数一般以如下几个关键字结束:

>descard:表示从缓存中清楚该内容。
>fetch

vcl_discard函数

在缓存内容到期后或缓存空间不足时,自动调用该函数。 此函数一般以如下几个关键字结束:

>descard
>keep:表示将内容继续保留在缓存中。

原创文章,作者:晴川运维,如若转载,请注明出处:https://baike.qcidc.com/13245.html

(0)
晴川运维晴川运维
上一篇 2025年9月21日
下一篇 2025年9月21日

相关推荐

  • 详解bashrc与profile区别

    bashrc与profile有什么区别?,要搞清bashrc与profile的区别首先要弄明白什么是交互式shell和非交互式shell,什么是login shell 和non-l…

    Linux系统 2025年10月25日
  • Linux面试命令问答

    问:1 如何查看当前的Linux服务器的运行级别? 答: ‘who -r’ 和 ‘runlevel’ 命令可以用来查看当前的Linux服务器的运行级别。 问:2 如何查看Linux…

    Linux系统 2025年6月13日
  • 简单介绍一下graphql

    graphql 是一种用于 API 的查询语言,对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,减少数据的冗余。 对比 Rest API…

    Linux系统 2025年6月8日
  • Linux Vim三种工作模式(命令模式、输入模式和编辑模式)详解

    通过前面的学习我们知道,linux 系统中所有的内容都以文件的形式进行存储,当在命令行下更改文件内容时,常会用到文本编辑器。 我们首选的文本编辑器是 Vim(至于为什么,可查看《V…

    Linux系统 2025年9月20日
  • Linux部署AutoFs挂载服务

    Autofs非常方便,主要有两点: 1、设置开机不一定要挂载的目录,当用的时候才实现自动挂载。 2、用户不使用自动挂载的目录一段的时间,会自动卸载。(默认时间为5分钟) [root…

    Linux系统 2025年6月8日
  • 通过eNSP实现静态NAT转换

    eNSP是图形化网络仿真平台,该平台通过对真实网络设备的仿真模拟。网络转换技术也叫做NAT技术,他的作用就是实现私网IP和公网IP 的转换来达到网络的互通 实验环境: pc:172…

    Linux系统 2025年6月4日
  • Linux下安装Docker具体方法

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化,下面为大家分享一下Li…

    Linux系统 2025年6月12日
  • Linux Mint 安装 Linux Kernel 4.12

    Linus Torvalds 发布了 Linux 内核 4.12。你可以从这里直接下载相关的 deb 包来安装。或者,继续阅读本文,按下面的步骤安装新内核。 警告:Linux 内核…

    Linux系统 2025年6月17日
  • 数据库和数据湖的关键概念性差异

    在数据库和数据湖的工作中,有几个关键的概念性差异。在这篇文章中,让我们来确定其中的一些差异,这些差异在第一眼看到时可能并不直观,特别是对于具有强大关系型数据库背景的人来说。 服务器…

    Linux系统 2025年9月21日
  • Linux下安装并使用Speedtest具体方法

    Speedtest.net强大而知名的全球宽带网络速度测试网站,采用Flash载入界面,Alexa世界排名非常高,Speedtest.net在全球有数百个测试节点,国内有测速节点几…

    Linux系统 2025年10月11日

发表回复

登录后才能评论