Varnish配置

Varnish

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
  1. 上面的配置分配最多1G的内存来存储缓存项,如果你需要调整这些配置,编辑-s malloc, 1G即可。
  2. 重启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
}
最后更新于 16th Oct 2017