[文章作者:张宴 本文版本: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
shzz
2022-8-26 01:01
The writer is enthusiastic about purchasing wooden furniture on the web and his exploration about best wooden furniture has brought about the arrangement of this article. Robby Blanchard
shz
2022-8-26 01:13
I was just browsing through the internet looking for some information and came across your blog. I am impressed by the information that you have on this blog. It shows how well you understand this subject. Bookmarked this page, will come back for more. Andrius Silmas
shz
2022-8-26 01:16
Hi to everybody, here everyone is sharing such knowledge, so it’s fastidious to see this site, and I used to visit this blog daily Jason Katzenback
shz
2022-8-26 01:19
Regular visits listed here are the easiest method to appreciate your energy, which is why why I am going to the website everyday, searching for new, interesting info. Many, thank you! Jason Katzenback
shz
2022-8-26 01:25
Thanks for the informative and helpful post, obviously in your blog everything is good.. Jason Katzenback
alinabozo
2022-8-26 15:01
Hydroxychloroquine 200 mg | Ivermectin Tablets For Humans | Potassium Iodide Tablets | Levofloxacin 500 mg | Levofloxacin 250 mg | Ciprofloxacin 500 mg | Ciprofloxacin 250 mg | Fabi Spray | NAC 600 mg | Buy Ziverdo Kit | Vitamin C & Zinc | Prednisone 40 mg | Prednisone 20 mg | Prednisone 10 Mg | Prednisone 5 Mg | Pirfenidone 200 mg | Pirfenidone 400 mg | Minoz 50 mg | Minoz 100 mg | Buy Ivermectin 12 mg | Buy Ivermectin 6 mg | Buy Ivermectin 3 mg | HCQS 200 mg Tablets | HCQS 400 mg Tablets | Plaquenil 200 mg | Doxycycline 100 mg | Nizonide 500 mg | Fluvoxamine 100 mg Tablet | Fluvoxamine 50 mg Tablet | Dexona 0.5 mg | Dexona 4 mg |Clopidogrel 75 mg Tablet | Zycolchin 0.5 mg Tablet | Clopicard AP 75 | Colchiheal 0.5 | Metatile 3 mg | Metatile 5 mg | Cephadex 500 mg | Cephadex DT 250 Mg | Budecort Inhaler 200 Mcg | Budecort Inhaler 100 Mcg | Budecort Respules 1 mg | Budecort Respules 0.5 mg | Azee 250 mg | Azee 500 mg | Azipro 250 mg | Zpack 500 mg | Albuterol inhaler | Cipmox 250 | Cipmox 500
QWERTYU
2022-8-27 03:08
The Phantom Wallet is one of the popular cryptocurrency wallets available on the internet. Just like other digital wallets.
jonsan33
2022-8-27 13:00
https://activationmycard.com/oxygen-com-link-enter-activation-code-oxygen-com-link/https://activationmycard.com/oxygen-com-link-enter-activation-code-oxygen-com-link/
bBatumi Shota Rustaveli State University
2022-8-27 17:19
Batumi Shota Rustaveli State University was founded in the year 1923. Khushi Nakaidze was the first director of the Institute. The University started preparatory courses for students in the year 1935.Batumi Shota Rustaveli State University
Trust Wallet
2022-8-28 01:15
Users who have stored Bitcoin in their Exodus account can easily withdraw it from the wallet and send it to another wallet address or bank account. Here on this page, we are going to mention the quick steps to withdraw Bitcoin from Exodus.https://wallet-exodux.github.io/ https://waletcoinbase.github.io/ https://mettamasik-l0.github.io/ https://phantmowallet.github.io/ https://walledtrust.github.io/
Rarible NFT
2022-8-28 12:58
There are a great deal of software application purses already offered. Instances of competitors are Jaxx, Green Address, as well as Bread Purse. So, the Rarible NFT team wish to make another one.https://nftrarible.github.io/ https://shibaswaps.github.io/ https://uniswapsexchange.github.io/ https://roninwalletio.github.io/ https://binanceowallet.github.io/ https://exodusewallet.github.io/ https://coinvasewallet.github.io/
kent
2022-8-29 13:12
Trezor Wallet is the safest way to manage & trade your cryptocurrencieshttps://sites.google.com/cryptowalletbit.com/trezor-wallet/home | https://sites.google.com/cryptowalletbit.com/blockfi-wallet/home
Thomas
2022-8-29 13:43
Thank you for sharing with us, I know it can be hard to talk about our grief, but it's an important part of healing.Coinbase Pro App | Uphold Wallet
Guest posting
2022-8-29 14:24
When you're ready to begin a Guest posting campaign, there are a few things you need to do to get started. First, make sure your content is quality. If you aren't writing about your own business, it is probably best to focus on other people's sites. That way, you'll stand out from the competition. Make sure your author bio connects back to your website, and includes a link to your own site or call to action. Also, be sure to follow up with your publisher after publishing your post so they can help promote your article. https://www.99alternatives.com/guest-posting
What does shorting a stock mean
2022-8-29 14:24
When you're looking to short sell stocks, you'll need to borrow shares from a stock broker at a given price. Then, you'll sell them on the market and repay your lender. Short selling involves betting that a stock's value will fall before it is fully repaid. If the stock's price doesn't fall, you'll make a profit by buying it back at a lower price.https://www.99alternatives.com/article/what-does-shorting-a-stock-mean.html
llc definition
2022-8-29 14:25
There are several differences between an LLC and a corporation. An LLC is a separate legal entity with separate management and owners. The members are a company or individuals. A corporation is a legal entity that has one owner, not many. The members are not personally liable for any debts of the business. As a result, an LLC is not a good choice for unsecured debt. However, it can be useful if you have a large amount of personal debts. You can use the same method to secure your personal debts.
What is better silver or sterling silver
2022-8-29 14:25
Sterling silver is a type of metal alloy. Typically, it is 92.5% pure and contains 7.5% other metals. The pure metal is too soft to be used alone, and it is not recommended for jewelry making. Fine silver, on the other hand, is more durable and malleable, which makes it a good choice for investment purposes. Both are favored by many designers, but sterling is more expensive than fine silver. https://www.99alternatives.com/article/what-is-better-silver-or-sterling-silver.html
Investment banking
2022-8-29 14:26
What do investment bankers do? As the most common jobs in the financial industry, investment bankers help large corporations and startups raise money for a variety of purposes. They work closely with companies to prepare for major mergers and acquisitions. They also advise clients on the most lucrative investment options. An investment banker will be required to travel frequently to meet with clients, present information, and make presentations. Here are some of the most common roles of an investor.https://www.99alternatives.com/article/what-do-investment-bankers-do.html
john
2022-8-29 16:59
Thanks for the post keep sharing.Its really the best article!Unique content! Coinbase Wallet | Atomic Wallet
dfgdsf
2022-8-29 19:43
In 2015, Upholḓ removed all fees regarding money transfer for verified members. In other words, it is a global platform that allows users to convert between fiat currencies, cryptocurrencies and a handful of commodities and stocks. Upholḓ login provides a trading platform that lets users go directly from one asset class to another.https://upholdlogun.mobirisesite.com/ https://geminilogs.mobirisesite.com/ https://metamasklogg.mobirisesite.com/ https://upholdoginl.mobirisesite.com/ https://uphloadlogni.mobirisesite.com/ https://geminilginn.mobirisesite.com/ https://us-gemnilgino.mobirisesite.com/ https://logonmetkamask.mobirisesite.com/ https://logonwuphold.mobirisesite.com/ https://logonkucoins.mobirisesite.com/ https://metamasklogen.mobirisesite.com/ https://metamasklogon.mobirisesite.com/ https://geminiexchange.mobirisesite.com/
分页: 328/436 323 324 325 326 327 328 329 330 331 332