Nginx代理长连接(Socket连接)

这篇具有很好参考价值的文章主要介绍了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/ --user=nginx --group=nginx --with-http_stub_status_module

这里安装的是stream模块,注意,这里并不支持ssl,后续我会做相应补充。

1.3.1、配置nginx.conf的配置文件

stream {
####WG360采集
	upstream wg360socket {
		hash $remote_addr consistent;
		server 10.254.1.28:31403 weight=5 max_fails=3 fail_timeout=30s;
		}	
		server {
		listen 86;
		proxy_connect_timeout 10s;
		proxy_pass wg360socket;
		}
####mysql数据库
    upstream mysqlsocket {
                hash $remote_addr consistent;
                server 10.254.1.243:31306 weight=5 max_fails=3 fail_timeout=30s;
                }
                server {
                listen 666;
                proxy_connect_timeout 10s;
                proxy_pass mysqlsocket;
                }
	
        }

我们这里代理的是硬件设备的采集,以及mysql数据库

1.3.2、stream的ssl代理

首先我们如果刚开始没有安装ssl的模块,这是我们需要从新编译,然后讲nginx这个二进制文件复制到目录/sbin/下,下面是操作步骤:

##########进行编译
./configure   --with-stream --with-stream_ssl_preread_module --prefix=/usr/local/nginx/ --user=nginx --group=nginx --with-http_stub_status_module  --with-stream_ssl_module --with-http_ssl_module
#########进行make
[root@middleware nginx-1.20.2]# make

这时需要进入objs目录
Nginx代理长连接(Socket连接)
进入objs目录
Nginx代理长连接(Socket连接)
执行./nginx查看是否安装成功
Nginx代理长连接(Socket连接)
然后将nginx这个二进制文件替换原本的文件,注意替换时要保持nginx处于关闭状态。文章来源地址https://www.toymoban.com/news/detail-440558.html

1.3.3、stream的ssl配置文件

stream {
####singal
        upstream signal {
                hash $remote_addr consistent;
                server 10.202.191.8:443 weight=5 max_fails=3 fail_timeout=30s;
                }
            server {
            listen 11066 ssl;
            ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
            #ssl_ciphers  AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
            ssl_certificate     /usr/local/nginx/conf/crc-gas.com.pem;
            ssl_certificate_key /usr/local/nginx/conf/crc-gas.com.key;
            #ssl_session_cache   shared:SSL:10m;
            #ssl_session_timeout 10m;
            proxy_connect_timeout 10s;
            proxy_pass signal;
            #ssl_preread on;
                }
}
需要注意的是,这里面的ssl参数配置不要和http里面的冲突,这样会导致服务启动不了

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

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

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

相关文章

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包