热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Varnish3.0安装配置详解

Varnish相对于squid,存在大量优势,经过生产环境实践,可以用其替换squid.1.安装rpm--nosignature-ihttp://repo.varnish-cache.org/redhat/varnish-3.0/el5/noarch/varnish-release-3.0-1.noarch.rpmyu

Varnish相对于squid,存在大量优势,经过生产环境实践,可以用其替换squid.

1. 安装

rpm --nosignature -i http://repo.varnish-cache.org/redhat/varnish-3.0/el5/noarch/varnish-release-3.0-1.noarch.rpm

yum install varnish

       如果安装过程中提供缺少lbiedit软件包,则使用以下命令安装libedit:

rpm -Uvh http://dev.centos.org/centos/5/testing/x86_64/RPMS/libedit-3.0-2.20090905cvs.el5.centos.x86_64.rpm

rpm -Uvh http://dev.centos.org/centos/5/testing/x86_64/RPMS/libedit-devel-3.0-2.20090905cvs.el5.centos.x86_64.rpm

下载范例配置
       cd /etc/varnish/

mv default.vcl default.vcl.bak

wget -O default.vcl http://yum.120ask.com/deploy/varnish-3.0/default.vcl

cd /etc/sysconfig

mv varnish varnish.bak

wget http://yum.120ask.com/deploy/varnish-3.0/varnish

2. 设置启动选项
       chkconfig varnish on

chkconfig varnishlog off

chkconfig varnishncsa off

3. 启动服务
       service varnish restart

4. 测试
       使用合适的测试工具,如curl, wget,甚至浏览器等测试服务是否正常。强烈建议重启机器以检查配置是否正常。

使用以上方法,即可快速安装好varnish 3.0, 安装完毕之后,一些重要的目录及文件需要特别熟悉:

文件

说明

/etc/varnish/default.vcl

服务配置文件,此文件至关重要。可下载现成的范例文件:http://yum.120ask.com/deploy/varnish-3.0/default.vcl

/etc/varnish/secret

varnishadm管理程序使用到的加密验证文件,此文件在启动varnish时会自动生成,无须建立

/etc/sysconfig/varnish

Varnishd守护进程启动参数配置文件(实质是一个shell脚本),请注意NFILES,MEMLOCK两个变量的值,可从以下地址下载范例文件:

http://yum.120ask.com/deploy/varnish-3.0/varnish

/usr/sbin/varnishd

Varnish的守护进程主程序,一般情况不需要直接运行之

/usr/bin/varnishadm

varnish的命令行管理工具

/usr/bin/varnishhist

以文本图形方式显示varnish的缓存命中分布状况

/usr/bin/varnishlog

显示varnish的shared memory logs, 在调试时候,可能会很有用

/usr/bin/varnishncsa

以NCSA格式记录varnish访问日志到文件系统

/usr/bin/varnish_reload_vcl

用于在运行时重新加载vcl配置,必须将/etc/sysconfig/varnish文件中的RELOAD_VCL设置为1

/usr/bin/varnishreplay

重现访问日志

/usr/bin/varnishsizes

与/usr/bin/varnishhist作用类似

/usr/bin/varnishstat

统计运行状态,如命中率、连接数、缓存条目等等。这个工具最为常用

/usr/bin/varnishtest

/usr/bin/varnishtop

显示varnish频率最高的活动状态

在这些文件中,/etc/varnish/default.vcl是最被频繁修改的文件,而/usr/bin/varnishstat则是在统计时使用最为频繁的工具。

Varnish的各项参数及配置,较为复杂,根据具体应用不同,一般来说,只需要修改/etc/varnish/default.vcl即可。

关于Varnish Cache

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

本人测试过程

准备一个普通的HTTP web服务器,我在虚拟机内启动了一个Linux+Apache+MySQL+Php环境,配置文件未改动,下载一个PHPWind 的bbs程序拿来测试。

在另外一个服务器上编译安装Varnish 3.0(IP:192.168.159.5),默认安装路径,安装过程可参考官方文档。

编辑Varnish的默认配置文件(/usr/local/etc/varnish/default.vcl):
#首先设置一个后端服务器
backend default {
.host = "192.168.159.11";
.port = "80";
}
sub vcl_recv {
if (req.restarts == 0) {
"code-keyword">if (req.http.x-forwarded- "code-keyword">for) {
set req.http.X-Forwarded-For =
req.http.X-Forwarded-For + ", " + client.ip;
} else {
"code-keyword">set req.http.X-Forwarded-For = client.ip;
}
}
#把除了以下这些类型请求以外的访问请求全部直接管道发送到后端的服务器
"code-keyword">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,使用缓存。
"code-keyword">if (req.request != "GET" && req.request != "HEAD") {
/* We only deal  "code-keyword">with GET and HEAD by default */
return (pass);
}
#  "code-keyword">if (req.http.Authorization || req.http.COOKIE) {
#     /* Not cacheable by default */
#     return (pass);
# }
#如果请求的是php页面直接转发到后端服务器
"code-keyword">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"  "code-keyword">for the next 2 minutes
*/
set beresp.ttl = 120 s;
return (hit_for_pass);
}
"code-keyword">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 {
"code-keyword">set obj.http.Content-Type = "text/html; charset=utf-8";
set obj.http.Retry-After = "5";
synthetic {"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">





Error "} + obj.status + " " + obj.response + {"

"} + obj.response + {"


Guru Meditation:


XID: "} + req.xid + {"




Varnish cache server




"};
return (deliver);
}
sub vcl_init {
return (ok);
}
sub vcl_fini {
return (ok);
}
#

添加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

编辑/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 重新按配置文件设置内核参数。

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

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

在客户端访问http://192.168.159.5/phpwind ,高频率刷新页面观察varnishd一端netstat -n输出,可以发现Varnish端到后端(apache)的TCP连接几乎一闪而过,很快就释放掉。

解决后端服务器不能日志记录真实访问者IP的问题,修改apache日志格式。
LogFormat  "code-quote">"%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""  varnish_combined

之后修改Apache的虚拟主机日志格式或者默认日志格式为 varnish_combined.


推荐阅读
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • Apache Shiro 身份验证绕过漏洞 (CVE202011989) 详细解析及防范措施
    本文详细解析了Apache Shiro 身份验证绕过漏洞 (CVE202011989) 的原理和影响,并提供了相应的防范措施。Apache Shiro 是一个强大且易用的Java安全框架,常用于执行身份验证、授权、密码和会话管理。在Apache Shiro 1.5.3之前的版本中,与Spring控制器一起使用时,存在特制请求可能导致身份验证绕过的漏洞。本文还介绍了该漏洞的具体细节,并给出了防范该漏洞的建议措施。 ... [详细]
author-avatar
华浦即热式电热水龙头_376
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有