1.前言
因订单中心完成支付后需同步业务系统,便使用RabbitMQ 消息队列实现异步通知。 因为RabbitMQ 依赖 erlang,本例采用使用Docker进行安装,但是安装后一直无法访问,于是采用了nginx进行代理,代理后,管理系统可进,客户端仍然无法连接,尝试更换代理方式后,顺利连接。记录分享。方便同样情况的小伙伴进行问题排查~
2.启动容器
# 拉取镜像
docker pull rabbit
# 启动容器
docker run -d --hostname rabbitmq --name rabbitmq -p 15672:15672 -p 5672:5672 rabbitmq
# 开启管理管理
docker exec -it rabbitmq /bin/bash
rabbitmq-plugins enable rabbitmq_management
# 设置用户信息 rabbitmq为用户名 密码为password
rabbitmqctl add_user rabbitmq password
rabbitmqctl set_user_tags rabbitmq administrator
# 重启容器
docker restart id
3.配置Nginx代理
因为Rabbit MQ默认只允许本地访问,需要进行代理配置,否则无法使用公网访问
管理系统代理配置
对管理系统服务端口配置代理端口即可,
server{
listen 15673;
keepalive_timeout 70;
location / {
proxy_pass http://127.0.0.1:15672;
}
location ~ /\. {
deny all;
}
}
客户端连接端口代理配置
注意:管理系统服务端口和客户端连接端口配置方式不一致,否则客户端无法连接
添加文件 rabbitmq-nginx.conf,对客户端连接端口配置代理
stream{
upstream rabbitstream{
server 127.0.0.1:5672;
}
server{
listen 5673;
proxy_pass rabbitstream;
}
}
在nginx.conf 最后引入 引入刚才的配置文件
include rabbitmq-nginx.conf
[图片上传失败...(image-ea678a-1663341004190)]
最后别忘了重新加载nginx配置文件
访问 http://ip:代理端口 可使用配置好的用户密码进入后台
4.其他问题
Q:docker安装rabbitMQ 后 客户端无法连接?
A:检查连接密码和代理的配置,管理系统代理配置和连接端口代理配置方式不一样
Q:管理系统后台无法进入?
A:检查是否开启管理系统功能