nginx 基于tcp/udp代理

nginx从1.9.0版本开始,新增了ngx_stream_core_module模块,使nginx支持四层负载均衡。默认编译的时候该模块并未编译进去,需要编译的时候添加--with-stream,使其支持stream代理。

1|0Nginx 基于tcp/udp代理

Nginx

nginx 基于tcp/udp代理

 


nginx从1.9.0版本开始,新增了ngx_stream_core_module模块,使nginx支持四层负载均衡。默认编译的时候该模块并未编译进去,需要编译的时候添加--with-stream,使其支持stream代理。

同时需要说明一点,nginx也可以代理tcp的正向代理和反向代理,我这里主要以反向代理为基础,需要正向代理可以参考 Nginx 反向代理与正向代理

官方文档stream模块地址:
http://nginx.org/en/docs/stream/ngx_stream_core_module.html

因为手上没有合适的环境,我这里设置nginx代理smtp。使用腾讯的smtp服务进行代理演示

1|1Nginx搭建

1.nginx版本没有太大要求,1.9以上即可 wget http://nginx.org/download/nginx-1.10.3.tar.gz #按照依赖包 yum install -y gcc glibc gcc-c++ prce-devel openssl-devel pcre-devel useradd -s /sbin/nologin nginx -M tar xf nginx-1.10.3.tar.gz && cd nginx-1.10.3 #编译 ./configure --prefix=/usr/local/nginx-1.10.3 --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-stream make && make install 检查 /usr/local/nginx/sbin/nginx -t 启动 /usr/local/nginx/sbin/nginx 查看服务器是否启动 netstat -lntp|grep nginx tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 7058/nginx: master

1|2配置Nginx

stream不可以配置在http标签,需要和events同级,我这里就单独写一份配置文件,也方便后期维护管理

1.首先需要修改nginx.conf,添加include 引用server标签 cat >/usr/local/nginx/conf/nginx.conf < 解释一下什么是长连接 长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况,。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,次处理时直接发送数据包就OK了,不用建立TCP连接。例如:数据库的连接用长连接, 如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。 而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连好。 总之,长连接和短连接的选择要视情况而定。 具体网络中的应用的话:http 1.0一般就指短连接,smtp,pop3,telnet这种就可以认为是长连接。一般的网络游戏应用都是长连接 添加配置文件 cat >/usr/local/nginx/conf/i4t.com < 温馨提示:tcp代理不支持配置server_name 修改完配置文件后,我们nginx -t检查一下语法是否有问题。顺便我们启动nginx $/usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx-1.10.3/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx-1.10.3/conf/nginx.conf test is successful #启动 /usr/local/nginx/sbin/nginx #服务器检查 [root@abcdocker ~]# lsof -i:1998 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nginx 24034 root 6u IPv4 34775578 0t0 TCP *:x25-svc-port (LISTEN) nginx 24035 nginx 6u IPv4 34775578 0t0 TCP *:x25-svc-port (LISTEN) [root@abcdocker ~]# ps -ef|grep nginx root 24034 1 0 08:22 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx nginx 24035 24034 0 08:22 ? 00:00:00 nginx: worker process root 26095 24232 0 08:33 pts/2 00:00:00 grep --color=auto nginx 访问测试 telnet没有问题~
1.首先需要修改nginx.conf,添加include 引用server标签 cat >/usr/local/nginx/conf/nginx.conf < 解释一下什么是长连接 长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况,。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,次处理时直接发送数据包就OK了,不用建立TCP连接。例如:数据库的连接用长连接, 如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。 而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连好。 总之,长连接和短连接的选择要视情况而定。 具体网络中的应用的话:http 1.0一般就指短连接,smtp,pop3,telnet这种就可以认为是长连接。一般的网络游戏应用都是长连接 添加配置文件 cat >/usr/local/nginx/conf/i4t.com < 温馨提示:tcp代理不支持配置server_name 修改完配置文件后,我们nginx -t检查一下语法是否有问题。顺便我们启动nginx $/usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx-1.10.3/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx-1.10.3/conf/nginx.conf test is successful #启动 /usr/local/nginx/sbin/nginx #服务器检查 [root@abcdocker ~]# lsof -i:1998 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nginx 24034 root 6u IPv4 34775578 0t0 TCP *:x25-svc-port (LISTEN) nginx 24035 nginx 6u IPv4 34775578 0t0 TCP *:x25-svc-port (LISTEN) [root@abcdocker ~]# ps -ef|grep nginx root 24034 1 0 08:22 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx nginx 24035 24034 0 08:22 ? 00:00:00 nginx: worker process root 26095 24232 0 08:33 pts/2 00:00:00 grep --color=auto nginx 访问测试 telnet没有问题~
1.首先需要修改nginx.conf,添加include 引用server标签 cat >/usr/local/nginx/conf/nginx.conf < 解释一下什么是长连接 长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况,。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,次处理时直接发送数据包就OK了,不用建立TCP连接。例如:数据库的连接用长连接, 如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。 而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连好。 总之,长连接和短连接的选择要视情况而定。 具体网络中的应用的话:http 1.0一般就指短连接,smtp,pop3,telnet这种就可以认为是长连接。一般的网络游戏应用都是长连接 添加配置文件 cat >/usr/local/nginx/conf/i4t.com < 温馨提示:tcp代理不支持配置server_name 修改完配置文件后,我们nginx -t检查一下语法是否有问题。顺便我们启动nginx $/usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx-1.10.3/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx-1.10.3/conf/nginx.conf test is successful #启动 /usr/local/nginx/sbin/nginx #服务器检查 [root@abcdocker ~]# lsof -i:1998 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nginx 24034 root 6u IPv4 34775578 0t0 TCP *:x25-svc-port (LISTEN) nginx 24035 nginx 6u IPv4 34775578 0t0 TCP *:x25-svc-port (LISTEN) [root@abcdocker ~]# ps -ef|grep nginx root 24034 1 0 08:22 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx nginx 24035 24034 0 08:22 ? 00:00:00 nginx: worker process root 26095 24232 0 08:33 pts/2 00:00:00 grep --color=auto nginx 访问测试 telnet没有问题~

__EOF__

本文作者菜菜
本文链接https://www.cnblogs.com/caicz/p/15097487.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   菜菜聊架构  阅读(684)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示