采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师你好:
你在课程中提到了三个超时时间:有点疑惑:keepalive 65s; 是客户端–>nginx的超时时间 这个没问题。
keepalive 32; keeplaive_requests 100; keepalive_timeout 60s; 这三个指标和 proxy_connect_time proxy_connect_send 之间的关系是?不是太能理解,还请老师纠正。
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不支持长连接。所以需要做这些设置,这是一种以防万一的做法。
看能否理解,如果不理解,继续交流哦
我个人认为大家有点迷糊是因为都是keepalive_timeout,由于在不同的上下文,所以针对的配置点不一样。本质上都是控制http连接的,但是在http,server就主要控制的是客户端到nginx,而在upstream控制就是nginx到上游服务。 不知道我这样理解有问题么?
登录后可查看更多问答,登录/注册
快速精通Nginx1.17 ,体系与深度并存,轻松搞定企业级痛点问题
1.0k 13
387 6
1.4k 5
332 5
1.0k 4