[文章作者:张宴 本文版本:v1.2 最后修改:2008.01.02 转载请注明出处:http://blog.zyan.cc]

  我曾经写过一篇文章──《初步试用Squid的替代产品──Varnish Cache网站加速器》,但当时仅仅是用着玩,没做深入研究。

  今天写的这篇关于Varnish的文章,已经是一篇可以完全替代Squid做网站缓存加速器的详细解决方案了。网上关于Varnish的资料很少,中文资料更是微乎其微,希望本文能够吸引更多的人研究、使用Varnish。

  在我看来,使用Varnish代替Squid的理由有三点:
  1、Varnish采用了“Visual Page Cache”技术,在内存的利用上,Varnish比Squid具有优势,它避免了Squid频繁在内存、磁盘中交换文件,性能要比Squid高。
  2、Varnish的稳定性还不错,我管理的一台图片服务器运行Varnish已经有一个月,没有发生过故障,而进行相同工作的Squid服务器就倒过几次。
  3、通过Varnish管理端口,可以使用正则表达式快速、批量地清除部分缓存,这一点是Squid不能具备的。

  点击在新窗口中浏览此图片


  下面来安装Varnish网站缓存加速器(Linux系统):
  1、创建www用户和组,以及Varnish缓存文件存放目录(/var/vcache):
/usr/sbin/groupadd www -g 48
/usr/sbin/useradd -u 48 -g www www
mkdir -p /var/vcache
chmod +w /var/vcache
chown -R www:www /var/vcache


  2、创建Varnish日志目录(/var/logs/):
mkdir -p /var/logs
chmod +w /var/logs
chown -R www:www /var/logs


  3、编译安装varnish:
wget http://blog.zyan.cc/soft/linux/varnish/varnish-1.1.2.tar.gz
tar zxvf varnish-1.1.2.tar.gz
cd varnish-1.1.2
./configure --prefix=/usr/local/varnish
make && make install


  4、创建Varnish配置文件:
vi /usr/local/varnish/vcl.conf

  输入以下内容:
引用
backend myblogserver {
       set backend.host = "192.168.0.5";
       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 ~ "^blog.zyan.cc") {
               set req.backend = myblogserver;
               if (req.request != "GET" && req.request != "HEAD") {
                       pipe;
               }
               else {
                       lookup;
               }
       }
       else {
               error 404 "Zhang Yan 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 ~ "\.(txt|js)$") {
               set obj.ttl = 3600s;
       }
       else {
               set obj.ttl = 30d;
       }
}

  这里,我对这段配置文件解释一下:
  (1)、Varnish通过反向代理请求后端IP为192.168.0.5,端口为80的web服务器;
  (2)、Varnish允许localhost、127.0.0.1、192.168.0.***三个来源IP通过PURGE方法清除缓存;
  (3)、Varnish对域名为blog.zyan.cc的请求进行处理,非blog.zyan.cc域名的请求则返回“Zhang Yan Cache Server”;
  (4)、Varnish对HTTP协议中的GET、HEAD请求进行缓存,对POST请求透过,让其直接访问后端Web服务器。之所以这样配置,是因为POST请求一般是发送数据给服务器的,需要服务器接收、处理,所以不缓存;
  (5)、Varnish对以.txt和.js结尾的URL缓存时间设置1小时,对其他的URL缓存时间设置为30天。

  5、启动Varnish
ulimit -SHn 51200
/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、启动varnishncsa用来将Varnish访问日志写入日志文件:
/usr/local/varnish/bin/varnishncsa -n /var/vcache -w /var/logs/varnish.log &


  7、配置开机自动启动Varnish
vi /etc/rc.local

  在末尾增加以下内容:
引用
ulimit -SHn 51200
/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
/usr/local/varnish/bin/varnishncsa -n /var/vcache -w /var/logs/youvideo.log &


  8、优化Linux内核参数
vi /etc/sysctl.conf

  在末尾增加以下内容:
引用
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 5000    65000



  再看看如何管理Varnish:
  1、查看Varnish服务器连接数与命中率:
/usr/local/varnish/bin/varnishstat

  点击在新窗口中浏览此图片

  2、通过Varnish管理端口进行管理:
  用help看看可以使用哪些Varnish命令:
/usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 help

引用
Available commands:
ping [timestamp]
status
start
stop
stats
vcl.load
vcl.inline
vcl.use
vcl.discard
vcl.list
vcl.show
param.show [-l] []
param.set
help [command]
url.purge
dump.pool


  3、通过Varnish管理端口,使用正则表达式批量清除缓存:
  (1)、例:清除类似http://blog.zyan.cc/a/zhangyan.html的URL地址):
/usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 url.purge /a/

  (2)、例:清除类似http://blog.zyan.cc/tech的URL地址:
/usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 url.purge w*$

  (3)、例:清除所有缓存:
/usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 url.purge *$


  4、一个清除Squid缓存的PHP函数(清除Varnish缓存同样可以使用该函数,无需作任何修改,十分方便):


  附1:Varnish官方网站:http://www.varnish-cache.org/

  附2:2007年12月10日,我写了一个每天0点运行,按天切割Varnish日志,生成一个压缩文件,同时删除上个月旧日志的脚本(/var/logs/cutlog.sh):
  /var/logs/cutlog.sh文件内容如下:
引用
#!/bin/sh
# This file run at 00:00
date=$(date -d "yesterday" +"%Y-%m-%d")
pkill -9 varnishncsa
mv /var/logs/youvideo.log /var/logs/${date}.log
/usr/local/varnish/bin/varnishncsa -n /var/vcache -w /var/logs/youvideo.log &
mkdir -p /var/logs/youvideo/
gzip -c /var/logs/${date}.log > /var/logs/youvideo/${date}.log.gz
rm -f /var/logs/${date}.log
rm -f /var/logs/youvideo/$(date -d "-1 month" +"%Y-%m*").log.gz

  设置在每天00:00定时执行:
  
/usr/bin/crontab -e
  或者  
vi /var/spool/cron/root
  输入以下内容:
引用
0 0 * * * /bin/sh /var/logs/cutlog.sh



Tags: , , ,



技术大类 » Cache与存储 | 评论(8712) | 引用(0) | 阅读(840094)
cricutset Email Homepage
2022-4-7 17:27
I like all of your posts. You have done really good work. Thank you for the information you provide, it helped me a lot. I hope to have many more entries or so from you.Cricut.com/Setupcricut.com setupcricut.com/setup makercricut.com/setup mug press
Olivia2727 Email Homepage
2022-4-7 18:00
Movierulz ms is similar to the first official Movierulz website. It allows you to download the latest movies but it won’t allow live streaming. It is one of the most popular Movierulz sites with millions of searches. Movierulz pc. Movierulz pc was one of the oldest websites similar to Movierulz. It is not running now as the domain is blocked.Movierulz | Download New Movies | Latest Movies Release 2021. Movierulz is your one-stop source for enjoying new movies and films. When you click movierulzCom or any of its other live links, you will go to the site’s home page. Here, you will find a search button. Enter the film name of your choice and start enjoying the movies of your choice.https://www.geeksscan.com/movierulz/
Cricut maker machine Email Homepage
2022-4-7 18:12
Thanks for taking the time to discuss and share this with us, I for one feel strongly about it and really enjoyed learning more about this topic. I can see that you possess a degree of expertise on this subject.https://cricutsetups.com/
Cricut Email Homepage
2022-4-7 18:13
Thanks for taking the time to discuss and share this with us, I for one feel strongly about it and really enjoyed learning more about this topic. I can see that you possess a degree of expertise on this subject.https://cricutsetupmaker.com/
Cricut Email Homepage
2022-4-7 18:13
Thanks for taking the time to discuss and share this with us, I for one feel strongly about it and really enjoyed learning more about this topic. I can see that you possess a degree of expertise on this subject.https://cricutsetupmaker.com/
olivilajhon8 Email
2022-4-7 18:14
Make sure the surface where you are placing the printer is clean and close to Pc or laptop.Check the shipped components with your inkjet printer.https //ij.start.cannon,http //ij.start.canon ij.start.canon,ij.start canon
DAvid Email Homepage
2022-4-7 19:16
Your article is very amazing. thankyou for providing a quality and informative article.  Garmin.com/ExpressGarmin. com/ExpressGarmin.con/expressGarmin. con/ExpressWebroot.com/safeWebroot. com/safeWebroot. com/SecureWebroot.com/Secure
zareen2727 Email Homepage
2022-4-7 19:55
Hbomax is the go-to stage for the vast majority to watch videos in today’s generation. Whether you want to watch informative tutorials, or movies, or even web series, Hbomax has it, and henceforth, it is the most mainstream video support and the real time website as of date. While you can watch Hbomax on any cell phone as long it has video support and a web association just as on computers that have an supported web browser with a internet connectivity. watching Hbomax on TV is an alternate extravagance. Hbomax support on smart TVs is a gift for everybody.  for using all facilities of hbomax Go to hbomax com tvsignin and click the Sign Up link.
hbomax com tvsignin Email Homepage
2022-4-7 19:55
It's a platform offered by WarnerMedia that features 10,000 hours of premium content bundling all of HBO together with even more movies,hbomax.com/tvsignin shows and Max Originals for the whole family,including Friends,South Park,The Big Bang Theory,Wonder Woman,the Studio Ghibli collection, and more.hbo Plus, HBO Max subscribers can stream Warner Bros.Pictures movie premieres the same day as they hit theaters, including films like King Richard .hbomax.com/tvsignin
lisa gomez Email Homepage
2022-4-7 19:56
FOX NOW allows you to stream your favorite FOX programs live or on-demand. Log in using your TV provider credentials to download the app and watch full episodes.Open Foxnews.com/connect NOW and click "Activate TV".The activation code will appear on the screen.Open a browser on either your mobile phone or personal computer. Go to the website with your paid TV username and password. After you have verified your TV provider, open "My Devices" in your FOX profile.
zareen2727 Email Homepage
2022-4-7 19:57
The streaming app that I am going to reveal is HBO Max. It is a newly released app in the market, and you can watch endless content on it. There are tons of features that a user experiences when he uses this app. click here hbomax com tvsignin to  download  the HBO Max in a while, so be ready for it. HBO Max allows consumers to watch on-demand content such as TV shows, movies, athletics, and many more in one convenient location. Using the hbomax activation code, you can get hbomax on your computer. Visit the official website, hbomax com tvsignin , for more information and to sign up for hbo max.
Jonsalice9 Email Homepage
2022-4-7 20:02
Smart TVs are smart TVs, so you don't need to connect other devices to your TV. The latest Android app. It is also available for smart TVs. You will need a Hotstar Stick device if your TV is not Android. Hotstar can be connected to any TV. The code is displayed on your TV screen when you turn on the TV. You can enter the code or leave it as it is. Open the browser on your phone or PC. You can view Hotstar at Disneyplus.com/begin or hotstar.com.Log in to Disneyplus.com Login/Begin url using your username and password.
Jonsalice9 Email Homepage
2022-4-7 20:04
If you want to see Plex using big screen software like Android TV, Smart TV, and then appletv EX T, you should definitely connect your TV to your Plex TV account. To perform the exact same thing, follow the exact steps below: The first thing you need to do is visit the program store or your device store and search for a Plex TV app. Launch the Plex TV app, plex.tv/link then click the drop-down button. If you are new here, click on the sign up option. After signing up, you will be redirected to this new display featuring a 4 character hyperlink code with guidance on how to use that particular code.
mshahid Email
2022-4-7 22:32
Took me time to read all the comments, but I really enjoyed the article. It proved to be Very helpful to me and I am sure to all the commenters here! It’s always nice when you can not only be informed, but also entertained!  check this out
disneyplus.com/begin Email Homepage
2022-4-8 16:07
Disney Plus is a subscription-based streaming service that aims to deliver the Disney experience to an entire family. The service offers a variety of content from Marvel, Star Wars, Pixar and Disney movies and TV shows. To watch the disneyplus.com/begin on your device, you need to activate it or install it on that device. This service allows you to stream live TV shows, sports, and videos. Disney also will enable you to purchase new movies. It streams many movies, tv shows, news, sports web series, and newly released shows. Even Disney releases its own animated movies on the Disney plus begin.
Cricut.com/setup Email Homepage
2022-4-8 16:08
The Cricut setup or the Cricut Machine is an electric tool designed to cut various material like iron-on transfers, paper and vinyl. The Cricut machine is called the die-cutting Machine and can cut leather and wood. If you've purchased the Cricut maker but are unable to get it set up and you're not sure how to set it up, you're at the right spot. The website Cricut.com/setup can help you setup the Cricut machine. This is due to the subscription process and uploading the file or design you wish to use for your project. The cricut design space machine is made to cut vinyl, paper and a variety of other materials into different designs. The Cricut machine is extremely useful in architecture and for work on projects.
AmanADMEC Email Homepage
2022-4-8 16:30
With web design courses you can opt a successful career as a web designer. These courses are fascinating and the demand for web designers is also increasing day by day. So it is very important to join a professional diploma in web design and development to attain expert level skills from a well-reputed institute.https://www.admecindia.co.in/courses/web-design-courses-delhi/
slotรวมเกม
2022-4-9 18:03
pgslot  สามารถเล่นสล็อตเวปตรงไม่ผ่านเอเย่นต์ได้ที่นี่ที่เดียว สามารถเล่นได้ทันทีไม่ต้องสมัครสมาชิกก่อน เกมสล็อตรูปแบบใหม่ ที่มีให้เลือกเล่นมากที่สุด สามารถฝาก - ถอน ได้ตลอด 24 ชั่วโมงไม่มีขั้นต่ำ เกมเดิมพันออนไลน์ต้องที่นี่ที่เดียว slotรวมเกม
เครดิตฟรีสล็อต
2022-4-9 18:04
ทางเข้าเล่นเกมสล็อตออนไลน์มาใหม่ล่าสุดเล่นได้ ตลอด 24 ชั่วโมงทางเข้าเล่นเกมสล็อตที่ดีที่สุด เกมสล็อต pgทางเข้า สามารถเข้าเล่นได้จากมือถือ ทุกที่ ทุกเวลา เครดิตฟรีสล็อต
slot เครดิตฟรี
2022-4-9 18:04
เกมสล็อตรูปแบบใหม่ และอัพเดทเกมใหม่ทุกวัน ทำให้คุณมั่นใจได้เลยว่า เว็บของเรานั้นจะมีเกมมาให้คุณเล่นอย่างมากมายไม่มีเบื่อ เกมสล็อตที่มีความสเถียรที่สุด slot เครดิตฟรี
分页: 291/436 第一页 上页 286 287 288 289 290 291 292 293 294 295 下页 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]