之前曾在Windows上使用了Squid作为图片服务器的缓存,效果还不错。
前几天看到张宴同学的一篇文章《使用Varnish代替Squid做网站缓存加速器的详细解决方案》,就决定试试Linux+Varnish。
-------------------------------------------
一:安装Varnish(Linux系统)
基本安装过程,包括目录结构的安排就是依葫芦画瓢的学张宴同学。
1. 创建 www 组和账户 , 缓存文件目录( /var/vcache ) ,日志目录( /var/logs ) :
/ usr / sbin / useradd - u 48 - g www www
mkdir - p / var / vcache
chmod + w / var / vcache
chown - R www:www / var / vcache
chown -R www:www /var/logs
系统有可能会提醒你,权限编号 48 被占用,改成 49 一样可以使用。也可以直接 vi /etc/passwd 修改。
2.下载Varnish 编译安装:(下载地址也是张宴同学的)
tar zxvf varnish - 1.1 . 2 .tar.gz
cd varnish - 1.1 . 2
. / configure -- prefix =/ usr / local / varnish
make && make install
将Varnish安装到 /usr/local/varnish 目录中。
3.创建Varnish配置文件(/usr/local/varnish/vcl.conf):
set backend.host = " 222.73.×××.1 " ;
set backend.port = " 80 " ;
}
backend image2sserver {
set backend.host = " 222.73.×××.2 " ;
set backend.port = " 80 " ;
}
acl purge {
" localhost " ;
" 127.0.0.1 " ;
" 192.168.1.0 " / 24 ;
}
sub vcl_recv {
if (req.request == " PURGE " ) {
if (!client.ip ~ purge) {
error 405 " Not allowed. " ;
}
lookup;
}
if (req.http.host ~ " ^image1.×××.com " ) {
set req.backend = image1server;
if (req.request != " GET " && req.request != " HEAD " ) {
pipe;
}
</span>else {
lookup;
}
}
elseif (req.http.host ~ "^image2.×××.com") {
set req.backend = image2server;
if (req.request != "GET" && req.request != "HEAD") {
pipe;
}
else {
lookup;
}
}
else {
error 404 "Picture Cache Server";
lookup;
}
}
sub vcl_hit {
if (req.request == "PURGE") {
set obj.ttl = 0s;
error 200 "Purged.";
}
}
sub vcl_miss {
if (req.request == "PURGE") {
error 404 "Not in cache.";
}
}
sub vcl_fetch {
if (req.request == "GET" && req.url ~ "\.(html|asp)$") {
set obj.ttl = 300s;
}
else {
set obj.ttl = 7d;
}
}
(1)我是假设有2个域名指向本机器 image1.***.com 和 image2.***.com 。
(2)除了 image1.***.com 和 image2.***.com 其他的域名访问这台机器,都会返回404 Picture Cache Server。
(3).html 和 .asp 文件缓存时间为 300秒,其余的为 7 天。
5.启动Varnish:
/ usr / local / varnish / sbin / varnishd - n / var / vcache - f / usr / local / varnish / vcl.conf - a 0.0 . 0.0 : 80 - s file, / var / vcache / varnish_cache.data,1G - g www - u www - w 30000 , 51200 , 10 - T 127.0 . 0.1 : 3500 - p client_http11 = on
6.记录Varnish日志:
设置开机启动,和切割日志文件,请看张宴同学的原文-=》 《使用Varnish代替Squid做网站缓存加速器的详细解决方案》
二:管理Varnish
1.查看Varnish状态
2.查看访问最多的引用页面
3.查看本机器上被访问最多的元素
刚刚学习,欢迎大家一起讨论讨论。