以下内容为个人配置笔记,仅供参考,请勿用于生产环境

varnish基本上是一个不错的squid替代品,个人研究和使用不多,在小型应用中出场的机率不大,不过在这里还是简单介绍一下在ubuntu下的安装配置。

sudo apt-get install varnish

软件就安装完了,配置的话需要配合你的应用服务,比如我的设置方式:让nginx监听在8081端口,而ip默认的80端口让给varnish来做第一道处理。
修改/etc/default/varnish配置文件:

sudo vi /etc/default/varnish

将DAEMON_OPTS里的-a :6081改为-a :80
最后内容例如:

DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-s file,/var/lib/varnish/$INSTANCE/varnish_storage.bin,1G"

然后编辑你的varnish配置文件:/etc/varnish/default.vcl,

sudo vi /etc/varnish/default.vcl

在我的应用中后端是本机的nginx监听8081端口则修改/添加:

backend default {
.host = "127.0.0.1";
.port = "8081";
}

我的这段backend名称为default,在后面的请求处理环节需要把指定域名的请求转发给我的backend:

sub vcl_recv {
    if (req.request != "GET" &&
      req.request != "HEAD" &&
      req.request != "PUT" &&
      req.request != "POST" &&
      req.request != "TRACE" &&
      req.request != "OPTIONS" &&
      req.request != "DELETE") {
        /* Non-RFC2616 or CONNECT which is weird. */
        return (pipe);
    }
    if (req.request != "GET" && req.request != "HEAD") {
        /* We only deal with GET and HEAD by default */
        return (pass);
    }
    if (req.http.Authorization || req.http.Cookie) {
        /* Not cacheable by default */
        return (pass);
    }
    if (req.http.host ~ "^([0-9a-z]+.)?zr4u.com$") {
        set req.backend = default;
    }elseif(req.http.host ~ "^([0-9a-z]+.)?mdat.me$"){
        set req.backend = default;
    }elseif(req.http.host ~ "^([0-9a-z]+.)?thirdparty.com$"){
        set req.backend = default;
    }else{
        return (pass);
    }
    return (lookup);
}

也有在fetch段处理的配置方式不过我的fetch段主要用来处理通用情况:

sub vcl_fetch {
    if (!obj.cacheable) {
        return (pass);
    }
    if (req.request == "GET" && req.url ~ "\.(txt|js)$") {
        set obj.ttl = 3600s;
    }else{
        if (obj.http.Set-Cookie) {
            return (pass);
        }
    }
    set obj.prefetch =  -30s;
    return (deliver);
}

更多的配置方法请参考官方的wiki:http://varnish-cache.org/wiki/VCL

, , ,

引用地址:http://axiong.me/develop/vps-setup-6-app-varnish.html

要说点啥就在这吧

*



使用新浪微博登陆

Switch to our mobile site