当前位置:首页 > CN2资讯 > 正文内容

玩转 Varnish 缓存代理

9小时前CN2资讯

Varnish 是互联网架构中重要的缓存代理组件。Varnish 一般跑在流量入口处,作为最前端一道防御,非常重要。虽然 Varnish 并不像 Nginx 那么流行。Varnish 就像 Nginx 一样稳定高效,如果使用得当,能极大提升整体服务性能、并且降低资源消耗。


常见互联网架构中的多级缓存


1、将内容推送到用户身边的 CDN 缓存

2、类似 Varnish 的缓存代理

3、应用层缓存 Redis,Memcached

4、数据库缓存


为什么缓存代理很重要


1、一些事实:内容的变动比不变少得多;用户内容最终一致的容忍性。基于这 2 个事实,可以节约大量重复计算和资源。

2、延迟一般情况下对用户体验、商业业务的影响很大。所有互联网公司都在努力降低延迟,提升用户体验。

3、CDN 有些情况下会大量回源,比如清空 CDN 缓存的时候,应用架构本身需要能抗 100% 流量的能力。


Varnish 的几个功能


1. HTTP Header 的修改


请求头的修改


unset req.http.cookie;

set req.http.X-EOOD = "EOOD";


返回头的修改


unset beresp.http.Set-Cookie;

set beresp.http.Cache-Control = "public, max-age=31536000";


2. 内容在 Varnish 状态的暴露


缓存的命中与否


if (obj.hits > 0) {

set resp.http.X-Cache = "HIT";

} else {

set resp.http.X-Cache = "MISS";

}


3. 负载均衡


Varnish 也支持后端服务器的轮询之类的简单负载均衡,但是慎用。


4. 后端保护和容错


这个功能可能有些人没有注意到,但是确实非常有用的功能,在后端挂掉的时候,只读页面仍然会成功返回给客户。


set req.grace = 48h;


5. 访问控制


可以根据规则路由或者屏蔽某些访问,比如:


req.http.User-Agent

req.http.X-Forwarded-For

req.http.referer

...


简单密码保护:Basic Auth


if (! req.http.Authorization ~ "Basic XXXXXXX") {

error 401 "Restricted";

}


6. 多个后端合并


定义多个后端


backend ads {

.host = "";

.connect_timeout = 1s;

.first_byte_timeout = 30s;

.between_bytes_timeout = 5s;

}


backend blog {

.host = "blog.eood.cn";

.connect_timeout = 1s;

.first_byte_timeout = 30s;

.between_bytes_timeout = 5s;

}


根据域名、URL或者其他规则路由到不同的后端,这些规则可以是用户 IP, 甚至是用户 Cookie。


sub vcl_recv {


if (req.http.host ~ "ads" || req.url ~ "^/ads/") {

set req.backend = ads;

...

} else if(eq.http.host ~ "blog") {

set req.backend = blog;

}

}


7. 根据规则进行缓存


set beresp.ttl = 120s;


Varnish 运维常用命令


请求 URL 热点排名, 根据热点优化缓存策略


varnishtop -i rxurl


实时请求日志


varnishlog


可以通过 grep 进行过滤查看你需要的信息


varnishlog -c | grep 'google'


Varnish 的注意事项


防止连接粘滞,假如你有多个不同的后端,不添加这个会导致混乱,估计很多人踩过这个坑:


sub vcl_pipe {

set bereq.http.connection = "close";

}


URL 规划


一般缓存代理或者 CDN 都是可以通过配置 URL 规则实现不同 URL 模式使用不同的缓存策略,所以 URL 规划非常重要。

将动态请求和静态请求进行区分;将不同缓存级别的 URL 进行区分。这也有利于根据 URL 进行缓存清理。


最后


Varnish 是网站应用或者移动应用必不可少的缓存模块。如果你还没开始使用,就立刻把他加入到现有架构中吧。


原文:

https://blog.eood.cn/varnish-cache

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/32195.html

    分享给朋友:

    “玩转 Varnish 缓存代理” 的相关文章

    Siteground怎么样?深入分析其安全性、正常运行时间与客户支持

    Siteground的安全性实践 谈到Siteground的安全性实践,我总是很欣赏他们的努力。作为一个成立于2004年的托管服务商,Siteground在安全方面采取了多重措施。我注意到,首先,他们为所有用户提供免费的Let’s Encrypt SSL证书。SSL证书能够加密网站与访客之间的数据,...

    bwh1:搬瓦工的高效VPS管理与使用技巧

    bwh1 概述 提到 bwh1,很多人第一时间就想到搬瓦工(BandwagonHost)。bwh1 正是搬瓦工的官网域名之一,深受用户喜爱。它不仅是一个简单的链接,更是通向高效 VPS 管理的窗口。通过这个网站,用户能够方便地访问各种服务,比如 VPS 购买、管理和支持。对于追求网络稳定性和速度的用...

    解决Linode被封的问题与账户恢复策略分享

    Linode作为一款备受欢迎的美国VPS,其灵活性和服务质量吸引了众多用户。然而,基于我的经验,国内用户在使用Linode时常常面临被封的困扰。这不仅影响了使用体验,也对业务的持续性造成了影响。我想深入分析一下Linode被封的原因。 首先,Linode的全球网络状况在近年来遭遇了严峻挑战。随着越来...

    BGPTO独立服务器:高性能云主机解决方案

    BGPTO是一家由国人创办的云服务器主机商,致力于为用户提供高性能的独立服务器。随着全球互联网的发展,对云计算和服务器主机的需求不断增加,BGPTO顺应这一趋势,选择在日本、新加坡、香港和美国等地设立机房。公司希望通过独立服务器的销售,满足用户在不同地区的需求,尤其是针对国内用户和企业的海外业务拓展...

    高防服务器:企业网络安全的坚固堡垒

    在这个数字化日益加深的时代,我们的生活、工作和娱乐都越来越依赖于互联网。随之而来的,则是网络安全问题的加剧。其中,高防服务器作为提升网络安全性的重要工具,逐渐引起大家的关注。 高防服务器,顾名思义,就是专门设计用来抵御各种网络攻击,特别是DDoS攻击的服务器。简而言之,它就像是一个坚固的堡垒,能够有...

    Just Host VPS:全面分析与优缺点评估

    Just Host VPS 概述 在今天的数字化时代,随着网络技术的不断发展,越来越多的人开始关注虚拟专用服务器(VPS)。那么,什么是 VPS 呢?简单来说,VPS 是将一台物理服务器划分成多个虚拟服务器的技术。这意味着用户可以获得独立的操作环境和资源,而不必与其他用户共享,这样的隔离性提高了性能...