位置: IT常识 - 正文

Nginx超时配置(nginx连接超时时间设置多少)

编辑:rootadmin
Nginx超时配置

推荐整理分享Nginx超时配置(nginx连接超时时间设置多少),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:nginx超时重试机制,nginx超时时间设置 10s,Nginx超时配置,nginx504超时,nginx超时时间默认设置,nginx超时时间设置 10s,Nginx超时配置,nginx超时配置ms,内容如对您有帮助,希望把文章链接给更多的朋友!

Nginx主要有四类超时设置:客户端超时设置、DNS解析超时设置、代理超时设置,如果使用ngx_lua,则还有lua相关的超时设置。

1.客户端超时设置

对于客户端超时主要设置有读取请求头超时时间、读取请求体超时时间、发送响应超时时间、长连接超时时间。通过客户端超时设置避免客户端恶意或者网络状况不佳造成连接长期占用,影响服务端的可处理的能力。

client_header_timeout time:设置读取客户端请求头超时时间,默认为60s,如果在此超时时间内客户端没有发送完请求头,则响应408(RequestTime-out)状态码给客户端。

client_body_timeout time:设置读取客户端内容体超时时间,默认为60s,此超时时间指的是两次成功读操作间隔时间,而不是发送整个请求体的超时时间,如果在此超时时间内客户端没有发送任何请求体,则响应408(RequestTime-out)状态码给客户端。

send_timeout time:设置发送响应到客户端的超时时间,默认为60s,此超时时间指的也是两次成功写操作间隔时间,而不是发送整个响应的超时时间。如果在此超时时间内客户端没有接收任何响应,则Nginx关闭此连接。

keepalive_timeout timeout [header_timeout]:设置HTTP长连接超时时间,其中,第一个参数timeout是告诉Nginx长连接超时时间是多少,默认为75s。第二个参数header_timeout是用于设置响应头“Keep-Alive: timeout=time”,即告知客户端长连接超时时间。两个参数可以不一样,“Keep-Alive:timeout=time”响应头可以在Mozilla和Konqueror系列浏览器起作用,而MSIE长连接默认大约为60s,而不会使用“Keep-Alive: timeout=time”。如Httpclient框架会使用“Keep-Alive: timeout=time”响应头的超时(如果不设置默认,则认为是永久)。如果timeout设置为0,则表示禁用长连接。

此参数要配合keepalive_disable 和keepalive_requests一起使用。keepalive_disable 表示禁用哪些浏览器的长连接,默认值为msie6,即禁用一些老版本的MSIE的长连接支持。keepalive_requests参数作用是一个客户端可以通过此长连接的请求次数,默认为100。

首先,浏览器在请求时会通过如下请求头告知服务器是否支持长连接。

http/1.0默认是关闭长连接的,需要添加HTTP请求头“Connection:Keep-Alive”才能启用。而http/1.1默认启用长连接,需要添加HTTP请求头“Connection: close”才关闭。

接着,如果Nginx设置keepalive_timeout 5s,则浏览器会收到如下响应头。

2.DNS解析超时设置

resolver_timeout 30s:设置DNS解析超时时间,默认为30s。其配合resolveraddress… [valid=time]进行DNS域名解析。当在Nginx中使用域名时,就需要考虑设置这两个参数。在社区版Nginx中采用如下配置。

upstream backend {??? server c0.3.cn;?? ?server c1.3.cn;}

如上两个域名会在Nginx解析配置文件的阶段被解析成IP地址并记录到upstream上,当这两个域名对应的IP地址发生变化时,该upstream不会更新。Nginx商业版是支持动态更新的。

3.代理超时设置

Nginx配置如下所示。

upstream backend_server {??? server 192.168.61.1:9080 max_fails=2 fail_timeout=10s weight=1;??? server 192.168.61.1:9090 max_fails=2 fail_timeout=10s weight=1;}server {??? ……??? location /test {???????proxy_connect_timeout 5s;???????proxy_read_timeout 5s;???????proxy_send_timeout 5s;???????proxy_next_upstream error timeout;???????proxy_next_upstream_timeout 0;???????proxy_next_upstream_tries 0;???????proxy_pass http://backend_server;???????add_header upstream_addr $upstream_addr;??? }}

backend_server定义了两个上游服务器192.168.61.1:9080(返回hello)和192.168.61.1:9090(返回hello2)。

如上指令主要有三组配置:网络连接/读/写超时设置、失败重试机制设置、upstream存活超时设置。

Nginx超时配置(nginx连接超时时间设置多少)

网络连接/读/写超时设置。

proxy_connect_timeouttime:与后端/上游服务器建立连接的超时时间,默认为60s,此时间不超过75s。

proxy_read_timeout time:设置从后端/上游服务器读取响应的超时时间,默认为60s,此超时时间指的是两次成功读操作间隔时间,而不是读取整个响应体的超时时间,如果在此超时时间内上游服务器没有发送任何响应,则Nginx关闭此连接。

proxy_send_timeout time:设置往后端/上游服务器发送请求的超时时间,默认为60s,此超时时间指的是两次成功写操作间隔时间,而不是发送整个请求的超时时间,如果在此超时时间内上游服务器没有接收任何响应,则Nginx关闭此连接。

对于内网高并发服务,请根据需要调整这几个参数,比如内网服务TP999为1s,可以将连接超时设置为100500毫秒,而读超时可以为1.53秒左右。

失败重试机制设置。

**proxy_next_upstreamerror|timeout|invalid_header|http_500|http_502|http_503|http_504|http_403|http_404|non_idempotent|off…:**配置什么情况下需要请求下一台上游服务器进行重试。默认为“errortimeout”。error表示与上游服务器建立连接、写请求或者读响应头出错。timeout表示与上游服务器建立连接、写请求或者读响应头超时。invalid_header表示上游服务器返回空的或错误的响应头。http_XXX表示上游服务器返回特定的状态码。non_idempotent表示RFC-2616定义的非幂等HTTP方法(POST、LOCK、PATCH),也可以在失败后重试下一台上游服务器(即默认幂等方法GET、HEAD、PUT、DELETE、OPTIONS、TRACE才可以重试)。off表示禁用重试。

重试不能无限制进行,因此,需要如下两个指令控制重试次数和重试超时时间。

proxy_next_upstream_tries number:设置重试次数,默认0表示不限制,注意此重试次数指的是所有请求次数(包括第一次和之后的重试次数之和)。

proxy_next_upstream_timeout time:设置重试最大超时时间,默认0表示不限制。

即在proxy_next_upstream_timeout时间内允许proxy_next_upstream_tries次重试。如果超过了其中一个设置,则Nginx也会结束重试并返回客户端响应(可能是错误码)。

如下配置表示当error/timeout时重试upstream中的下一台上游服务器,如果重试的总时间超出了6s或者重试了1次,则表示重试失败(因为之前已经请求一次了,所以还能重试一次),Nginx结束重试并返回客户端响应。

? ?????proxy_next_upstream error timeout;???????proxy_next_upstream_timeout 6s;???????proxy_next_upstream_tries 2;4.upstream存活超时设置

max_fails和fail_timeout:配置什么时候Nginx将上游服务器认定为不可用/不存活。当上游服务器在fail_timeout时间内失败了max_fails次,则认为该上游服务器不可用/不存活。并在接下来的fail_timeout时间内从upstream摘掉该节点(即请求不会转发到该上游服务器)。

什么情况下被认定为失败呢?其由proxy_next_upstream定义,不过,不管proxy_next_upstream如何配置,error,timeoutandinvalid_header都将被认为是失败。

如server 192.168.61.1:9090max_fails=2 fail_timeout=10s;表示在10s内如果失败了2次,则在接下来的10s内认定该节点不可用/不存活。这种存活检测机制是只有当访问该上游服务器时,采取惰性检查,可以使用ngx_http_upstream_check_module配置主动检查。

max_fails设置为0表示不检查服务器是否可用(即认为一直可用),如果upstream中仅剩一台上游服务器时,则该服务器是不会被摘除的,将从不被认为不可用。

5.ngx_lua超时设置

当我们使用ngx_lua时,也请考虑设置如下网络连接/读/写超时。

lua_socket_connect_timeout? 100ms;lua_socket_send_timeout??? 200ms;lua_socket_read_timeout??? 500ms;

在使用lua时,我们会按照如下策略进行重试。

if (status == 502 or status == 503 or status ==504) and request_time < 200 then??? resp =capture(proxy_uri)??? status =resp.status??? body =resp.body???request_time = request_time + tonumber(var.request_time) * 1000end

即如果状态码是500/502/503/504时,并且该次请求耗时在200毫秒以内,则我们进行一次重试。

参考

超时与重试机制(1)—《亿级流量》

先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

本文链接地址:https://www.jiuchutong.com/zhishi/295311.html 转载请保留说明!

上一篇:后端接口返回近万条数据,前端渲染缓慢,content Download 时间长的优化方案(后端怎么返回数据给前端)

下一篇:微信小程序的【运行机制】解读(微信小程序的视频怎么下载)

  • 互联网时代中小企业怎样做好网络营销(处在互联网时代,中小)

    互联网时代中小企业怎样做好网络营销(处在互联网时代,中小)

  • 截屏电脑按键(截屏电脑按键win11)

    截屏电脑按键(截屏电脑按键win11)

  • 墨盒怎么加墨粉应该加多少(墨盒怎么加墨)(兄弟激光打印机墨盒怎么加墨粉)

    墨盒怎么加墨粉应该加多少(墨盒怎么加墨)(兄弟激光打印机墨盒怎么加墨粉)

  • vivo手机微信来信息没有声音如何恢复(vivo手机微信来电不显示接听界面)

    vivo手机微信来信息没有声音如何恢复(vivo手机微信来电不显示接听界面)

  • 京东精选和京东超市有什么区别(京东精选和京东自营有什么区别?)

    京东精选和京东超市有什么区别(京东精选和京东自营有什么区别?)

  • vivox27截屏方法(vivox27手机如何截屏幕)

    vivox27截屏方法(vivox27手机如何截屏幕)

  • qq会员学生认证有风险吗(qq会员学生认证怎么弄)

    qq会员学生认证有风险吗(qq会员学生认证怎么弄)

  • 微信群待办怎么弄(微信群待办怎么看完成情况)

    微信群待办怎么弄(微信群待办怎么看完成情况)

  • 淘宝怎么删除好评(淘宝怎么删除好友代付记录)

    淘宝怎么删除好评(淘宝怎么删除好友代付记录)

  • usb接口指的是(usb接口指的是什么)

    usb接口指的是(usb接口指的是什么)

  • 毒7天无理由退货扣费吗(毒7天无理由退货怎么退)

    毒7天无理由退货扣费吗(毒7天无理由退货怎么退)

  • 显卡寿命到了的症状(显卡寿命几年)

    显卡寿命到了的症状(显卡寿命几年)

  • 华为截屏在哪里设置方法?怎么才能截屏?有没有详细的操作步骤(华为截屏在哪里截)

    华为截屏在哪里设置方法?怎么才能截屏?有没有详细的操作步骤(华为截屏在哪里截)

  • 错误码7610001什么意思(错误码7610034什么意思)

    错误码7610001什么意思(错误码7610034什么意思)

  • 拼多多无门槛优惠券是什么意思(拼多多无门槛优惠券退款后还有吗)

    拼多多无门槛优惠券是什么意思(拼多多无门槛优惠券退款后还有吗)

  • 长边翻页和短边翻页的区别(长边翻页和短边翻页的图片)

    长边翻页和短边翻页的区别(长边翻页和短边翻页的图片)

  • 苹果美版无锁是什么意思(苹果美版无锁是怎么来的)

    苹果美版无锁是什么意思(苹果美版无锁是怎么来的)

  • 小米和华为充电器通用吗(小米和华为充电宝)

    小米和华为充电器通用吗(小米和华为充电宝)

  • 苹果手机要开扬声器才有声音(苹果手机开扬声器才有声音怎么回事)

    苹果手机要开扬声器才有声音(苹果手机开扬声器才有声音怎么回事)

  • 苹果x要更新嘛(苹果x要更新嘛手机)

    苹果x要更新嘛(苹果x要更新嘛手机)

  • 全民k歌调音技巧(全民k歌调调)

    全民k歌调音技巧(全民k歌调调)

  • 嘀嗒拼车邀请码在哪(嘀嗒拼车邀请接单)

    嘀嗒拼车邀请码在哪(嘀嗒拼车邀请接单)

  • 嘀嗒拼车怎么删除记录(嘀嗒拼车怎么删订单记录)

    嘀嗒拼车怎么删除记录(嘀嗒拼车怎么删订单记录)

  • 微信金山文档怎么编辑(微信金山文档怎么看历史修改)

    微信金山文档怎么编辑(微信金山文档怎么看历史修改)

  • 拼多多极速退款的条件(拼多多极速退款是什么意思)

    拼多多极速退款的条件(拼多多极速退款是什么意思)

  • 迫击炮主板是什么意思(迫击炮主板是什么平台)

    迫击炮主板是什么意思(迫击炮主板是什么平台)

  • 手机编辑视频去除文字(手机编辑视频去掉原声)

    手机编辑视频去除文字(手机编辑视频去掉原声)

  • 今日头条如何转发(今日头条如何转发视频赚钱)

    今日头条如何转发(今日头条如何转发视频赚钱)

  • 怎么让 echarts 图表动起来?定时器解决它 —— 大屏展示案例(动态仪表盘、动态柱状图)(echarts怎么样)

    怎么让 echarts 图表动起来?定时器解决它 —— 大屏展示案例(动态仪表盘、动态柱状图)(echarts怎么样)

  • input与print语法(input和printf的区别)

    input与print语法(input和printf的区别)

  • 认证一般纳税人之前取得的专票
  • 纳税人规模证明是什么
  • 小规模纳税人出租
  • 一般纳税人金税盘全额抵扣分录
  • 文化事业费是什么意思
  • 个体户个人经营所得税税率表2023
  • 赠送货物怎么入账
  • 有限合伙企业利润先税后分
  • 从业人数和资产总额是灰色
  • 空白增值税专用发票丢失罚款
  • 摊销费用怎么计提
  • 二手车融资租赁公司
  • 4s店改装车后卖车合法吗
  • 跨年冲销营业外支出
  • 火灾造成的存货损失进项税额如何处理
  • 利润表中企业所得税
  • 确认投资收益是按照出资比例还是股权比例
  • 零税率发票可以冲成本吗
  • 查账征收企业所得税年度申报
  • 增值税发票地址开错了有影响吗
  • 主营业务收入增速怎么算
  • 天然气税费
  • 团建费用是什么意思
  • 办理环评费用
  • 月末计提短期借贷利息
  • 钱已确定收不回怎么办
  • 企业所得税汇算清缴扣除比例
  • 购物卡怎么给
  • 应交消费税的会计分录
  • 企业投资者撤回投资款
  • 总公司给分公司调货
  • 固定资产没有发票可以计提折旧吗
  • 企业出租房屋怎么做账
  • 抵扣认证发票统计确认后可以退回吗?
  • 什么叫点云数据
  • 原材料用于在建工程增值税如何处理
  • 银行利息增值税发票
  • 小规模纳税人0申报汇算清缴
  • Linux下实现MySQL数据备份和恢复的命令使用全攻略
  • mysql索引命令
  • 税务师工作年限证明材料
  • 业务招待费进项税
  • 合理损耗应计入成本吗
  • 税前扣除凭证按照用途分为哪些
  • 长期借款转其他应付款
  • 收到利息收入如何做分录
  • 现金折扣与商业折扣的计算
  • 增值税附加税需要写进合同吗
  • 跨月的发票还能入账吗
  • 支付广告费属于进项还是销项
  • 金蝶迷你版为什么打不开
  • 税务局三代手续费是什么
  • 企业清算的会计处理
  • 数据库保护数据方式
  • sql2008数据库置疑
  • sql中去掉结果为零的
  • mac有线不能上网
  • mac的command键相当于pc的什么键
  • chia 如何双挖
  • linux crontab -e
  • ubuntudde 中文
  • wind微博
  • linux临时修改编码
  • win10 ie浏览器双击没有反应
  • win8.1升级到win10
  • 缺少系统操作怎么办
  • bootstrap框架怎么用
  • node 获取当前时间
  • linux rsync同步命令(值得收藏)
  • css中的div怎么运用
  • js下拉列表框
  • 菜鸟教程 安卓版
  • linux启动过程流程图
  • label jsp
  • JavaScript快速排序
  • js常用继承
  • 残疾人就业保障金减免政策2022
  • 计税核定价是什么
  • 个人所得税工资扣税标准
  • 融资租赁公司购进车辆账务处理
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设