1、环境说明

系统:centos7

因为办公电脑和搭建rocketmq服务的服务器不在一个网段,而且办公电脑业无法访问该服务器除了80和8080以外的其他端口,所以要对rocketmq的9876端口做转发。

2、修改rocketmq配置

$ /data/webApps/rocketmq/conf

$ vi broker.conf 

注释下面两行

#namesrvAddr = 192.168.58.115:9876

#brokerIP1 = 192.168.58.115

重启服务

$ cd /data/webApps/rocketmq/bin

$ ./mqshutdown broker

$ ./mqshutdown namesrv

$ nohup ./mqnamesrv &

$ nohup ./mqbroker -n localhost:9876 &

查看日志确认服务启动正常

3、修改nginx配置

# vi /etc/nginx/nginx.conf

在events {}块下面添加下面内容做rocketmq服务端口转发:

stream {

        server {

        listen 8080;

        proxy_connect_timeout 1s;

        proxy_timeout 3s;

        proxy_pass 127.0.0.1:9876;

    }

}

解释上面的配置:

办公电脑访问192.168.58.115的8080端口就会转到9876端口,也就是rocketmq的服务端口;

这里的nginx是yum安装的,如果是源码编译的话,要想使用stream做端口转发的话,需要在编译时加入相应参数才可,具体可以参考https://blog.csdn.net/e_wsq/article/details/79408383 这边博文。

4、验证rocketmq转发的有效性

测试服务器打开两个窗口

一个监听8080端口

# tcpdump -i eth0 -nnn tcp port 8080

一个监听9876端口

# tcpdump -i lo tcp port 9876

办公电脑打开命令提示符界面,访问测试服务器的8080端口

telnet 192.168.58.115 8080

可以在打开的两个测试服务器窗口看到有消息发送过来,这里记得监听9876端口的网卡参数为lo,也就是回环网络,不然不会收到信息的(因为没有考虑到这个在这边卡了半天,以为我转发配置有问题)。

tcpdump使用参考:

https://blog.csdn.net/weed_hz/article/details/72675710

nginx转发端口参考:

https://blog.csdn.net/e_wsq/article/details/79408383