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