`

varnish代理缓存配置

 
阅读更多

yum install varnish,开机自启动,将nginx配置文件改为监听127.0.0.1:8080

配置varnish

varnish.params如下(端口改为80)

# Varnish environment configuration description. This was derived from
# the old style sysconfig/defaults settings

# Set this to 1 to make systemd reload try to switch vcl without restart.
RELOAD_VCL=1

# Main configuration file. You probably want to change it.
VARNISH_VCL_CONF=/etc/varnish/default.vcl

# Default address and port to bind to. Blank address means all IPv4
# and IPv6 interfaces, otherwise specify a host name, an IPv4 dotted
# quad, or an IPv6 address in brackets.
# VARNISH_LISTEN_ADDRESS=192.168.1.5
VARNISH_LISTEN_PORT=80

# Admin interface listen address and port
VARNISH_ADMIN_LISTEN_ADDRESS=127.0.0.1
VARNISH_ADMIN_LISTEN_PORT=6082

# Shared secret file for admin interface
VARNISH_SECRET_FILE=/etc/varnish/secret

# Backend storage specification, see Storage Types in the varnishd(5)
# man page for details.
VARNISH_STORAGE="file,/var/lib/varnish/varnish_storage.bin,1G"

# Default TTL used when the backend does not specify one
VARNISH_TTL=120

# User and group for the varnishd worker processes
VARNISH_USER=varnish
VARNISH_GROUP=varnish

# Other options, see the man page varnishd(1)
#DAEMON_OPTS="-p thread_pool_min=5 -p thread_pool_max=500 -p thread_pool_timeout=300"

 

default.vcl如下

vcl 4.0;

import std;

backend default {
    .host = "127.0.0.1";
    .port = "8080";
    .probe = {
        .url = "/hello";
        .timeout   = 2s;
        .interval  = 30s;
        .window    = 5;
        .threshold = 2;
    }
    .first_byte_timeout     = 300s;   # How long to wait before we receive a first byte from our backend?
    .connect_timeout        = 5s;     # How long to wait for a backend connection?
    .between_bytes_timeout  = 2s;     # How long to wait between bytes received from our backend?
}

sub vcl_init {
}

acl purge {
    "127.0.0.1";
    "localhost";
}

sub vcl_recv {
    if (req.url ~ "^/404") {
        return (synth(404, "Not Found"));
    }

    if (req.http.X-Forwarded-For) {
        set req.http.X-Forwarded-For = req.http.X-Forwarded-For + ", " + client.ip;
    } else {
        set req.http.X-Forwarded-For = client.ip;
    }

    if (req.method == "PURGE") {
        if (!client.ip ~ purge) {
            return (synth(405, "This IP is not allowed to send PURGE requests."));
        }

        return (purge);
    }

    if (req.method != "GET" &&
            req.method != "HEAD" &&
            req.method != "PUT" &&
            req.method != "POST" &&
            req.method != "TRACE" &&
            req.method != "OPTIONS" &&
            req.method != "PATCH" &&
            req.method != "DELETE") {
        return (pipe);
    }

    if (req.method != "GET" && req.method != "HEAD") {
        return (pass);
    }

    if (req.url ~ "^[^?]*\.(bmp|bz2|css|doc|eot|flv|gif|gz|ico|jpeg|jpg|js|less|pdf|png|rtf|swf|txt|woff|xml)(\?.*)?$") {
        unset req.http.Cookie;
        return (hash);
    }

    if (req.http.Authorization) {
        return (pass);
    }

    return (hash);
}

sub vcl_pipe {
    return (pipe);
}

sub vcl_pass {
#    return (pass);
}

sub vcl_hash {
    hash_data(req.url);

    if (req.http.host) {
        hash_data(req.http.host);
    } else {
        hash_data(server.ip);
    }

    if (req.http.Cookie) {
        hash_data(req.http.Cookie);
    }
}

sub vcl_hit {
    return (deliver);
}

sub vcl_miss {
    return (fetch);
}

sub vcl_backend_response {
    if (bereq.url ~ "^[^?]*\.(bmp|bz2|doc|eot|flv|gif|gz|ico|jpeg|jpg|less|mp[34]|pdf|png|rar|rtf|swf|tar|tgz|txt|wav|woff|xml|zip)(\?.*)?$") {
        unset beresp.http.set-cookie;
        set beresp.ttl = 1h;
    }

    if (bereq.url ~ "^[^?]*\.(css|js|html)(\?.*)?$") {
        set beresp.ttl = 10m;
    }

    if (beresp.ttl <= 0s || beresp.http.Set-Cookie || beresp.http.Vary == "*") {
        set beresp.ttl = 120s;
        set beresp.uncacheable = true;
        return (deliver);
    }

    set beresp.grace = 1h;

    return (deliver);
}

sub vcl_deliver {
    if (obj.hits > 0) {
        set resp.http.X-Cache = "Cached";
    } else {
        set resp.http.x-Cache = "UnCached";
    }

    # Remove some headers: PHP version
    unset resp.http.X-Powered-By;

    # Remove some headers: Apache version & OS
    unset resp.http.Server;
    unset resp.http.X-Drupal-Cache;
    unset resp.http.X-Varnish;
    unset resp.http.Via;
    unset resp.http.Link;

    return (deliver);
}

 varnishstat查看缓存命中等。

分享到:
评论

相关推荐

    高命中率的varnish缓存配置分享

    《高命中率的Varnish缓存配置详解》 Varnish是一款高性能的HTTP反向代理缓存服务器,它能够显著提升网站的响应速度和并发处理能力。在本文中,我们将深入探讨如何配置Varnish以实现高命中率的缓存策略,从而提高...

    Varnish网站加速缓存代理1

    自2006年发布首个0.9版本以来,Varnish因其高效能、低资源占用和稳定性,已经在许多大型网站上取代了如Squid这样的传统代理缓存服务。 Varnish的工作原理基于反向代理模式,它接收来自用户的HTTP请求,然后决定是否...

    深入探讨Varnish缓存命中率.docx

    Varnish缓存命中率是衡量Varnish缓存服务器性能的关键指标,它反映了服务器能够从...理解这些因素并进行针对性的优化,可以显著提升Varnish作为反向代理缓存服务器的性能,从而为整个网站或应用带来更好的用户体验。

    varnish+lighttpd配置

    3. **安全设置**:确保Varnish和Lighttpd的安全配置,避免被攻击。 4. **日志分析**:定期分析Varnish和Lighttpd的日志,找出性能瓶颈和优化点。 通过Varnish和Lighttpd的组合,你可以构建一个高效、灵活的Web...

    linux-varnish配置

    Varnish 是一款高性能的开源HTTP缓存和代理服务器,主要用于提升网站的响应速度和处理能力。它通过缓存静态内容和动态内容的副本,减少对后端服务器的请求,从而提高了整体的Web性能。在Linux环境下,配置Varnish是...

    varnish测试报告

    Varnish是一款高性能的HTTP反向代理服务器和缓存服务器,常用于Web应用的加速。它能够将静态内容缓存在内存中,并提供快速的静态内容服务,从而减轻后端服务器的压力,提高响应速度。Varnish的配置和使用对于提升...

    PHP 清空varnish 缓存的详解(包括指定站点下的)

    一种常见的性能优化手段是使用缓存服务器,比如Varnish,它是一种高性能的HTTP反向代理加速器,用来缓存动态内容,提高网站响应速度。 然而,缓存也有其弊端,即当网站内容更新后,用户可能会看到过时的信息,因为...

    Laravel开发-laravel-varnishable

    6. **使用步骤**:安装"laravel-varnishable"通常涉及通过Composer进行依赖管理,然后配置Varnish服务器的相关设置,最后在Laravel应用中调用提供的API进行缓存操作。 7. **API和命令**:扩展包可能提供一系列...

    Varnish权威指南(中文版).pdf

    Varnish经常被用在内容分发网络(CDN)中,或者作为反向代理缓存来缓存后端应用服务器产生的内容,尤其是对于那些访问量大、需要快速响应用户请求的网站。 4. Varnish与Nginx和Apache的区别 Varnish专注于作为...

    Varnish-2_安装与配置.pdf

    在配置实例中,可以设置后端服务器的IP地址和端口,以及访问控制列表,允许特定的IP地址清除Varnish缓存。同时,配置中还需要判断请求的主机名,并将请求转发到相应的后端服务器,这一过程可以使用正则表达式来完成...

    服务器缓存设置 工具

    1. **HTTP 缓存配置**:在服务器端,可以通过设置 HTTP 响应头来控制缓存策略,例如设置 `Cache-Control: max-age=3600` 表示资源在 1 小时内有效。 2. **数据库缓存配置**:根据数据库引擎的特性调整缓存大小、...

    varnish-2.13配置文档[文].pdf

    Varnish 是一款高性能的反向代理缓存服务器,常用于加速网站的静态内容和动态内容的处理。本文档主要关注的是Varnish 2.1.3版本的配置,这是一个较旧但仍然有参考价值的版本。在进行Varnish的安装和配置之前,我们...

    Linux服务器反向代理软件varnish.docx

    可以通过编辑 Varnish 配置文件,指定对应的执行脚本、端口号、缓存文件存放路径等参数。例如,指定 VARNISH_ADMIN_LISTEN_PORT=2000 监听端口,默认为 6082。 2. 配置 Varnish 为服务形式运行 对于 3.0 以上版本...

    varnish-magento

    Varnish是一个高性能的HTTP缓存和反向代理服务器,被广泛用于提高网站的加载速度和性能。在Magento电子商务平台中,Varnish扮演着关键角色,它通过缓存静态内容和频繁请求的动态页面来减少数据库负载,从而显著提升...

Global site tag (gtag.js) - Google Analytics