Kong网关代理MQTT的两种方法

我的前一篇文章,是关于Kong网关实现TCP流代理的方法。使用的目前最新版本的Kong网关软件,新版自带 Kong Manager UI界面。但2.*版本没有提供 UI界面,如果实现TCP流代理。有两种方法,一种是使用第三方 konga 的UI界面来操作,配置方法同 Kong Manager UI类似 。还有一种方式就是本文要讲的。

Kong网关技术底层是通过Openresty(基于NGINX与Lua) 反向代理的能力实现。本文的方法是手动配置Nignx来实现TCP协议代理,同时不影响Kong的正常功能。

接下来,我们来以代理MQTT为例,讲解如何操作。

1、开放防火墙端口

以Centos为kong网关操作系统为例。使用网关的1883代理。开放1883端口。

复制代码
firewall-cmd --zone=public --add-port=1883/tcp --permanent
firewall-cmd --reload

2 新建NGINX配置文件

进入网关容器内,修改配置文件。

复制代码
docker exec -it <kong容器id> bash

cd /usr/local/kong
cp nginx.conf custom_nginx.template
 
vi custom_nginx.template
 
修改stream内容如下:
stream {
    include 'nginx-kong-stream.conf';
    include 'emqx_tcp_nginx.conf';
}

3 新建 emqx_tcp_nginx.conf

内容如下

复制代码
upstream mqtt1883 {
    server 10.10.1.2:1883 weight=1;
}
server {
        listen       1883;
        proxy_pass mqtt1883;
        proxy_buffer_size 3M;
        tcp_nodelay on;
}

4 修改容器根目录下的docker-entrypoint.sh文件 ,将原"-c nginx.conf"修改为"custom_nginx.template"。

复制代码
exec /usr/local/openresty/nginx/sbin/nginx \
      -p "$PREFIX" \
      -c custom_nginx.template

说明:在这里解释一下,为什么要新建一个custom_nginx.template文件 ,而不直接使用nginx.conf。因为kong网关启动或重载后,会自动生成一个新的nginx.conf文件。如果在文件上直接修改,会被系统自动替换掉。使用新建的文件,不要以.conf为后缀。因为新文件即有原nginx.conf的内容,又包含了新配置的流代理配置,所以不影响kong网关的原有功能。

5 重启容器

复制代码
docker restart kong
相关推荐
ts9775 分钟前
Nginx + Vue History 模式刷新 404 的完整排查与解决方案
运维·vue.js·nginx
摇滚侠20 分钟前
VMvare 虚拟机 centOS 7 安装 Docker,Docker 安装 Kong Konga
docker·centos·kong
三两肉18 小时前
Linux 网络包的 “快递分拣”:从发送到接收的内核协作全景
linux·网络·计算机网络·tcp
m0_5374734921 小时前
Nginx 生产环境平滑升级实战:从 1.24.0 到 1.28.0 的零宕机操作全记录
运维·nginx
BIBI20491 天前
Nginx 反向代理完全入门:从一个真实场景开始
nginx·部署·配置·问题解决·服务器运维·web 开发·web 服务器
weixin_440730501 天前
Nginx、Apache和tomcat的简单了解。
nginx·tomcat·apache
bkspiderx1 天前
用Nginx解决HTTP跨域问题:两种实用方案详解
nginx·http·跨域·http跨域
石像鬼₧魂石1 天前
Fail2ban + Nginx/Apache 防 Web 暴力破解配置清单
前端·nginx·apache
苹果醋32 天前
iview— Select— Option选中后有空格
运维·vue.js·spring boot·nginx·课程设计
catoop2 天前
网站安全加固:优化 Nginx 安全头配置
nginx·安全