nginx的keepalive和连接超时问题

什么时间开启keepalive

腾讯云文档

client ---- server

 keepalive_disable  是否开启
 keepalive_requests   keepalive 的连接数了默认是100 过大的数值会造成内存使用量激增不推荐
 keepalive_time    最大的keepalive 保持时间(请求一直存在超过这个时间 也会被强制关闭)
 keepalive_timeout    keepalived 最大允许间隔时间
 send_timeout  给服务端回包,超过这个时间没返回强制关闭连接

server ---- upstream

配置在upstream 中的 keepalive

将 proxy_set_header Connection ""; 添加到 Nginx 配置文件中的 http 上下文中,可以确保在使用 keepalive 连接时,Nginx 代理服务器不会将 Connection 标头转发到后端服务器。 

这是因为在 HTTP/1.1 中,Connection 标头用于指示客户端或服务器是否希望保持持久连接(即 keepalive 连接)。如果客户端将 Connection 标头设置为 keep-alive,则服务器应继续使用相同的连接来发送响应。 

但是,如果将 Connection 标头转发到后端服务器,并且该标头设置为 keep-alive,则后端服务器可能会认为客户端希望保持持久连接,从而导致服务器保持连接打开状态,即使客户端已经关闭连接。这可能会导致后端服务器资源耗尽,从而导致应用程序故障。 

通过将 proxy_set_header Connection ""; 添加到配置中,Nginx 代理服务器将不会转发 Connection 标头,从而防止此类问题发生。这是因为将 Connection 标头设置为空字符串会告诉 Nginx 代理服务器在转发请求时删除此标头。 

需要注意的是,如果您的后端服务器使用了 HTTP/1.0 协议,则无需将 proxy_set_header Connection ""; 添加到配置中,因为 HTTP/1.0 不支持 keepalive 连接。

客户端请求504

部署diffusion-webui 时 当生成图片请求时间过长(3m)。有个接口总是504 造成服务无法访问

        location /run/predict/ {
                proxy_set_header Host $host;
                proxy_pass http://diffusionx;
                 proxy_connect_timeout 15000;
                 proxy_read_timeout 15000;
                 proxy_send_timeout 15000;
        }
posted @   萱乐庆foreverlove  阅读(290)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示