VCL
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 服務(wù)器, 就是varnish)的相應(yīng)報文發(fā)送給客戶端// 如果命中if (obj.hits > 0) {set resp.http.Is-Hit = "Hit";} else {set resp.http.Is-Hit = "Miss";}將cookie綁定的私有緩存轉(zhuǎn)為共有緩存
在vcl_backend_response中if (beresp.http.cache-control !~ "s-maxage") { // s-maxage表示共有緩存, 此時報文應(yīng)該沒有Set-Cookie字段if (bereq.url ~ "\.jpg$") { // 如果請求的是圖片就將其定義公共緩存到緩存服務(wù)器上 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));}生產(chǎn)中一定要配置purge(清理緩存), 但是只能是機房中的, 同時對于miss的應(yīng)該返回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發(fā)送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(); }轉(zhuǎn)載于:https://www.cnblogs.com/megachen/p/9504696.html
總結(jié)
- 上一篇: PHP网约车H5打车系统源码 分为乘客端
- 下一篇: QD-Mini LED实际体验