请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

nginx的超时时间

老师你好:

你在课程中提到了三个超时时间:有点疑惑:keepalive 65s; 是客户端–>nginx的超时时间 这个没问题。

keepalive 32;
keeplaive_requests 100;
keepalive_timeout 60s;
这三个指标和 
proxy_connect_time
proxy_connect_send  
之间的关系是?不是太能理解,还请老师纠正。
  1. 还有一个就是 proxy_set_header 中你提到了默认的情况下是没有长连接的,需要修改 proxy_set_header keepalive; 这样才开启长连接? 我是否可以理解只有修改为了长连接,上面的 keeplaive keepalive_requests等这些参数才奏效?

正在回答 回答被采纳积分+3

1回答

酷田 2019-12-10 12:34:46

keepalive_timout 65s;    # 客户端到Nginx开启长连接

keepalive 32;         # Nginx到上游应用服务器的连接池里面最大的空闲长连接数量。也就是最多有32个空闲的长连接

keepalive_requests 100;     # Nginx到上游应用服务器的一个长连接最多可承载处理的HTTP请求个数,最多处理100个,到100个后自动关闭该连接,有需要Nginx会再生成新的长连接

keepalive_timeout 60s;      # Nginx到上游应用服务器的一个长连接最大超时时长,到了60s后即使仍然有很多HTTP请求需要处理,但依然关闭,重新打开新的

 proxy_connect_timeout  30s    # Nginx和上游应用服务器建立连接的超时时间,也就是TCP发起握手等候响应超时时间。比如后端服务器非常繁忙,负载很大,Nginx发起请求到后端后,长时间没返回,不能无限等待,因此设定超时时长

proxy_send_timeout  60s   # Nginx给上游应用服务器发送HTTP请求的间隔时间,比如第一次发送完HTTP请求后,过了60秒没有发送新的请求,也必须强制关闭该连接

另外一个问题是你所说的proxy_set_header,这个是因为长连接实在HTTP/1.1版本之后才有的,因此对于极少数浏览器客户端,可能发送的请求头是HTTP/1.0的,因此这些请求头会由Nginx收到后原封不动的转发到上游,那可能就会导致长连接失效,因为HTTP/1.0不支持长连接。所以需要做这些设置,这是一种以防万一的做法。

看能否理解,如果不理解,继续交流哦


0 回复 有任何疑惑可以回复我~
  • 我个人认为大家有点迷糊是因为都是keepalive_timeout,由于在不同的上下文,所以针对的配置点不一样。本质上都是控制http连接的,但是在http,server就主要控制的是客户端到nginx,而在upstream控制就是nginx到上游服务。
    
    不知道我这样理解有问题么?
    回复 有任何疑惑可以回复我~ 2020-03-11 22:05:16
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信