阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

varnish 503 no backend connection – varnish健康检查

129次阅读
没有评论

共计 1434 个字符,预计需要花费 4 分钟才能阅读完成。

varnish 开启之后过一段时间就出现 503 错误,直接访问后端 OK,前端 ping 后端 OK,原因是 varnish 判断后端已挂掉,拒绝请求。
 
在配置 backend 时,配置了.prob,配置如下:

.probe= {
    .url = “/”;
    .timeout = 1s;
    .interval = 10m;
    .window = 10;
    .threshold = 8;
    .expected_response = 200;
}
 
后端:nginx,php,yii 框架,url 重写
 
请求被转发到后端的 “/” 上,经过 yii 路由,最后的请求地址为 /site/index,也就是请求 SiteController 中的 actionIndex,在做项目的时候还没有加入 SiteController,所以后端给前端 404, 与.expected_response = 200 不一致,当 varnish 重试几次以后就会判断后端为挂了。
 
所以建议在后端加一个 varnish 专用的检测文件,如
 
.probe= {
    .url = “/varnishTest”;
    .timeout = 1s;
    .interval = 10m;
    .window = 10;
    .threshold = 8;
    .expected_response = 200;
}
 
当 varnish 检测的时候就会去请求 /varnishTest,经过 yii 路由,得到请求地址 /varnishTest/index,此时会返回 200, 问题就解决了。
 
 
为了防止用户直接访问到 varnish 专用的测试地址,可以在 varnish 请求中加入 set req.http.FromVarnish = “yes”;,也就是在 header 中加入一个变量,在 PHP 中检测
 
<?php
 
if (isset($_SERVER[‘FromVarnish’]) && $_SERVER[‘FromVarnish’] === ‘yes’ ){
    echo ‘yes’;
}else {
    header(“HTTP/1.1 404 Not Found”);exit; 
 
}

Varnish 的详细介绍:请点这里
Varnish 的下载地址:请点这里

相关阅读

Varnish Cache 的架构笔记 http://www.linuxidc.com/Linux/2013-10/91016.htm

CentOS 5.8 下 Varnish-2.1.5 的安装配置 http://www.linuxidc.com/Linux/2013-09/89916.htm

RedHat 脚本改用 CentOS 源更新安装 Nginx、PHP 5.3、Varnish http://www.linuxidc.com/Linux/2012-07/65801.htm

利用 Varnish 构建 Cache 服务器笔记 http://www.linuxidc.com/Linux/2012-07/65234.htm

缓存服务 Varnish 安装配置 http://www.linuxidc.com/Linux/2012-07/65228.htm

Varnish 编译安装所需准备 http://www.linuxidc.com/Linux/2012-07/65230.htm

Linux 下 Varnish 缓存的配置优化 http://www.linuxidc.com/Linux/2012-03/56435.htm

Varnish 权威指南(中文)PDF http://www.linuxidc.com/Linux/2013-10/91021.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计1434字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中