千家信息网

Tengine如何新增nginx upstream模块

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍了Tengine如何新增nginx upstream模块,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。后端长连接超时功
千家信息网最后更新 2026年10月31日Tengine如何新增nginx upstream模块

这篇文章主要介绍了Tengine如何新增nginx upstream模块,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

后端长连接超时功能

ngx_http_upstream_keepalive_module模块增加nginx后端长连接的超时支持:

upstream backend {    server 127.0.0.1:8080;    keepalive 32;    keepalive_timeout 30s;      #设置后端连接的最大idle时间为30s}

1)keepalive_timeout

Syntax: keepalive_timeout timeDefault: -Context: upstream

该指令设置后端长连接的最大空闲超时时间,参数的时间单位可以是s(秒),ms(毫秒),m(分钟)。默认时间单位是秒。

健康检查模块功能

ngx_http_upstream_check_module,该模块可以为Tengine提供主动式后端服务器健康检查的功能。该模块在Tengine-1.4.0版本以前没有默认开启,它可以在配置编译选项的时候开启:./configure -with-http_upstream_check_module。

1)check

Syntax: check interval=milliseconds [fall=count] [rise=count] [timeout=milliseconds] [default_down=true|false] [type=tcp|http|ssl_hello|mysql|ajp] [port=check_port]Default: interval=30000 fall=5 rise=2 timeout=1000 default_down=true type=tcpContext: upstream该指令可以打开后端服务器的健康检查功能,指令后面的参数意义是:interval:向后端发送的健康检查包的间隔。fall(fall_count):如果连续失败次数达到fall_count,服务器就被认为是down。rise(rise_count):如果连续成功次数达到rise_count,服务器就被认为是up。timeout:后端健康请求的超时时间。default_down:设定初始时服务器的状态,如果是true,就说明默认是down的,如果是false,就是up的。默认值是true,也就是一开始服务器认为是不可用,要等健康检查包达到一定成功次数以后才会被认为是健康的。type:健康检查包的类型,现在支持以下多种类型tcp:简单的tcp连接,如果连接成功,就说明后端正常。ssl_hello:发送一个初始的SSL hello包并接受服务器的SSL hello包。http:发送HTTP请求,通过后端的回复包的状态来判断后端是否存活。mysql:向mysql服务器连接,通过接收服务器的greeting包来判断后端是否存活。ajp:向后端发送AJP协议的Cping包,通过接收Cpong包来判断后端是否存活。port:指定后端服务器的检查端口。你可以指定不同于真实服务的后端服务器的端口,比如后端提供的是443端口的应用,你可以去检查80端口的状态来判断后端健康状况。默认是0,表示跟后端server提供真实服务的端口一样。该选项出现于Tengine-1.4.0。

2)check_keepalive_requests

Syntax: check_keepalive_requests request_numDefault: 1Context: upstream

该指令可以配置一个连接发送的请求数,其默认值为1,表示Tengine完成1次请求后即关闭连接。

3)check_http_send

Syntax: check_http_send http_packetDefault: "GET / HTTP/1.0"Context: upstream

该指令可以配置http健康检查包发送的请求内容。为了减少传输数据量,推荐采用"HEAD"方法。当采用长连接进行健康检查时,需在该指令中添加keep-alive请求头,如:"HEAD / HTTP/1.1\r\nConnection: keep-alive\r\n\r\n"。 同时,在采用"GET"方法的情况下,请求uri的size不宜过大,确保可以在1个interval内传输完成,否则会被健康检查模块视为后端服务器或网络异常。

4)check_http_expect_alive

Syntax: check_http_expect_alive [ http_2xx | http_3xx | http_4xx | http_5xx ]Default: http_2xx | http_3xxContext: upstream

该指令指定HTTP回复的成功状态,默认认为2XX和3XX的状态是健康的。

5)check_shm_size

Syntax: check_shm_size sizeDefault: 1MContext: http

所有的后端服务器健康检查状态都存于共享内存中,该指令可以设置共享内存的大小。默认是1M,如果你有1千台以上的服务器并在配置的时候出现了错误,就可能需要扩大该内存的大小。

6)check_status

Syntax: check_status [html|csv|json]Default: check_status htmlContext: location

显示服务器的健康状态页面。该指令需要在http块中配置。在Tengine-1.4.0以后,你可以配置显示页面的格式。支持的格式有: html、csv、 json。默认类型是html。你也可以通过请求的参数来指定格式,假设'/status'是你状态页面的URL, format参数改变页面的格式,比如:

/status?format=html/status?format=csv/status?format=json

同时你也可以通过status参数来获取相同服务器状态的列表,比如:

/status?format=html&status=down/status?format=csv&status=up

下面是一个HTML状态页面的例子(server number是后端服务器的数量,generation是Nginx reload的次数。Index是服务器的索引,Upstream是在配置中upstream的名称,Name是服务器IP,Status是服务器的状态,Rise是服务器连续检查成功的次数,Fall是连续检查失败的次数,Check type是检查的方式,Check port是后端专门为健康检查设置的端口):

下面是csv格式页面的例子:

0,backend,106.187.48.116:80,up,46,0,http,80

下面是json格式页面的例子:

{"servers": {  "total": 1,  "generation": 3,  "server": [   {"index": 0, "upstream": "backend", "name": "106.187.48.116:80", "status": "up", "rise": 58, "fall": 0, "type": "http", "port": 80}  ] }}

增强版upstream使用示例:

http {    upstream cluster1 {        # simple round-robin        server 192.168.0.1:80;        server 192.168.0.2:80;         check interval=3000 rise=2 fall=5 timeout=1000 type=http;        check_http_send "HEAD / HTTP/1.0";        check_http_expect_alive http_2xx http_3xx;    }     upstream cluster2 {        # simple round-robin        server 192.168.0.3:80;        server 192.168.0.4:80;         check interval=3000 rise=2 fall=5 timeout=1000 type=http;        check_keepalive_requests 100;        check_http_send "HEAD / HTTP/1.1 Connection: keep-alive";        check_http_expect_alive http_2xx http_3xx;    }     server {        listen 80;         location /1 {            proxy_pass http://cluster1;        }         location /2 {            proxy_pass http://cluster2;        }         location /status {            check_status;            access_log   off;            allow SOME.IP.ADD.RESS;            deny all;        }    }}

Upstream域名解析模块功能

ngx_http_upstream_dynamic_module,此模块提供了在运行时动态解析upstream中server域名的功能,用的不多。dynamic_resolveSyntax: dynamic_resolve [fallback=stale|next|shutdown] [fail_timeout=time]Default: -Context: upstream.

指定在某个upstream中启用动态域名解析功能,fallback参数指定了当域名无法解析时采取的动作:

stale, 使用tengine启动的时候获取的旧地址next, 选择upstream中的下一个servershutdown, 结束当前请求fail_timeout参数指定了将DNS服务当做无法使用的时间,也就是当某次DNS请求失败后,假定后续多长的时间内DNS服务依然不可用,以减少对无效DNS的查询。
upstream backend {    dynamic_resolve fallback=stale fail_timeout=30s;    server a.com;    server b.com;}

limit upstream tries功能

limit upstream retries,限制每个请求对后端服务器访问的最大尝试次数,支持proxy、memcached、fastcgi、scgi和uwsgi模块。 可以使用下面的指令开启访问次数进行限制。

# 限制fastcgi代理的后端尝试次数fastcgi_upstream_tries num # 限制proxy代理的后端尝试次数proxy_upstream_tries num # 限制memcached代理的后端尝试次数memcached_upstream_tries num # 限制scgi代理的后端尝试次数scgi_upstream_tries num # 限制uwsgi代理的后端尝试次数uwsgi_upstream_tries num

感谢你能够认真阅读完这篇文章,希望小编分享的"Tengine如何新增nginx upstream模块"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

服务 服务器 健康 检查 次数 状态 模块 指令 功能 参数 时间 页面 配置 限制 格式 端口 尝试 成功 代理 支持 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网络科技 科技制造互联网公司 云电互联网科技 广州互联网络科技有限公司 互联网科技小额贷款 互联网科技公司名称 广西拼得多互联网科技有限公司 互联网科技公司需要的职位 剑昆互联网络科技有限公司临桂 互联网科技公司实习生 互联网科技革命什么开始 晓花互联网科技有限公司网址 成都互联网科技公司工作好不好 互联网公司黑科技创始人 黑科技 体验场景 互联网大会 启辰互联网科技 互联网风格科技公司名称 山东大美朱楼互联网科技有限公司 上海万顺科技互联网有限公司招聘 高科技和互联网的现代国家 喔噻互联网科技有限公司 腾讯阿里互联网科技 互联网科技和法律行业 合肥互联网科技公司公章图片 山东子淼互联网科技有限公司 伍佰万互联网科技怎么赚钱 江苏苏星互联网科技有限公司 梅州GM互联网络科技有限公司 互联网科技平台产品运营 互联网科技创业计划的风险分析
0