Varnish 接口缓存
2017-07-06 本文已影响0人
Sunsol
varnish基础概念
可以基于内存缓存,也可以在磁盘上缓存,但是就算存放在磁盘上,也不能实现持久缓存
只要进成本管控,此前缓存通通失效,无论是在内存还是在磁盘,但是现在已经具备持久缓存功能,但是仍然在试验阶段,经常容易崩溃,而且最大大小不能超过1G。
如果期望内存大小超过几十个G,比如图片服务器,纯粹使用内存,性能未必好,这个时候可以使用磁盘进行缓存,或SSD X 2座RAID避免磁盘损坏,在实现随机访问上ssd硬盘要比机械硬盘要好得多,如果必须要缓存在磁盘上还是建议使用ssd磁盘。
开始
搭建一台云服务器,使用ssh进入,并搭建好一个web服务器,例如:Apache或nginx
更新系统
sudo apt-get update
sudo apt-get upgrade
安装和配置Varnish
1、安装Varnish包
sudo apt-get install varnish
2、为了避免配置被以后的更新而修改,复制一下默认配置:
cd /etc/varnish
sudo cp default.vcl user.vcl
3、停止Varnish服务,配置Varnish
sudo systemctl stop varnish
用Systemd配置varnish后台
打开varnish.service文件,设置端口、配置文件、缓存大小,例如
ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/user.vcl -S /etc/varnish/secret -s malloc,1G
varnish.service的路径为/lib/systemd/system/varnish.service
本人在Ubuntu上的配置具体内容如下
[Unit]
Description=Varnish HTTP accelerator
[Service]
Type=forking
LimitNOFILE=131072
LimitMEMLOCK=82000
ExecStartPre=/usr/sbin/varnishd -C -f /etc/varnish/default.vcl
ExecStart=/usr/sbin/varnishd -a :6081 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
ExecReload=/usr/share/varnish/reload-vcl
[Install]
WantedBy=multi-user.target
- 上面的配置分配最多1G的内存来存储缓存项,如果你需要调整这些配置,编辑
-s malloc, 1G
即可。 - 重启systemd:
sudo systemctl daemon-reload
修改Varnish的默认配置通过VCL文件
在上述内容中,配置文件中有一个默认的user.vcl文件,你需要配置这个文件,来配置Varnish。路径为/etc/varnish/user.vcl。配置内容如下:
backend default {
.host = "127.0.0.1"; (本地IP)
.port = "8080"; (所需缓存的服务器的端口号)
}
配置缓存时间
同上打开user.vcl文件,加上以下内容:
sub vcl_backend_response {
set beresp.ttl = 5m
}