vcl常用配置
不缓存摸一个资源
| |
| 在vcl_recv中 |
| if (req.url ~ "private") { |
| return (pass); |
| } |
| |
动静分离
| |
| 先定一个多个backend |
| backend defualt { |
| .host = "192.168.1.56" |
| .port = "80" |
| } |
| |
| backend websrv { |
| .host = "192.168.1.58" |
| .port = "80" |
| } |
| |
| |
| 在vcl_recv中 |
| if (rep.url ~ "\.php$") { |
| set req.backend_hint = websrv |
| } else { |
| set req.backend_hint = default |
| } |
配置虚拟主机
| |
| 在vcl_recv中配置 |
| if (rep.http.host ~ "www.bux.com") { |
| set req.backend_hint = websrv; |
| } |
| |
| if (rep.http.host ~ "ftp.bux.com") { |
| set req.backend_hint = default; |
| } |
此时缓存是否命中
| |
| 在deliver中配置, deliver就是将Server(Cache 服务器, 就是varnish)的相应报文发送给客户端 |
| |
| |
| if (obj.hits > 0) { |
| set resp.http.Is-Hit = "Hit"; |
| } else { |
| set resp.http.Is-Hit = "Miss"; |
| } |
将cookie绑定的私有缓存转为共有缓存
| |
| 在vcl_backend_response中 |
| if (beresp.http.cache-control !~ "s-maxage") { |
| if (bereq.url ~ "\.jpg$") { |
| beresp.ttl = 3500s; |
| unset beresp.http.Set-Cookie; |
| } |
| } |
健康检测
| |
| backend websrv { |
| .host = "192.168.1.56" |
| .port = "80" |
| .probe = { |
| .url = "http://192.168.1.59/test.html" |
| } |
| } |
配置拒绝请求
| |
| 在vcl_recv中 |
| if (req.http.host ~ "ftp.bux.com") { |
| return (synth(405)); |
| } |
生产中一定要配置purge(清理缓存), 但是只能是机房中的, 同时对于miss的应该返回error 405 "Not in cache", 因为miss就表示这该资源不在缓存中, 无法清理
| |
| acl purgers { |
| "127.0.0.1"/8; |
| "192.168.1.0/24"; |
| } |
| |
| |
| sub vcl_recv { |
| if (req.request == "PURGE") { // 客户端请求清理缓存 |
| // 一定要有这个if, 防止其他主机随意修改 |
| if (!client.ip ~ purgers) { // 如果不在acl中的主机请求清理则拒绝 |
| return (pass); |
| } |
| return(purge); |
| } |
| } |
| |
| |
| curl发送PURGE请求方法, curl -X PURGE url |
搭建集群
| |
| import directors; |
| sub vcl_init { |
| new cluster1 = directors.round_robin(); |
| cluster1.add_backend(websrv1); |
| cluster1.add_backend(websrv2); |
| } |
| |
| |
| sub vcl_recv { |
| set req.backend_hint = cluster1.backend(); |
| } |
| |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· Browser-use 详细介绍&使用文档
· 软件产品开发中常见的10个问题及处理方法