[文章作者:张宴 本文版本: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
hentai stream
2022-3-24 09:05
Heyy!!Are you looking for some good high quality celeb porn video, we have hundreds of videos with different categorie hentai stream
Hentai Haven
2022-3-24 10:02
amazing site hentai haven enjoy too
Hentai Haven
2022-3-24 10:04
hentai haven this is an amazing site here
Hentai Haven
2022-3-24 10:06
the best site hentai haven is an amazing place
ij.start.canon
2022-3-24 12:54
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.
angelcalista
2022-3-24 12:56
Amazon codev: Enter the amazon activation code/amazon myTV code shown on your smart TV screen at Amzaon.com/mytv to register your compatible https://sites.google.com/view/itunes-gift-card-balance/https://sites.google.com/view/bestbuygiftcardbalances/https://sit... with Amazon Prime. Enjoy unlimited movies and other web shows.
David
2022-3-24 13:35
Your website has a lot of useful knowledge. I’m so thankful for this website.I hope that you continue to share a lot of knowledge.This is my website.https://cricutset.com/
quik
2022-3-24 18:50
https://le-regard-de-papa-et-maman.bl ogspot.com/2018/12/un-tour-dans-la-salle-de-bain-produits.html ;http s://crayondhumeur.blogspot.com/2017/12/oui-mais-non.html ;https: //rindymae.blogspot.com/2013/05/counter-samples.html ;
mshahid
2022-3-24 19:40
"Love what you're doing here guys, keep it up!.." https://mailovedoll.com/tag/thick-sex-dolls/
bennycooper
2022-3-25 20:24
Volume booster enables people to increase the volume of their favorite streaming without any hassle. It brings more enthusiasm to enjoy that music or video when you listen to them on a high volume range. Volume BoosterNetflix PartySite BlockerSite Blocker Extension
mshahid
2022-3-25 23:55
Thank you for the update, very nice site.. ラブドール 詐欺
myraruthra203
2022-3-26 14:57
If you're brand unfamiliar with Cricut or previously utilized Design Space, you've probably noticed the green banners on the images and fonts, indicating the cost of making use of the product in your designs. But, cricut.com/setup allows users to utilize all these exclusive items at the cost of a monthly subscription instead of paying a per item cost. The Cricut Access free trial is the perfect way to try the monthly plan for free. As you will typically require an credit card to sign up for an unpaid trial Some users might be hesitant to sign up for the free Cricut Access trial. With DoNoPay's virtual credit cards you have a brand new option to sign to trial free trials without revealing your credit card details. With DoNotPay's virtual credit card, users are able to enroll for trial trials without having to worry about unnecessary payments. It also keeps your credit card information secure.
johnsy6968
2022-3-26 14:58
If Disney Plus is not working on your Samsung TV, you need to power-cycle your TV. Unplug your TV from the wall and wait a FULL 60 seconds. While you wait, press and hold the power button on the TV for 30 seconds. After the minute is up, plug your TV back in. Not only does disneyplus.com/begin allow you to watch on four devices, you can set up seven different profiles.
David
2022-3-26 15:14
I like your all post. 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.Very interesting blog.URLshttps://disneyplus.combegins.com/https://disneyplus.combegins.com/benefits-of-streaming-tv/https://disneyplus.combegins.com/disneyplus-com-login-begin/https://disneyplus.combegins.com/activate-disney-on-amazon-firestick-or-fire-tv/https://disneyplus.combegins.com/how-to-pay-for-a-disney-plus-account-from-anywhere/https://disneyplus.combegins.com/latest-movies-and-web-series-on-disney-plus-in-2021/https://disneyplus.combegins.com/features-and-benefits-of-disney-plus/https://disneyplus.combegins.com/disneyplus-com-login-begin-verification-code/https://disneyplus.combegins.com/disney-plus-begins-login-how-to-link-your-account-to-a-smart-tv/https://disneyplus.combegins.com/how-to-enter-the-disney-plus-begin-activation-code-on-your-smart-tv/https://disneyplus.combegins.com/get-started-with-disneyplus-begin/https://disneyplus.combegins.com/all-your-disney-favorites-in-one-app/https://disneyplus.combegins.com/disney-plus-suddenly-stopped-working-on-your-samsung-tv-do-not-panic/https://disneyplus.combegins.com/launch-of-disneyplus-com-how-to-watch-disney-plus-on-tv/https://disneyplus.combegins.com/disney-plus-begin-activation-pricing-cancellation-more/https://disneyplus.combegins.com/disney-plus-begin-what-it-is-and-why-it-is-important-for-you-to-know/https://disneyplus.combegins.com/disneyplus-com-login-begin-2022-disneyplus-com-begin/https://disneyplus.combegins.com/disney-plus-about-the-problem-that-this-video-cannot-be-played-error-code-36-cannot-be-viewed-from-the-ps4-app-unsolved/
jennie kim
2022-3-26 15:21
Quick Look: Fox News Channel on Roku features a live stream of the Fox News cable feed,Foxnews.com/connect plus full episodes of many popular Fox News shows, for viewers who subscribe to a participating pay TV service.For those who are unable to activate the Fox News Channel live stream, there is still a lot of free content available.In a significant streaming push, Fox News Channel says it will put its entire primetime opinion lineup on its streaming service Fox Nation. … This is the first time that Fox’s primetime shows will stream online in the U.S.Foxnews.com/connect
jennie kim
2022-3-26 15:22
I often refer to Plex as a streaming service, and this is technically true: Plex tv link takes videos stored in a remote location and streams them to a receiver,usually attached to a television. However, Plex isn’t a streaming service in the same way as a subscription program like Netflix,or even an à la carte storefront like Vudu.Plex tv link
joe cooper
2022-3-26 16:46
Pdf zusammenfügen- This free and simple online tool allows you to combine several PDFs or image files into one PDF document.Pdf zusammenfügen | youtube mp3 converter
Mitchell5698
2022-3-26 19:13
The web interface for setting up your Cricut machine is Cricut.com/setup. Cutting shapes, text, and images using the most sophisticated Cricut machine is the best. Setting Up Your Cricut Machine: A Step-by-Step Guide Follow the link to Cricut.com/setup, which will take you to an online portal where you can set up your Cricut machine. Cutting shapes, text, and images using the most sophisticated Cricut machine is the best. It can cut adhesive paper, faux leather, balsa wood, etc., in addition to card stock and vinyl.circut.com/setup
Jonsalice9
2022-3-26 19:15
Disney Plus is one of the best-known streaming services in the world. You can browse a full collection of Disney classics, as well as your latest favorite Disney movies. Disneyplus.com/begin Code which is an additional subset of Hotstar is an image of Hotstar. Disney Hotstar offers a wide selection of movies, TV series and news in addition to sports. Also, it is famous for its video streaming software.
Jonsalice9
2022-3-26 19:16
On your screen displaying the link, you need to go to DisneyPlus.com/Begin and follow the simple steps below: Go to DisneyPlus.com/Begin. Enter the 8-digit code displayed on your TV. Continue press Continue by pressing the Enter key. You can go back to your device of choice and start watching Disney+ How to activate Disney Plus on your device by going to disneyplus.com/begin Make sure it is on Wi-Fi internet, you can follow the steps below below: Connect your device to the internet and open the Disney Plus app. Disneyplus.com/begin
分页: 288/436 283 284 285 286 287 288 289 290 291 292