Varnish,或称为 Varnish Cache,是一套高效能的反向网站快取伺服器(reverse proxy server)。Varnish 目前被用在挪威最大的报社 Verdens Gang 上,官方网站:https://www.varnish-cache.org/
应用在内存 1G 以上的服务器站点上最佳,可以加速网页的访问,Varnish 监听 80 端口,对 HTTP 协议中的 GET、HEAD 请求进行缓存,对 POST 请求透过。
我的博客之前加载要 2s 以上,使用 Varnish 初期,页面访问在 1s 以内,但是使用几个月后,发现博客很慢,问题也是出在 Varnish 上,重启就好了。我的服务器是 1G 内存,分配给 Varnish 512M,应该是配置的不合理,还请了解的朋友指教。
下面的才是重点,说下如何在服务器上安装及启动 Varnish 缓存。
环境: Linux CentOS、1G 内存、Varnish 3.0、lnmp
一、安装:
通过 SSH 远程登录到服务器,然后依次执行下列命令行。
# rpm --nosignature -i http://repo.varnish-cache.org/redhat/varnish-3.0/el5/noarch/varnish-release-3.0-1.noarch.rpm # yum install varnish # cd /etc/varnish/ # mv default.vcl default.vcl.bak # wget http://centos.googlecode.com/files/default.vcl # vi default.vcl
default.vcl 是配置 Varnish 的缓存规则,利用 googlecode 上的覆盖本地配置,具体的可以打开配置文件看一看。
线上使用要监听 80 端口,需要将 Nginx 上网站的端口改为其他(下文讲到的网站端口设置为 8020),否则 80 端口被占用,Varnish 就无法启动了,本地的话 Varnish 端口就可以随意设置,如 8010,访问 //www.izhangheng.com:8010 就可以看到效果。
二、Varnish 配置
下面介绍下需要更改的 default.vcl 或 Nginx 的配置。
Nginx 中所有 listen 的端口都要更改,包括底部 vhost 虚拟目录中的配置,否则 Nginx 会占用监听的端口,如果 80 端口被占用,前面的 Varnish 就无法监听 80 端口了,会出现 404 错误。
1、Nginx 配置文件和 vhost 配置文件中,更改端口号,Nginx 主文件位置:/usr/local/nginx/conf/nginx.conf
server { listen 8020; server_name www.izhangheng.com; access_log off; }
2、后端 Web 应用程序的 ip 和端口,与 Ngnix 或 Apache 中监听的网站端口一致,下面的配置就是告诉 Varnish 访问的网站的端口是 8020,如果是一个站点,也可以改为域名,如 .host = “www.izhangheng.com”。
Varnish 配置文件位置:/etc/varnish/default.vcl。
backend default { .host = "127.0.0.1"; .port = "8020"; }
3、下面的是配置允许刷新缓存的域名或者 ip,可以配置多个:
acl purge { "127.0.0.1"; } sub vcl_recv { # 下面是判断缓存的站点,网站中有多个虚拟目录的话,直接配置127.0.0.1就ok了 if (req.http.host ~ "(服务器IP)") { set req.backend = default; } else { return (pass); }
4、查看 Varnish 的服务 ip 和端口号,Varnish 系统配置文件位置:/etc/sysconfig/varnish。
# # Telnet admin interface listen address and port VARNISH_ADMIN_LISTEN_ADDRESS=127.0.0.1 VARNISH_ADMIN_LISTEN_PORT=6082 # 另外还需要关注下这两个配置 VARNISH_LISTEN_PORT=80 #定义 varnish 的端口为80 VARNISH_STORAGE_SIZE=1G #定义 varnish 最大缓存大小为 1G
三、Varnish 启动命令
1、终端中执行下面命令启动 Varnish,官方的命令启动分配的内存为 1G,我的内存共 1G,我给分配了 512M。
# varnishd -f /etc/varnish/default.vcl -s malloc,512M -T 127.0.0.1:6082 -a 0.0.0.0:80
命令中 127.0.0.1:6082 就是 Varnish 配置第4点介绍的服务 ip 和端口,而最后的 0.0.0.0:80,就是监听 80 端口,众所周知,网站访问默认端口就是80,访问时输入 //www.izhangheng.com 和 //www.izhangheng.com:80 是一样的。
2、下面命令可以查看当前网络连接情况,可以看到 Varnish 已经成功监听到 80 端口就正确了。
# netstat -ntlp
3、下面命令可以强制杀掉 Varnish 的服务,Varnish 也就停止了。
# pkill varnishd
4、WordPress 中可以安装 w3tc 缓存插件来清除 Varnish 缓存。
相关文档:
Varnish 3.0 官方文档:https://www.varnish-cache.org/docs/3.0/
Varnish简单配置实例:http://www.fkblog.org/blog907
这是基调的探测图?
360 上的,看着挺不错
高大上
用了有效果吗?
当然有效果了,就是我的服务器是在美国,才1G内存,效果也不是很明显。
我的好像用的是apache不知有可以用吗?
可以的,就是和nginx配置有点区别
网站打开速度很不错~