Varnish Cache是一个web加速软件,用作web服务加速的反向代理,与Squid不同的是它建立在较新的系统内核调用上,并且主要是使用内存作为缓存,它现有的使用者有facebook等,据使用者反馈,其与Squid相比,相同的访问量下连接数大大减少。

本人测试过程

  1. 准备一个普通的HTTP web服务器,我在虚拟机内启动了一个Linux+Apache+MySQL+Php环境,配置文件未改动,下载一个PHPWind 的bbs程序拿来测试。
  2. 在另外一个服务器上编译安装Varnish 3.0(IP:192.168.159.5),默认安装路径,安装过程可参考官方文档。
  3. 编辑Varnish的默认配置文件(/usr/local/etc/varnish/default.vcl):
    varnish ACL配置文件
    #首先设置一个后端服务器
    backend default {.host = "192.168.159.11";.port = "80";
    }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);}#只有GET与HEAD方法才会使用Lookup,使用缓存。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);# }#如果请求的是php页面直接转发到后端服务器if (req.url ~ "\.(php|cgi)($|\?)") {return (pass);}return (lookup);}sub vcl_pipe {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);}if (req.url ~ "\.(png|gif|jpg)$") {unset beresp.http.set-cookie;set beresp.ttl = 1h;}#设置图片的缓存TTL为一小时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""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><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);}
    #

  4. 添加Varnishd进程用户www,用户组www,创建/var/vcache目录,使www用户有权限可读写。
    groupadd www
    useradd www -g www
    mkdir /var/vcache
    chown -R www:www /var/vcache
    chmod -R 750 /var/vcache

  5. 编辑/etc/sysctl.conf 优化几个内核参数:
    net.ipv4.tcp_fin_timeout = 30
    net.ipv4.tcp_keepalive_time = 300
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 1

    运行sysctl -p 重新按配置文件设置内核参数。

  6. 启动Varnishd
    varnishd -a 0.0.0.0:80 -f /usr/local/etc/varnish/default.vcl -T 127.0.0.1:2000 -s file,/var/vcache/,1G -u www

    参数说明:-f指定了配置文件,-T是指定命令行管理界面监听地址,-s file指定了使用文件做缓存,1G是缓存文件大小,-u就是进程的用户了。

  7. 在客户端访问http://192.168.159.5/phpwind ,高频率刷新页面观察varnishd一端netstat -n输出,可以发现Varnish端到后端(apache)的TCP连接几乎一闪而过,很快就释放掉。
  8. 解决后端服务器不能日志记录真实访问者IP的问题,修改apache日志格式。
    LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""  varnish_combined

varnish-cache使用相关推荐

  1. varnish 缓存php,Varnish Cache不会使用会话缓存PHP除非后端TTL被更改

    我是Varnish Cache的新手,有一个问题,希望我能得到一些帮助. 我有一个非常简单和基本的设置,但它没有按照我的理解工作 它应该由于某种原因. 这与Varnish没有缓存使用cookie的PH ...

  2. 如何在CentOS 7上安装Varnish Cache

    Varnish cache is a free and opensource high-performance HTTP accelerator used to speed up the rate a ...

  3. Varnish Cache:高性能反向代理服务器和HTTP加速器

    1 Varnish简介 Varnish是高性能且开源的反向代理服务器和HTTP加速器(cache server).其开发者Poul-Henning Kamp是FreeBSD核心的开发人员之一.Varn ...

  4. Varnish Cache 3.0.0安装

    https://www.varnish-cache.org/installation/redhat Installation on RedHat 先按需要的模块 在安装软件包之前首先看看主机上的 au ...

  5. Varnish使用小结

    文章原始出处和作者信息及 本声明 http://iyubo.blogbus.com/logs/35085709.html 此日志会随时更新,当然,是随着我的应用积累:) 实现静态文件压缩 Varnis ...

  6. 提高性能的Varnish缓存方案

    转载 http://www.s135.com/post/313/ arnish是一款高性能的开源HTTP加速器,挪威最大的在线报纸 Verdens Gang (http://www.vg.no) 使用 ...

  7. 用来代替SQUID的软件VARNISH

    搭建性能比squid高很多的varnish服务器 [文章作者:jackbillow  转载请注明出处:http://www.discuz.net] arnish是一款高性能的开源HTTP加速器,挪威最 ...

  8. Varnish页面缓存服务

    一.缓存相关概念简述 时间局部性:一个数据被访问过之后,可能很快会被再次访问到: 空间局部性:一个数据被访问时,其周边的数据也有可能被访问到 数据缓存:例如MySQL到web应用服务器之间的缓存服务器 ...

  9. varnish详解3

    1.Varnish简介 Varnish是一款高性能的反向代理服务器和HTTP加速器,它的开发者Poul-Henning Kamp是FreeBSD的核心开发成员. 2.Varnish特点 基于内存进行缓 ...

  10. varnish Cconfigure

    一.varnishd指令Varnish启动的命令是/usr/local/varnish/sbin /varnishd,此命令参数较多,用法比较复杂,在命令行执行"/usr/local/var ...

最新文章

  1. 漫画:有趣的“帽子问题”
  2. Windows 7环境下安装PHP 5.2.17
  3. HTML5之Canvas标签简要学习
  4. 15-CSS基础-浮动流
  5. FMStocks7 , 不错的一个.NET 示例程序
  6. 基于9款CSS3鼠标悬停相册预览特效
  7. 华为NP课程笔记12-组播
  8. erp和php数据对接,ERP系统与PLC数据对接方法
  9. 【久远讲算法】栈——后进先出的数据结构
  10. 【小月电子】ALTERA FPGA开发板系统学习教程-LESSON8 LCD1602液晶显示
  11. 用python爬取微博评论对鹿晗、关晓彤微博进行情感分析
  12. 二维数组在内存空间地址不一定连续
  13. 学会这5个拍摄技巧,能让你的视频更好看
  14. 计算机图形处理的一些知识
  15. 解决Chrome播放视频闪屏黑屏无法播放
  16. 2018十大国产佳片
  17. 第二章____一元函数微分学
  18. MobaXterm Professional v11.1 Build 3860 注册版-全功能SSH/X远程客户端-Xmanager最佳替代品
  19. HDU6152-Friend-Graph(拉姆齐(Ramsey)定理)
  20. 使用tail -f 命令时抛出“ inotify 资源耗尽,无法使用 inotify 机制,回归为 polling 机制”

热门文章

  1. Tomcat无需输入项目名,直接用域名访问项目
  2. springcloud阿里巴巴五大组件_如何无缝迁移 SpringCloud/Dubbo 应用到 Serverless 架构
  3. STL源码剖析 算法章节 算法总览
  4. 最新,使用truffle框架之后,安装ipfs的api包文件的命令变化
  5. 在pycharm中使用conda虚拟环境(conda虚拟环境是已经创建好的),解决python安装包文件很费劲的问题
  6. npm安装包总是失败了的,请参考
  7. 项目经理沟通的四个好习惯
  8. AVS游程解码、反扫描、反量化和反变换优化设计
  9. VSCode 汉化、设置为 中文语言显示 、中文界面
  10. 分布式开放 消息系统 (RocketMQ) 的原理与实践