varnish-cache使用

 




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

     

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

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

相关文章

CF617E XOR and Favorite Number

CF617E XOR and Favorite Number 已知一个序列 \(a_1,\ a_2,\ \cdots,\ a_n\) 和 \(k\) &#xff0c;\(m\) 次询问给出 \(l,\ r\) &#xff0c;求 \(\displaystyle\sum_{il}^r\sum_{ji}^r[a_x\oplus a_{x1}\oplus \cdots \oplus a_yk]\) \(n,\ m\leq10^5,\ 0\leq a_i,\ k\leq10…

2020年文章汇总

据悉&#xff0c;深圳某工程师沦为C语言笔试枪手修改cmdline 把内存改成512MB上拉电阻的作用剖析C语言是如何画出这样的三角形的c语言画谢宾斯基三角形Linux字符设备驱动实例哦&#xff0c;这是桶排序回答一个微信好友的创业问题Linux-C编程 / 多线程 / 如何终止某个线程&#…

不理解Zookeeper一致性原理,谈何异地多活改造

转载&#xff1a;http://developer.51cto.com/art/201805/574334.htm Zookeeper 是最终一致性的&#xff0c;由于多副本&#xff0c;以及保证大多数成功的 Zab 协议&#xff0c;当一个客户端进程写入一个新值&#xff0c;另一个客户端进程不能保证马上就会读到&#xff0c;但能…

作诗一首

只恐花尽老相催&#xff0c;为爱鸬鹚雨里飞。 大珠小珠落玉盘&#xff0c;今日征行何岁归。 今日&#xff0c;在此作诗一首&#xff0c;来抒发一下老周我对心爱的小邢的思念。虽内心迷茫&#xff0c;却仍然坚守&#xff1b;虽征邢之难&#xff0c;偏向邢征行。只为相信曾经——…

一道C#类型转换的思考题

c#中&#xff0c;short s1 1; s1 s1 1;有什么错? &#xff08;真有问题&#xff09;short s1 1; s1 1;有什么错?&#xff08;没问题&#xff09;分析&#xff1a;留给你们。转载于:https://www.cnblogs.com/legecoding/archive/2012/07/23/2604991.html

程序员修炼之道--从小工到专家(一)

这个假期里看了一下这本书&#xff0c;乍一看名字&#xff0c;觉得这就是比较鸡汤类的书吧&#xff0c;但是在看了一部分之后&#xff0c;忽然感觉到&#xff0c;以前的自己真的是很无知&#xff0c;一直就没有认识到做一个真实的项目的困难性&#xff0c;也根本就没有真正的认…

2018年文章汇总

Android ANR 实例分析Linux kernel计算某段代码运行时间Linux Kernel 发展和内核特点C/C函数指针与指针函数(二)老王带你理解算法复杂度O(1),O(N),O(N^2)Android NDK Tombstone/Crash 分析堆和栈的区别&#xff08;转过无数次的文章&#xff09;C语言scanf-周末杂想C语言-scanf…

C++11:右值引用和转移赋值

1、左值与右值的区别&#xff1a; 左值&#xff1a;能别赋值的值&#xff1b;能取到地址的值&#xff0c;用&能取到地址&#xff0c;具有持久性&#xff1b; 右值&#xff1a;临时变量&#xff1b;不能用&取到地址&#xff1b;只是字面常量值 2、右值引用 一般用的…

[备忘]Visual Studio常用小技巧

1. 怎样调整代码排版的格式&#xff1f; 选择&#xff1a;编辑—>高级—>设置文档的格式 或 编辑—>高级—>设置选中代码的格式。 格式化cs代码&#xff1a;Ctrlkf 格式化aspx代码&#xff1a;Ctrlkd 2. 怎样跳转到指定的某一行&#xff1f; 两种方法&#…

Angular CLI的简单使用(1)

参考地址: https://v2.angular.cn/docs/ts/latest/cli-quickstart.html Angular CLI是一个命令行界面工具&#xff0c;它可以创建项目、添加文件以及执行一大堆开发任务&#xff0c;比如测试、打包和发布。 1. 请先在终端/控制台窗口中运行命令 node -v 和 npm -v, 如下图,没有…

在没有数据集的情况下使用数据表

使用数据适配器填充数据表 View Code using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient;namespace PopDataTable {class Program{static void Main(string[] args){string connString…

2019年文章汇总

要不要去培训机构深造一下&#xff1f;我一个37岁的程序员朋友Linux内核中的GPIO系统整理的免费资料&#xff0c;帮你年后跳槽C语言&#xff0c;字符串指针做函数参数书籍推荐过年回家抢票攻略C语言&#xff0c;函数不可返回指向栈内存的指针你还会写这段C51程序吗&#xff1f;…

一种简单的LRU cache设计 C++

最近在工作中需要用到LRU cache用作缓存来提高性能&#xff0c;经过查阅各种资料&#xff0c;了解了其运行的机制&#xff0c;如下&#xff1a; LRU cache可以用于在内存中保持当前的热点数据&#xff0c;下面实现一个有大小限制的lru cache&#xff0c;相关如下&#xff1a; …

开博了,喜欢这里的气氛

开博了&#xff0c;喜欢这里的气氛 以后经常写东西 学PHP不久&#xff0c;很多东西需要学习 我的站点 www.zhibowang.cn www.xzld.com转载于:https://www.cnblogs.com/gxphp/archive/2009/04/05/1429819.html

bsgs整理

目录 bsgs问题 或 poj2417&#xff1a;概述代码exbsgs鸣谢 \(gzy gzy gzy\)bsgs问题 或 poj2417&#xff1a; 给定质数\(p\)&#xff0c;给定\(a\),\(b\),\((a,p)1\) 求出最小的整数x&#xff0c;使得\(a^{x}≡b(mod p)\) 概述 由费马小定理可以知道\(a^{xp-1}≡a^{x}≡b(mod p…

两个指针变量可以相减

两个指针变量可以相减转载于:https://www.cnblogs.com/LoveFishC/archive/2012/07/23/3845529.html

linux下修改max_user_processes和open_file的最大值

从事分布式服务器开发工作的都会遇到&#xff0c;linux下open_file的值默认是1024&#xff1b;max user processes的值默认是4096&#xff0c;在实际用于中&#xff0c;这两个值严重不足&#xff0c;常常需要调整这两个值。默认配置如下&#xff1a; 可以通过以下两种方式修改&…

Silverlight 全屏显示

privatevoidFullScreenButton_Click(objectsender, RoutedEventArgs e) { Application.Current.Host.Content.IsFullScreen Application.Current.Host.Content.IsFullScreen?false:true; }转载于:https://www.cnblogs.com/star250/archi…

IP SLA的路径控制

一、定义SLA 服务水平协议&#xff08;简称&#xff1a;SLA&#xff0c;全称&#xff1a;service level agreement&#xff09;是在一定开销下为保障服务的性能和可靠性&#xff0c;服务提供商与用户间定义的一种双方认可的协定。通常这个开销是驱动提供服务质量的主要因素。简…

创业动力衰减 中国面临危险挑战

近日&#xff0c;在翻阅1月份出的一书《赢道&#xff1a;成功创业者的28条戒律》时&#xff0c;对目前国内的创业形势产生了近乎激动的想法。从目前的创业情况看&#xff0c;我认为&#xff0c;中国80年代青年的创业动力正在衰减&#xff0c;对照2005年—2007年间各种创业沙龙如…