varnish4 基础实战

实验环境

node1 192.168.0.8 varnish服务器

node2 192.168.0.3 动态web

node3 192.168.0.7 静态web

node1安装varnish

##安装varnish yum源 
# wget http://repo.varnish-cache.org/redhat/varnish-4.1.el6.rpm  
# yum install varnish-4.1.el6.rpm 

# yum install jemalloc varnish

varnish服务端配置

# vi /etc/sysconfig/varnish     
    ##修改varnish监听端口为80
    VARNISH_LISTEN_PORT=80

缓存规则配置

# vi /etc/varnish/default.vcl vcl 4.0; 
backend static 
{     
    .host = "192.168.0.7";     
    .port = "80"; 
} 
backend dynamic 
{     
    .host = "192.168.0.3";     
    .port = "80"; 
}  
sub vcl_recv 
{    
    if(req.url ~ "\\.html") 
    {       
        set req.backend=static;    
    }    
    if(req.url ~ "\\.php") 
    {       
        set req.backend=dynamic;
        return(pass);    
     }
}
sub vcl_backend_response { 
        set beresp.ttl = 7200s;
}

启动varnish并加载缓存规则

# service varnish start # varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082 ## 加载vcl文件 varnish> vcl.load default default.vcl  varnish> vcl.use default   varnish> quit

web服务器node2 node3安装httpd

node3 192.168.0.7

# yum install httpd # service httpd start # echo "static 192.168.0.7" > /var/www/html/index.html # echo "dynamic 192.168.0.7" > /var/www/html/index.php

node2 192.168.0.3

# yum install httpd # service httpd start # echo "static 192.168.0.3" > /var/www/html/index.html # echo "dynamic 192.168.0.3" > /var/www/html/index.php

测试

# curl -v 192.168.0.8/index.html
* About to connect() to 192.168.0.8 port 80 (#0)
*   Trying 192.168.0.8... connected
* Connected to 192.168.0.8 (192.168.0.8) port 80 (#0)
> GET /index.html HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: 192.168.0.8
> Accept: */*
> 
< HTTP/1.1 200 OK
< Date: Mon, 31 Oct 2016 10:08:52 GMT
< Server: Apache/2.2.15 (CentOS)
< Last-Modified: Mon, 31 Oct 2016 08:43:52 GMT
< ETag: "2c1f-13-540253518f140"
< Content-Length: 19
< Content-Type: text/html; charset=UTF-8
< X-Varnish: 32783 3
< Age: 6288
< Via: 1.1 varnish-v4
< Accept-Ranges: bytes
< Connection: keep-alive
< 
static 192.168.0.7
* Connection #0 to host 192.168.0.8 left intact
* Closing connection #0

# curl -v 192.168.0.8/index.php
* About to connect() to 192.168.0.8 port 80 (#0)
*   Trying 192.168.0.8... connected
* Connected to 192.168.0.8 (192.168.0.8) port 80 (#0)
> GET /index.php HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: 192.168.0.8
> Accept: */*
> 
< HTTP/1.1 200 OK
< Date: Mon, 07 Nov 2016 05:03:13 GMT
< Server: Apache/2.2.15 (CentOS)
< Last-Modified: Mon, 07 Nov 2016 02:00:42 GMT
< ETag: "1014db-14-540ac642c51dd"
< Accept-Ranges: bytes
< Content-Length: 20
< Content-Type: text/plain; charset=UTF-8
< X-Varnish: 13
< Age: 0
< Via: 1.1 varnish-v4
< Connection: keep-alive
< 
dynamic 192.168.0.3
* Connection #0 to host 192.168.0.8 left intact
* Closing connection #0

多次访问可发现index.php始终分配到node2,index.html一直分配在node3,表明动态分离成功

访问index.html时X-Varnish头部显示有2个数字,第一个数字是请求的标识ID,第二个数字是缓存的标识ID,表明缓存已命中!

原创文章,作者:N24_lizi1,如若转载,请注明出处:http://www.178linux.com/59185

赞 (0)
N24_lizi1N24_lizi1
上一篇 2016-11-15 23:31
下一篇 2016-11-16 16:47

相关推荐

  • Linux文件和目录管理

    Linux目录和文件管理 Linux文件信息详述 文件数据存储在块中 文件元数据存储在inode中 文件名和其对应的inode号码存储在目录项中 数据块的概念: 文件在硬盘上的最小存储单位叫做扇区,1扇区=512字节,操作系统读取硬盘的时候不会一个一个读,这样太慢,会一次连续读多个扇区,即一个读取一个“块”,常见的 1块=八个扇区=4kB inode的概念:…

    Linux干货 2016-11-04
  • 马哥教育网络班20期-第四周课程作业

    Table of Contents 1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 2、编辑/etc/group文件,添加组hadoop。 3、手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为/home/h…

    Linux干货 2016-06-26
  • vim编辑器

    一、vim简介    vi: Visual Interface,文本编辑器     文本: ASCII, Unicode     文本编辑种类:         行编辑器: sed…

    Linux干货 2016-08-10
  • 初学正则表达式

      前言:     在学正则表达式之前,有小伙伴讲解说,正则表达式在文本处理上功能非常强大、使用非常普遍,并且现在很多的工具软件都支持它,以后的学习工作中会经常使用,非常灵活,但是灵活的同时又是繁琐,需要小心翼翼的仔细推敲。抱着认真、好奇的心思听完了王老的课。我自己理解的正则表达式是,给一些符号赋予一定的涵义…

    Linux干货 2016-08-12
  • 磁盘分区知识总结

    Linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。 1.命令格式: df [选项] [文件] 2.命令功能: 显示指定磁盘文件的可用空间。如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以&nbsp…

    Linux干货 2017-08-19
  • Jerry首作_linux基础

    一、计算机的组成及其功能 硬件 冯·洛伊曼体系 控制器(Control):是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。 运算器(Datapath):运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。 存储器(Memory):存储器的功能是…

    Linux干货 2016-10-25