Nginx之keepalive配置解读

这篇具有很好参考价值的文章主要介绍了Nginx之keepalive配置解读。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

keepalive基础介绍

Nginx中的keepalive配置项

应用场景

什么时候使用?

什么时候不用?


keepalive基础介绍

keepalive是HTTP/1.1协议中的一个特性,它允许客户端和服务器之间的TCP连接在一个HTTP请求/响应周期结束后保持打开状态,以便在后续的请求中重复使用。这样可以减少TCP连接的建立和关闭次数,从而提高性能。

(注意:keepalive是tcp层长连接探活机制;keep-alive是应用层http协议使用,在其头部Connection字段中的一个值,只是代表客户端与服务之间需要保持长连接,可以理解为通过此字段来告诉nginx此连接需要维持长连接,处理完别直接关闭连接。) 

nginx默认keepalive,nginx解读,nginx,运维,数据库,缓存,spring boot,java,服务器

  • 连接维护:keepalive会维护长连接,并在连接超时时间内重新连接,以确保服务器端始终处于运行状态。
  • 提高效率:通过维护长连接,可以减少建立和关闭连接所需的时间,从而提高服务器的效率。
  • 节省带宽:由于keepalive可以维护长连接,因此减少了建立和关闭连接所需的网络流量,从而节省了带宽。
  • 稳定性:通过心跳包维护连接,可以确保服务器端始终处于运行状态,从而提高了网站的稳定性和可用性。

为什么使用HTTPs长连接技术?

  • 对响应时间要求较高;
  • 服务走的是公网,客户端与服务端的TCP建立的三次握手和断开的四次挥手都需要40ms左右(真实数据包计算出来的),共需要80ms左右;
  • 每个接入方使用的IP就若干个,需要建立的请求连接有限。
  • 使用长连接技术,可以大幅减少TCP频繁握手的次数,极大提高响应时间;同时,即使使用长连接技术,也不需要消耗很多的系统资源用来缓存sockets会话信息。 
http {
upstream backend {
  server 192.168.0.1:8080 weight=1 max_fails=2 fail_timeout=30s;
  server 192.168.0.2:8080 weight=1 max_fails=2 fail_timeout=30s;
  keepalive 300;      
}  
 
server {
  listen 8080 default_server;
  server_name "";
 
location / {
  proxy_pass http://backend;
  proxy_http_version 1.1;                   #设置http版本为1.1
  proxy_set_header Connection "";           #设置Connection为长连接(默认为no)
  }
}

 HTTP 协议中对长连接的支持是从 1.1 版本之后才有的,因此最好通过 proxy_http_version 指令设置为 1.1。HTTP1.0不支持keepalive特性,当没有使用HTTP1.1的时候,后端服务会返回101错误,然后断开连接。而 "Connection" header 可以选择被清理,这样即便是 Client 和 Nginx 之间是短连接,Nginx 和 upstream 之间也是可以开启长连接的。这种情况下必须清理来自 Client 请求中的 “Connection” header。

要想做到Client与Nginx之间保持长连接,需要:

  • -  Client发送过来的HTTP请求要求携带"keep-alive"header。
  • -  Nginx设置支持keepalive 

Nginx中的keepalive配置项

keepalive_timeout  

Nginx 使用 keepalive_timeout 来指定 KeepAlive 的超时时间(timeout),指定每个 TCP 连接最多可以保持多长时间。Nginx 的默认值是 75 秒,有些浏览器最多只保持 60 秒,所以可以设定为 60 秒。若将它设置为 0,就禁止了 keepalive 连接。

# 可用于 http, server, location 配置块
# 设置 TCP 链接保持 60 秒
keepalive_timeout 60s;

send_timeout 

服务端向客户端传输数据的超时时间。这个设置不会用于整个转发器,而是在两次客户端读取操作之间。如果在这段时间内,客户端没有读取任何数据,Nginx就会关闭连接。

# 配置段: http, server, location
send_timeout 30s;

keepalive_request

keepalive_requests:默认100,某个长连接连续处理请求次数限制,超过次数则该长连接被关闭;如果需要释放某个连接占用的内存,必须关闭该链接,内存不大的情况下,不建议开大该配置;在QPS较高的场景,则有必要加大这个参数

# 配置段: http, server, location  
keepalive_request 10000;

应用场景

什么时候使用?

明显的预知用户会在当前连接上有下一步操作 复用连接,有效减少握手次数,尤其是https建立一次连接开销会更大

什么时候不用?

访问内联资源一般用缓存,不需要keepalive 长时间的tcp连接容易导致系统资源无效占用文章来源地址https://www.toymoban.com/news/detail-771264.html

到了这里,关于Nginx之keepalive配置解读的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 聊一聊nginx中KeepAlive的设置

    之前工作中遇到一个KeepAlive的问题,现在把它记录下来,场景是这样的: 从上图可以看出,用户通过Client访问的是LVS的VIP, VIP后端挂载的RealServer是Nginx服务器。 Client可以是浏览器也可以是一个客户端程序。一般情况下, 这种架构不会出现问题,但是如果Client端把请求发送给

    2024年02月01日
    浏览(59)
  • 【运维安全】运维界葵花宝典:Nginx配置与优化秘籍

    必要的原理介绍 ● Nginx 里有一个master进程和多个worker进程.master进程并不处理网络请求,主要负责调度工作进程: 加载配置,启动工作进程及非停升级.worker进程负责处理网络请求与响应. ● master进程主要用来管理worker进程,具体包括如下4个主要功能: 接收来自外界的信号 向各wo

    2024年02月21日
    浏览(46)
  • nginx加权轮询,upstream,Keepalive,负载均衡实现案例

    1. nginx 加权轮询, weight是权重配置。

    2024年02月08日
    浏览(44)
  • Nginx的server块外层的常见配置语句的解读(主要是http块的配置语句解读)

    自己写的与Nginx有关的几篇重量级博文 详情请参见链接 https://blog.csdn.net/wenhao_ir/article/details/135023881 有下面的Nginx配置: 下面开始研究这些配置的意思。 这条Nginx配置语句 worker_processes auto 用于设置Nginx服务器启动时的工作进程数量。具体作用如下: worker_processes : 这是一个指令

    2024年01月25日
    浏览(41)
  • 第五次作业 运维高级 构建 LVS-DR 集群和配置nginx负载均衡

    1、基于 CentOS 7 构建 LVS-DR 群集。 LVS-DR模式工作原理 首先,来自客户端计算机CIP的请求被发送到Director的VIP。然后Director使用相同的VIP目的IP地址将请求发送到集群节点或真实服务器。然后,集群某个节点将回复该数据包,并将该数据包直接发送到客户端计算机(不经过direct

    2024年02月14日
    浏览(48)
  • nginx教程:map $http_upgrade $connection_upgrade升级连接配置解读

    这段配置是用来定义一个 Nginx 变量 connection_upgrade 的映射规则,它用于在处理 WebSocket 连接等情况下控制 HTTP 连接的升级。以下是对这段配置的详细解释: map $http_upgrade $connection_upgrade { ... } : 这一行定义了一个名为 connection_upgrade 的变量,并使用 map 指令来配置变量的值映射规

    2024年02月03日
    浏览(44)
  • 【Nginx运维】Nginx升级打补丁

    升级nginx的过程主要需要以下步骤: 1.备份当前nginx版本及其配置文件。 2.下载新版本的nginx安装包。(如nginx-1.20.1.tar.gz) 3.解压缩安装包,并进入该目录。 4.使用configure脚本配置编译选项。 5.执行make命令进行编译。 make 6.停止旧版本的nginx服务,启动新版本nginx服务。 7.验证

    2024年02月12日
    浏览(36)
  • Nginx目录结构简介:深入理解Nginx的默认文件和目录

    第一章 Nginx的默认目录结构 当你安装Nginx后,它的默认目录结构如下: 让我们逐个了解这些目录和文件的作用。 第二章 conf目录 conf目录包含了Nginx的配置文件,其中nginx.conf是Nginx主配置文件,它包含了所有全局的Nginx配置项。mime.types文件包含了MIME类型的定义,它告诉Nginx如

    2024年02月13日
    浏览(58)
  • 修改nginx的默认访问页面

    通过ip访问页面时可能会遇到如下情况,无法正常显示网页。 造成这个的原因是nginx有一个默认访问的配置,只需要改一下就好了。 打开文件 /etc/nginx/sites-available/default 做以下修改即可

    2024年02月12日
    浏览(34)
  • Nginx 默认location index设置网站的默认首页

    /斜杠代表location定位的路径,路径当中最重要的字段就是root。 root默认值就是html,这个就是nginx安装路径下面的html文件夹作为root的路径。默认不配置就是root下面的内容,index指定了主页的内容。 location斜杠表示服务的根目录,这里index指令是去指定首页。  root你这里可以更

    2024年02月06日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包