文档章节

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

liuleidefeng
 liuleidefeng
发布于 2016/11/12 15:00
字数 621
阅读 425
收藏 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

liuleidefeng

粉丝 1
博文 3
码字总数 1039
作品 0
郑州
程序员
私信 提问
加载中

评论(0)

Tengine新增nginx upstream模块的使用

导读 Tengine是淘宝在Nginx基础之上的二次开发版,Tengine完全兼容Nginx,因此可以参照Nginx的方式来配置Tengine。但Tengine提供了很多比较实用的特性,以及性能的优化。比如针对upstream模块...

问题终结者
2019/01/11
46
0
转 Nginx实战系列之功能篇----后端节点健康检查

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

osc_o18rkfva
2018/02/22
2
0
Nginx实战系列之功能篇----后端节点健康检查

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

aaao
2014/12/23
0
0
Nginx实战-后端应用健康检查

原文链接:http://nolinux.blog.51cto.com/4824967/1594029?utmsource=tuicool&utm_medium=referral 公司前一段对业务线上的nginx做了整理,重点就是对nginx上负载均衡器的后端节点做健康检查...

osc_my2aqmiz
2019/03/29
3
0
nginx下后端节点realserverweb健康检测模块ngx_http_upstream_check_module

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

osc_0w39fdhx
2019/11/07
1
0

没有更多内容

加载失败,请刷新页面

加载更多

如何在Windows上安装pip? - How to install pip on Windows?

问题: pip is a replacement for easy_install . pip替代了easy_install 。 But should I install pip using easy_install on Windows? 但是我应该在Windows上使用easy_install安装pip吗? ......

fyin1314
28分钟前
21
0
gitlit二级目录访问

由于我们只有一个域名暴露,特殊需求,所以需要二级目录访问 配置文件在 defaults.properties 第1985行 contextPath 改掉就好了 # Context path for the GO application. You might want to...

shzwork
58分钟前
24
0
OSChina 周一乱弹 —— 我电脑传染了新冠脚气

@性感码农 :不结婚,被老爸说,回村里别人都瞧不起你,及即使你赚了很多钱,不结婚,永远没有人瞧得起你。挺纳闷的,要别人瞧得起我干嘛 又不回村里, 跟他们生活也没什么交集啊, 用得着他...

小小编辑
今天
18
0
类加载的过程

加载->链接->初始化; 其中链接又分为:验证->准备->解析。

曦鱼violet
今天
21
0
Linux下几个与磁盘空间和文件尺寸相关的命令

硬盘是计算机非常重要的一个部件,不管是代码,还是 UI 、声音、文档,抑或是没人时偷偷看的小视频,都需要保存在硬盘里。 对于很多 Linux 服务器,会进行很多的编译操作。而编译操作在很多情...

Linux就该这么学
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部