Nginx代理长连接(Socket连接)

一、nginx代理长连接

1.1、长连接,短链接的区别

短连接是指通讯双方有数据交互时,就建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。

长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是短连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,下次处理时直接发送数据包就OK了,不用建立TCP连接。例如:数据库的连接用长连接,如果用短连接频繁的通信会造成socket错误,而且频繁的socket
创建也是对资源的浪费。

而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连好。
总之,长连接和短连接的选择要视情况而定。

1.2、nginx如何代理长连接

代理长连接需要stream这个模块,下面我对这个模块进行简单的介绍:

从1.9.0开始,NGINX增加了stream模块用来实现四层协议的转发、代理和负载均衡。与著名的四层LB软件lvs相比,stream 模块(开源版)无论从功能还是性能上,都有一定的差距,实现也相对简单。

从性能上来说,stream模块在应用层实现四层的转发,需要与两端建立起socket连接,然后两端的数据收发进行代理转发。因此,大量的数据从内核态到用户态再从用户态到内核态传递。这些数据copy加上系统调度的开销,使得它的性能与纯内核态转发的lvs相比,有一定差距。
这里我们只是使用到stream的代理长连接功能,对其负载均衡性能暂不做讨论

1.3、安装nginx并安装stream模块

./configure   --with-stream --with-stream_ssl_preread_module --prefix=/usr/local/nginx/ --use
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Nginx 中配置长连接(Keep-Alive)有两个方面需要考虑:客户端和服务器端。 首先,需要在客户端配置支持长连接。大多数现代浏览器默认支持长连接,但你可以通过以下方式确保客户端支持长连接: 1. 在 HTML 页面的头部添加以下代码: ``` <meta http-equiv="Connection" content="Keep-Alive"> ``` 2. 在 HTTP 请求头中添加以下字段: ``` Connection: Keep-Alive ``` 接下来,需要在 Nginx 服务器端进行配置以支持长连接。打开 Nginx 配置文件(一般是 nginx.conf),并进行以下更改: 1. 在 `http` 配置块中添加以下指令,以启用长连接: ``` keepalive_timeout 65; keepalive_requests 100; ``` `keepalive_timeout` 指定了每个连接的最大空闲时间(以秒为单位),超过该时间后将关闭连接。`keepalive_requests` 指定了在关闭连接之前最大允许的请求数。 2. 在 `server` 或 `location` 配置块中,可以根据需要进一步调整长连接的设置。例如,可以使用以下指令设置长连接的超时时间: ``` proxy_read_timeout 300; ``` 此示例中的 `proxy_read_timeout` 设置了代理服务器(如果使用了反向代理)的读取超时时间。 3. 保存并重新加载或重启 Nginx 服务器,使配置生效。 这样,Nginx 就会在客户端请求后保持连接打开一段时间,以便处理连续的请求,从而提高性能和响应速度。请根据实际需求调整长连接的超时时间和其他相关配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值