文档章节

tengine后端服务器健康检查HEAD请求400错误

liuleidefeng
 liuleidefeng
发布于 2016/11/12 15:00
字数 621
阅读 97
收藏 0
点赞 0
评论 0

tengine中后端服务器健康检查模块ngx_http_upstream_check_module可以主动向后端服务器定时发送请求以检测后端服务器的存活状态,这个功能很实用。原来一直按照官方文档配置的:

#注意,后端服务器长连接超时时间要大于interval,要不然没啥意义
check interval=10000 rise=2 fall=5 timeout=2000 default_down=false type=http;
check_http_send "GET / HTTP/1.0\r\n\r\n"
check_http_expect_alive http_2xx http_3xx;

一切正常,但是发现会积累多个处于TIME_WAIT的连接,如此一来,感觉甚是不爽。心想,如果可以使用HTTP1.1 长连接就好了(后端服务器支持长连接,并且超时时间大于interval的设置),查看官方文档说可以启用长连接,原文是这样说的:

当采用长连接进行健康检查时,需在该指令中添加keep-alive请求头,
如:"HEAD / HTTP/1.1\r\nConnection: keep-alive\r\n\r\n"。

于是直接复制了上去,然后重新加载配置文件,以为万事大吉。结果不一会,网站无法访问了,赶紧查看upstream check status,发现配置的upstream都被标示为down的状态。赶紧去看了一下后端服务的日志,看到一堆Http 400 的日志。心中很是疑惑,官方的配置也是这样,没啥错啊,怎么就不能用了呢。再三检查自己没有写错东西后,去google搜索了一番,终于找到了一个类似的问题。文章的大概意思是,如果后端服务器对于Http1.1的协议检测比较严格,则HEAD请求时必须加上Host字段。

接着,按照文章的意思,尝试性的把相关配置更改如下:

check interval=10000 rise=2 fall=5 timeout=2000 default_down=false type=http;
check_keepalive_requests 100;
check_http_send "HEAD /css/main.css HTTP/1.1\r\nConnection: keep-alive\r\nHost: check.com\r\n\r\n";
check_http_expect_alive http_2xx http_3xx;

然后,重启nginx服务。查看后端日志,已经正常,并且这些请求长连接已经启用,网站也可以正常访问。

问题到此解决。ps:Host字段的值可以根据自己的需求写,这里我随便写了个 check.com

© 著作权归作者所有

共有 人打赏支持
liuleidefeng
粉丝 1
博文 3
码字总数 1039
作品 0
郑州
程序员
Nginx实战之--后端节点健康检查

公司前一段对业务线上的nginx做了整理,重点就是对nginx上负载均衡器的后端节点做健康检查。目前,nginx对后端节点健康检查的方式主要有3种,这里列出: 1、ngxhttpproxymodule 模块和ngxht...

linux_python ⋅ 2015/07/04 ⋅ 0

Nginx实战系列之功能篇----后端节点健康检查

公司前一段对业务线上的nginx做了整理,重点就是对nginx上负载均衡器的后端节点做健康检查。目前,nginx对后端节点健康检查的方式主要有3种,这里列出: 1、ngxhttpproxymodule 模块和ngxht...

aaao ⋅ 2014/12/23 ⋅ 0

Nginx 负载均衡 后端 监控检测 nginx_upstream_check_module 模块的使用

在使用nginx 的负载均衡 中,我们通常会使用到 Nginx 自带的 ngxhttpproxy_module 健康检测模块。 ngxhttpproxy_module 自带的 健康检测模块参数如下: weight : 轮询权值也是可以用在ip_ha...

jicki ⋅ 2016/02/15 ⋅ 0

为什么7层负载均衡压测性能低

为什么7层负载均衡压测性能低 7层性能会比4层性能低 负载均衡集群采用LVS和Tengine实现,其中4层监听经过LVS后直接到达后端服务器,而7层监听经过LVS后,还需要再经过Tengine,最后达到后端服...

cmlq ⋅ 2016/02/16 ⋅ 0

Nginx负载均衡中后端节点服务器健康检查的操作梳理

正常情况下,nginx做反向代理,如果后端节点服务器宕掉的话,nginx默认是不能把这台realserver踢出upstream负载集群的,所以还会有请求转发到后端的这台realserver上面,这样势必造成网站访问...

吞吞吐吐的 ⋅ 2017/09/08 ⋅ 0

Tengine-1.2.5 版本发布

我们很高兴的告诉大家,Tengine-1.2.5 版本正式发布了。您可以在这里下载:http://tengine.taobao.org/download/tengine-1.2.4.tar.gz 或者可以在github上检出代码: https://github.com/tao...

shudu ⋅ 2012/05/10 ⋅ 5

Tengine/Nginx 安装

一.Tengine是什么 简介 Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天...

vincent927 ⋅ 2016/01/19 ⋅ 0

nginx模块nginx_upstream_check_module来检查后端服务器的健康情况

大家都知道,前端nginx做反代,如果后端服务器宕掉的话,nginx是不能把这台realserver剔出upstream的,所以还会有请求转发到后端的这台realserver上面去,虽然nginx可以在localtion中启用pro...

技术小胖子 ⋅ 2017/11/09 ⋅ 0

Tengine – Nginx衍生版

Tengine – Nginx衍生版 2013-09-05 Posted by yeho Tengine是淘宝在Nginx基础上开发的一个衍生版。官方的简介说针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已...

thinkyoung ⋅ 2015/04/12 ⋅ 0

开源中国使用的淘宝开发的Web服务器 Tengine

ChromeSnifferPlus 新增加了对 Tengine 的探测,居然惊奇的发现,原来 OSC 就是使用的 Tengine 啊。 简介 Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求...

justjavac ⋅ 2013/11/18 ⋅ 7

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Linux kernel脉络和主干总结

写在前面 前人常说,对Linux操作系统/内核的理解,是计算机行业从业者的内功,决定了你在技术领域想走多远。但内核的庞大以及学习曲线之陡峭,总让我在学习途中觉得犹如“管中窥豹”。 随着工...

Markz0928 ⋅ 29分钟前 ⋅ 0

在gcc中使用intel风格的内联汇编

很简单,内联汇编使用asm(“.intel_syntax noprefix/n”)声明一下,以后的内联汇编就可以用intel风格了,构建可执行文件时给gcc加上-masm=intel参数。 先写一个小程序测试一下: [cpp] view...

simpower ⋅ 39分钟前 ⋅ 0

NIO 之 ByteBuffer实现原理

相关文章 BIO、NIO、AIO 内部原理分析 NIO 之 Selector实现原理 NIO 之 Channel实现原理 前言 Java NIO 主要由下面3部分组成: Buffer Channel Selector 在传统IO中,流是基于字节的方式进行...

轨迹_ ⋅ 48分钟前 ⋅ 0

Jenkins docker权限问题

环境Ubuntu Server 工具 jenkins-war:2.89.2 报错信息 Cannot connect to the Docker daemon. Is the docker daemon running on this host?Build step 'Execute shell' marked build as fai......

Pulsar-V ⋅ 49分钟前 ⋅ 0

180621-一个简单的时间窗口设计与实现

如何设计一个计数的时间窗口 时间窗口,通常对于一些实时信息展示中用得比较多,比如维持一个五分钟的交易明细时间窗口,就需要记录当前时间,到五分钟之前的所有交易明细,而五分钟之前的数...

小灰灰Blog ⋅ 今天 ⋅ 0

Android之Dalvik、ART、JIT、AOT

Android之Dalvik、ART、JIT、AOT 本文内容:Dalvik、ART、JIT、AOT之间关系 本文定位:知识记录 学习过程记录,加深理解,提升文字组合表达能力。也希望能给学习的同学一些灵感 本文整理于[...

lichuangnk ⋅ 今天 ⋅ 0

Thrift RPC实战(五) thrift连接池

Thrift本身没有提供连接池,我们可以用Apache Commons Pool2来实现一个 一、定义对象工厂 BasePooledObjectFactory<T> extends BaseObject implements PooledObjectFactory<T> public class......

lemonLove ⋅ 今天 ⋅ 0

git 命令简写

简写 命令 g git gst git status gd git diff gdc git diff --cached gdv git diff -w "$@" | view - gl git pull gup git pull --rebase gp git push gc git commit -v gc! git commit -v ......

charley158 ⋅ 今天 ⋅ 0

Java中的锁使用与实现

1.Lock接口 锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源。 在Lock出现之前,java程序是靠synchronized关键字实现锁功能的,而Java SE5之后,...

ZH-JSON ⋅ 今天 ⋅ 0

Intellij IDEA神器常用技巧四-类和方法注释模板设置

IDEA自带的注释模板不是太好用,我本人到网上搜集了很多资料系统的整理了一下制作了一份比较完整的模板来分享给大家,我不是专业玩博客的,写这篇文章只是为了让大家省事。 这里设置的注释模...

Mkeeper ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部