当前位置: 代码网 > it编程>数据库>Redis > Nginx实现TCP端口的侦听及转发操作步骤

Nginx实现TCP端口的侦听及转发操作步骤

2024年11月10日 Redis 我要评论
一、说明由于我们在使用mqtt时,会接收大量的客户端连接,单机的mqtt肯定是扛不住的,所以需要一个mqtt的集群来处理,这时就得有一个网关来负责请求的转发nginx从1.9.0版本开始,新增了ngx

一、说明

由于我们在使用mqtt时,会接收大量的客户端连接,单机的mqtt肯定是扛不住的,所以需要一个mqtt的集群来处理,这时就得有一个网关来负责请求的转发

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

在之前的版本如果想支持,需要打补丁,安装模块nginx_tcp_proxy_module。 http代理,通常就是我们说的七层代理,工作在第七层应用层。 而tcp代理,就是我们常说的四层代理,工作在网络层和传输层

http代理,通常就是我们说的七层代理,工作在第七层应用层
而tcp代理,就是我们常说的四层代理,工作在网络层和传输层

需要用到的命令

命令说明
firewall-cmd --list-ports  

查看开放的端口号 

firewall-cmd --zone=public --add-port=8888/tcp --permanent开放对应端口号:8888
firewall-cmd --zone=public --remove-port=80/tcp --permanent关闭端口号
firewall-cmd --reload 重启防火墙 
 systemctl status firewalld.service 查看防火墙状态

二、操作步骤

2.1 查看nginx是否安装stream

nginx -v | tr ' ' '\n'|grep stream

如果出现下面两项,说明支持

--with-stream
--with-stream_ssl_module

2.2 如果没有则重新安装nginx

1. sudo yum install nginx -y
2. sudo yum -y install epel-release
3. yum -y install nginx-all-modules.noarch
4. vi nginx.conf   #顶部加一行load_module /usr/lib64/nginx/modules/ngx_stream_module.so;

2.3 tcp代理(mqtt为例)

  • tcp代理与我们平常说的网站反向代理不一样,它是基于tcp协议
  • stream反向代理模块与http和events是平级的,不要把配置写到http里面了

为了方便添加stream配置,我们单独在nginx目录下创建一个stream目录,存放tcp代理配置文件

在 /etc/nginx/nginx.conf 中加入如下:

stream {
log_format proxy '$remote_addr [$time_local] '
'$protocol $status $bytes_sent $bytes_received '
'$session_time "$upstream_addr" '
'"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';
access_log  /var/log/nginx/stream.log proxy;
open_log_file_cache off;
include stream/*conf;
}

在nginx/stream下创建一个mqtt.conf配置文件

upstream mqtt_tcp_server{
    server ec2-52-90-93-84.compute-1.amazonaws.com:8883;
} 
server {
listen 8883; #监听端口
proxy_connect_timeout 150s;
proxy_timeout 150s;
proxy_pass mqtt_tcp_server; #反向代理地址
proxy_buffer_size 3m;
tcp_nodelay on;
}

重载nginx

/usr/local/nginx/sbin/nginx -s reload

当我们访问nginx的8883端口时,会自动代理到目标主机的8883端口上

总结

到此这篇关于nginx实现tcp端口的侦听及转发的文章就介绍到这了,更多相关nginx tcp端口侦听及转发内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

  • Redis数据一致性详解

    1、一致性一致性是指系统中各节点数据保持一致。分布式系统中,可以理解为多个节点中的数据是一致的。一致性根据严苛程度分类:强一致性:写进去的数据是什么,读出来的数据就是什么,对性能影…

    2024年11月15日 数据库
  • Nginx修复CORS漏洞的实现方法

    Nginx修复CORS漏洞的实现方法

    漏洞描述cors 不安全配置漏洞指的是在跨域资源共享过程中,由于资源服务器的响应头 access-control-allow-origin 配置不当导致本应该受... [阅读全文]
  • redis事务如何解决超卖问题

    redis事务如何解决超卖问题

    redis事务解决超卖问题redis的事务提供了一种将多个命令请求打包,然后一次性、按顺序性地执行多个命令的机制。在事务执行期间,服务器不会中断事务而去执行其它... [阅读全文]
  • 关于Redis库存超卖问题的分析

    一、分析问题刚刚秒杀优惠券购买测试的时候是我们自己在页面上点击进行测试的,这跟真实的秒杀场景还是有很大差异的,因为真实的秒杀场景下肯定有无数的用户一起来抢购,一起来点购这个按钮,因…

    2024年11月05日 数据库
  • ELK配置转存redis缓存采集nginx访问日志的操作方法

    在136服务器上部署mysql启动mysql服务可通过以下命令查找安装的软件包怎么查找安装软件的日志文件位置rpm -qc mysql-server,即可显示mysql.log位置…

    2024年11月05日 数据库
  • 如何解决Redis缓存穿透(缓存空对象、布隆过滤器)

    如何解决Redis缓存穿透(缓存空对象、布隆过滤器)

    背景缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库常见的解决方案有两种,分别是缓存空对象和布隆过滤器1.缓... [阅读全文]

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com