vcl_synth,backend_error响应页面

vcl_synth响应页面,强烈不建议使用。

清除缓存是管理员来使用,不需要太过于华丽的回馈页面,而且设置此synth页面之后很容易报错

生成含有指定内容的http响应报文,并通过return(deliver)发送给客户端。vcl_synth的默认代码如下:

vcl_synth {
  set resp.http.Content-Type = "text/html; charset=utf-8";
  set resp.http.Retry-After = "5";
  synthetic( {"<!DOCTYPE html>
            <html>
               <head>
                  <title>"} + resp.status + " " + resp.reason + {"</title>
               </head>
               <body>
                  <h1>Error "} + resp.status + " " + resp.reason + {"</h1>
                  <p>"} + resp.reason + {"</p>
                  <h3>Guru Meditation:</h3>
                  <p>XID: "} + req.xid + {"</p>
                  <hr>
                  <p>Varnish cache server</p>
               </body>
           </html>            "} );
  return (deliver);
}


解释:
设置http头部,然后调用synthetic()函数合成一个页面,然后通过return到deliver把页面发送到客户端。
我们可以通过在指定的subroutine中return(synth(status_code,"reason_phrase")); 
来调用vcl_synth并设置resp.http.status和resp.http.reason。
需要注意的是这里return的不是keyword,而是一个内置的具有参数的函数。
{“ 和 ”}用来指示多行字符串
vcl_synth定义的页面对象不会被缓存,而vcl_backend_error定义的页面对象会被缓存

vcl_backend_error响应页面

实例2:

sub vcl_backend_error {
  if (beresp.status == 503) {
  set beresp.status = 200;
  synthetic(
  {"
  <html>
  <body>
  <h1>We don't like ugly page!</h1>
  </body>
  </html>
  "}
  );
  return (deliver);
  }
}

作用:varnish作为反代去向后端server拿数据,如果拿不到数据,则默认返回一个503的status code给客户端,
同时给出一个预定义的页面(该页面是写在vcl_backend_error中的)。
给出200返回值和一个更加友好的页面
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值