[文章作者:张宴 本文版本: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与存储 | 评论(8841) | 引用(0) | 阅读(914744)
studyhub25 Email Homepage
2025-2-28 19:35
In recent years, MBBS degree in Kazakhstan has become very popular among Indian medical students. They come here to get top-class education with advanced practical training at an affordable price. MBBS degree in Semey State Medical University is one of the best medical universities in this country. It has global approval from the best medical institutions of the world such as WHO and MCI. Semey State Medical University was established in the year 1952 but was initially known as Semipalatinsk State Medical Institute. Later, it got accreditation from the Ministry of Education of Kazakhstan. https://www.mbbskazakhstan.com/mbbs-in-semey-state-medical-university-kazakhstan
studyhub25 Email Homepage
2025-2-28 19:41
MBBS in Kazakhstan 2025-26 offers affordable and world-renowned medical education with annual tuition fees ranging from $3,000 to $6,000. Renowned universities, English language instruction, and advanced infrastructure ensure quality learning. Graduates recognized by WHO and NMC are able to pursue careers worldwide. With a low cost of living and excellent clinical experience, Kazakhstan is an ideal choice for aspiring doctors.https://nayeedisha.in/mbbs-in-kazakhstan
studyhub25 Email Homepage
2025-2-28 19:52
MBBS in Astana Medical University Kazakhstan is becoming a popular choice among aspiring doctors due to the easy admission process, affordable fee structure, cost of living, and high-quality education. Moreover, eleven students complete their training and can pursue higher education or work in their respective country as well as in European countries. Also, the safety that Kazakhstan offers is another factor worth mentioning. Kazakhstan has a great diversity and culture in its people, and it is one of the best ways to gain exposure as a medical professional.https://www.mbbskazakhstan.com/mbbs-in-astana-medical-university-kazakhstan
rehydrate weed Email Homepage
2025-3-1 11:16
Your excellent performance is an inspiration to all. Keep up the great work!rehydrate weed
50$ oz weed canada Email Homepage
2025-3-1 11:16
Your excellent performance is an inspiration to all. Keep up the great work!50$ oz weed canada
buy backwoods Email Homepage
2025-3-1 11:17
buy backwoods online canada  Keep working like this, and nothing will be able to stop you!
high thc edibles Email Homepage
2025-3-1 11:18
high thc edibles canada  I am constantly impressed by your performance. Thank you for your hard work!
unicorn strain Email Homepage
2025-3-1 11:18
unicorn strain I’m amazed by how you maintain your performance while taking on even more work. You’re a superstar!
online dispensary ontario Email Homepage
2025-3-4 08:51
<a href =”https://herbapproach.com/product-category/herbapproach-com/online-dispensary-ontario/”>online dispensary ontario</a>Thanks for this nice article.
Cuevana Email Homepage
2025-3-4 09:08
https://w3.ecuevana.com/
lovetoyshub Email Homepage
2025-3-4 11:51
our products are designed to mimic real sensations and intensify your pleasure. Every detail is carefully crafted to ensure you get the most authentic and thrilling experience.<a href="https://www.lovetoyshub.com/">click here</a>
studyhub25 Email Homepage
2025-3-4 15:01
Russia has become one of the most popular destinations for Indian students who wish to pursue MBBS abroad. With affordable tuition fees, globally recognized universities, and high-quality education, MBBS in Russia is an attractive option. The cost of Studying MBBS in Russia is significantly lower compared to private medical colleges in India. This article provides a detailed breakdown of the MBBS fees structure in Russia for Indian students in 2025.https://www.mbbskazakhstan.com/blog/mbbs-in-russia-fees-structure-for-indian-students
duke Email Homepage
2025-3-5 13:51
Can you change names on Spirit Airlines tickets Customer Help LineYes, Spirit Airlines allows name changes on tickets Dial +1 888-690-6233, but only under specific conditions. The airline does not permit full ticket transfers to another person, meaning you cannot completely change the traveler’s name to someone else. However, Spirit does allow name corrections for minor spelling mistakes, legal name changes, and other approved reasons.https://mforum3.cari.com.my/forum.php?mod=viewthread&tid=5408441&fromuid=3245985
studyhub25 Email Homepage
2025-3-5 19:25
It is particularly known for its undergraduate and graduate courses in medical and related fields. Focusing on academic research and practical skill development, the university is popular for MBBS in Kazakhstan. Kazakhstan is a nation in Central Asia. Students seeking MBBS abroad choose Kazakhstan for its secure environment, hassle-free VISA process, easy admission, and cost-effectiveness. Their high-quality education and clinical training are well recognized in the medical field. Their English-medium programs are an added advantage in attracting students from all over the world. With cutting-edge technology and innovation, this university fosters an environment that positively impacts the overall health of the public.https://www.mbbskazakhstan.com/mbbs-in-west-kazakhstan-state-medical-university
what are scooby snacks Email Homepage
2025-3-6 11:02
<a href =”https://herbapproach.com/product-category/flowers/what-are-scooby-snacks/”>what are scooby snacks</a>Great post! Very insightful and helpful tips!
DUKE Email Homepage
2025-3-7 13:41
Need to change your Delta Airlines flight? Call +1 888-690-6233 for expert assistance. Whether you need to modify your travel date, destination, or passenger details, understanding the Delta Airlines change flight policy ensures a smooth and hassle-free experience.https://nationaldppcsc.cdc.gov/s/question/0D5SJ00000WNEmJ0AX/delta-airlines-change-flight-policy-instant-change-your-fli...
Telegram Email Homepage
2025-3-10 15:19
For more information on how to download and use the Chinese version of Telegram, please visit our external blog link:Telegram下載
WhatsApp Email Homepage
2025-3-10 15:20
Go to the official WhatsApp website, choose the appropriate operating system (such as Windows, macOS, Android, iOS, etc.), and download the application:WhatsApp網頁版
WhatsApp Email Homepage
2025-3-10 15:21
Do you want to know more about the Chinese version of WhatsApp download, settings and advanced features? For more detailed instructions and helpful advice, please click here to view our external blog link:WhatsApp網頁版登录
Stdyhub Homepage
2025-3-11 16:49
The process of <a href="https://www.stdyhub.com/mbbs-in-uttar-pradesh">MBBS admission in UP</a> is quite competitive and only the top-ranked students are able to secure a seat in the desired college. Students can prepare for the MBBS entrance examination by appearing for mock tests and by studying from the best textbooks available. The state of Uttar Pradesh has some of the best MBBS colleges in the country, which offer quality medical education at affordable fees. In order to get admission into an MBBS college in Uttar Pradesh, students need to clear the MBBS entrance examination with good marks.
分页: 442/443 第一页 上页 437 438 439 440 441 442 443 下页 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]