[文章作者:张宴 本文版本: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):
2、创建Varnish日志目录(/var/logs/):
3、编译安装varnish:
4、创建Varnish配置文件:
输入以下内容:
这里,我对这段配置文件解释一下:
(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
6、启动varnishncsa用来将Varnish访问日志写入日志文件:
7、配置开机自动启动Varnish
在末尾增加以下内容:
8、优化Linux内核参数
在末尾增加以下内容:
再看看如何管理Varnish:
1、查看Varnish服务器连接数与命中率:
2、通过Varnish管理端口进行管理:
用help看看可以使用哪些Varnish命令:
3、通过Varnish管理端口,使用正则表达式批量清除缓存:
(1)、例:清除类似http://blog.zyan.cc/a/zhangyan.html的URL地址):
(2)、例:清除类似http://blog.zyan.cc/tech的URL地址:
(3)、例:清除所有缓存:
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文件内容如下:
设置在每天00:00定时执行:
我曾经写过一篇文章──《初步试用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
/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
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
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;
}
}
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
/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 &
/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
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
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
# 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
petanimals
2022-2-25 18:37
The Golden Parakeet (golden conures) or conure (also known as the golden conure, (Guaruba Guarouba) is a medium-sized golden yellow Neotropical parrot native to Brazil.
Jack Daniels
2022-2-25 21:44
Gemini Pay is a feature on the Gemini Mobile App that allows users to spend the Gemini dollar and other cryptocurrencies at over 30,000 retail locations across the United States, including major retailers like Bed Bath & Beyond, GameStop, Office Depot, Petco, Ulta Beauty, and The Coffee, thanks to a partnership with Flexa. Select "Forgot your password?" located on the sign-in page. Then, on the following page, enter your registered email address, and Gemini Login will send you an email with a password reset link.https://gminilogine.wordpress.com/https://geminelogm.wordpress.com/https://uppholdllogien.wordpress.com/https://loginuph...
ij.start.canon
2022-2-26 14:49
Canon drivers fully support and assists for all compatible products for all Window versions. We offer the required data to configure, utilize and install your Canon products on your Windows PC.canon is completely safe and secure. ij.start canon |ij.start cannon
4K Projector
2022-2-26 17:12
Optoma is Manufacturer of DLP home cinema, business and education, professional installation projectors, NuForce earphones, projection screens and accessories.read more click here: 4K Projector4K Projector4k laser TVHome Cinema Projector4k projector in indiaTop 10 projectorBest Projectorprojector for homeInteractive Flat Panelinteractive panel for educationHere you can see Interactive Flat Panel Displays information4K Projectorinteractive flat panelinteractive panelinteractive flat panel displayinteractive panel for educationinteractive flat panel for educationinteractive panels and accessoriesinteractive flat panel price
jassica
2022-2-28 11:42
I read this post your post so nice and very informative post thanks for sharing this post!Crypto.com LoginPancake Swap
Avaebrahim28
2022-2-28 17:24
Disney Plus is one of the most popular streaming services in the world. You can find a complete list of Disney classics as well as your new favorite Disney films. Disney offers a variety of TV series, movies, and news, as well as sports. Disney plus is a one-stop shop for all of your favorite Disney shows and movies. To watch the disneyplus.com/start on your device, you need to activate it or install it on that device. There's plenty of programming from Pixar, Marvel Studios, and the Star Wars world, in addition to Disney is the most popular subscription channels in the world. This service allows you to stream live TV shows, sports, and videos. Disney also will enable you to purchase new movies.
Avaebrahim28
2022-2-28 17:25
Plex is an extreme application that can be effortlessly introduced on any stage including brilliant TV. Plex is an astounding application with which you can undoubtedly deal with the media stockpiling and can without much of a stretch access it from numerous gadgets. On the off chance that you are dealing with an issue in getting to plex.tv/link code then, at that point, don't freeze. Before you can begin utilizing Plex you want to follow specific advances and steps for introducing and linking Plex TV through the plex.tv link the weblink.
johnsy
2022-2-28 17:52
What is a safe electric wheelchairs for sale speed? Most power wheelchairs average a top speed of approximately 5 mph. However, some power chair models can achieve maximum speeds of 10 mph and more.The Air Hawk Portable Lightweight Power Wheelchair costs $1,987. This price is very affordable, especially considering that most power wheelchairs cost more than $2,000. You can customize the design of your Air Hawk to include a personalized engraving, elevating leg rest, headrest, or a hard-shelled case.When you put your scooter or wheelchair on charge, leave it until it has been fully charged and the light shows green. Sometimes this can take 12 hours or more so we recommend charging over night. ... If you aren't charging then unplug the charger! Some chargers will allow drain the batteries quite quickly if you do this.
johnsy
2022-2-28 17:53
There's currently no way to cancel your disneyplus.com/start subscription through the mobile app. If you signed up for Disney Plus through a third-party service, you may need to cancel your subscription through that company's website instead. Visit Business Insider's Tech Reference library for more stories.Disney+ subscribers are able to cancel their subscription at any time. Please note that cancelling your Disney+ subscription will not delete your Disney+ account or the Disney account you use for other products and experiences from The Walt Disney Company, if applicable Yes - just like other streaming services you can cancel Disney Plus anytime. If you're paying monthly and cancel, you can carry on using Disney Plus until your next scheduled payment date - at which point you will not be recharged and your subscription will end.
selena gomez
2022-2-28 18:24
Disney Plus costs $8 a month or $80 per year in the US. With a subscription,disneyplus.com/start you get ad-free access to all of the service's streaming titles. Disney Plus does not currently offer a free trial.There's also an option to buy a bundled package with Hulu and ESPN+, which costs $14 a month for all three services. Individually, ESPN+ and the ad-supported version of Hulu each cost $7 a month. Subscribing to the bundle saves you about $8 a month.disneyplus.com/start
selena gomez
2022-2-28 18:25
Pay-TV services allow the subscribers to watch the Fox News channel on different devices that includes streaming devices,Fox news breaking news Smart TV, Xfinity, satellite providers, and more. You need to enter the activation code at foxnews.com/connect and then you will be able to access Fox News on your device. In this post, we will discuss the complete process of activation and many other facts about Fox News.Fox news breaking news
RSF
2022-2-28 21:23
<a href="https://www.boredpanda.com/?p=3334354">gym and sports item manufacturers</a><a href="https://thoughts.com/nursery-gym-equipment-in-hyderabad/">best gym machines for your new gym</a><a href="https://medium.com/@royalsportfitnesss/wellness-adornments-supplement-your-wellness-excursion-ae878f91bb33">.<... href="https://site-5942802-606-8290.mystrikingly.com/">keywords</a><a href="https://gymreviews.hpage.com/">website</a>
RSF
2022-2-28 21:23
<a href="https://www.boredpanda.com/?p=3334354">gym and sports item manufacturers</a><a href="https://thoughts.com/nursery-gym-equipment-in-hyderabad/">best gym machines for your new gym</a><a href="https://medium.com/@royalsportfitnesss/wellness-adornments-supplement-your-wellness-excursion-ae878f91bb33">.<... href="https://site-5942802-606-8290.mystrikingly.com/">keywords</a><a href="https://gymreviews.hpage.com/">website</a>
Jamie Luke
2022-2-28 23:45
Thank you for sharing such informative post.Android 12 UpdateAndroid 12 Updatemobile app maintenancemobile app maintenance
Neha ADMEC
2022-3-1 14:12
Nice post.. If you want to learn web designing at best level then must go for web design course in Delhi https://www.admecindia.co.in/course/most-advanced-web-design-development-master-plus-course/
Riya sharma
2022-3-1 14:15
Learn graphic designing by pursuing graphic design course in Delhi https://www.admecindia.co.in/course/most-advanced-graphic-design-course-master-plus/
Gaurav Pant
2022-3-1 14:15
Start learning web development with experts by pursuing web development course in Delhi https://www.admecindia.co.in/course/best-web-development-master-course/
Tilak Sharma
2022-3-1 14:17
If you want to become master in AutoCAD then must go for AutoCAD course in Delhi https://www.admecindia.co.in/course/best-autocad-master-course/
jamess edward
2022-3-1 14:33
If you are looking for SEO companies near me then you are at the right place.At Cefnogi Solutions, we understand the importance of a strong web presence for a company's website. Whenever a user searches for your brand, we have all the resources at our disposal to help it rank first. By using the best Social media optimization tools we make your web presence crystal clear in front of a large number of people.<a herf="https://cefnogi.com/social-media-optimization/">Social Media Optimization Tools</a><a herf="https://cefnogi.com/social-media-optimization">Social Media Optimization in Digital Marketing</a><a herf="https://cefnogi.com/search-engine-optimization/">Best Search Engine Optimization Service</a><a herf="https://cefnogi.com/search-engine-optimization/">Search Engine Optimization Packages</a>
fdfgh
2022-3-1 18:55
coinbase is down right now . Your funds are safe , and we're currently working on a fixcoinbase down | crypto.com login | pancake swap
分页: 284/438 279 280 281 282 283 284 285 286 287 288