解决RabbitMQ远程不能访问的问题
刚刚安装的RabbitMQ-Server-3.3.5,并且也已经开启了Web管理功能,但是现在存在一个问题:
出于安全的考虑,guest这个默认的用户只能通过http://localhost:15672 来登录,不能使用IP地址登录,也就是不能远程访问,这对于服务器上没有安装桌面的情况是无法管理维护的。


要解决这个问题需要配置远程登录权限,这里通过配置文件来实现远程访问。
这里主要介绍Unix和Windows的配置文件修改。
一、Windows
Windows环境下默认配置文件为目录/%RabbitMQ Server%/rabbitmq_server-3.3.5/etc下的rabbitmq.config.example文件,我们可以直接在这个文件中修改(可以不用去设置环境变量了),也可以自己再新建一个rabbitmq.config文件,然后把这个文件路径配置到环境变量中,这里介绍就直接修改rabbitmq.config.example文件。
注意:修改之前,需要先停止RabbitMQ服务!!不然是不能保存的!!!
配置之前需要先添加用户,用于外网的访问,可以使用命令行来实现添加用户,需要在RabbitMQ的安装目录sbin目录下执行:
root@master:/opt/rabbitmq_server-3.3.5/sbin$ rabbitmqctl add_user admin admin
也可以通过web管理页面来添加用户和密码,使用guest登录web管理页面http://localhost:15672,进入“admin”标签页,然后点击“Add a user ”,输入对用的帐号密码,然后选择用户角色(一定要选择):

为了授权该用户对VirtualHost"/" 的访问,用户添加之后,需要对该用户进行授权,不然运行会出现错误:
Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; reason: {#method<channel.close>(reply-code=403, reply-text=ACCESS_REFUSED - access to queue 'hello' in vhost '/' refused for user 'admin', class-id=50, method-id=10), null, ""}
详细错误日志为:
java.io.IOException
at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:106)
at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:102)
at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:124)
at com.rabbitmq.client.impl.ChannelN.queueDeclare(ChannelN.java:766)
at com.rabbitmq.client.impl.ChannelN.queueDeclare(ChannelN.java:61)
at com.asiainfo.mq.rabbitmq.rabbitmqtest.SendTest.main(SendTest.java:29)
Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; reason: {#method<channel.close>(reply-code=403, reply-text=ACCESS_REFUSED - access to queue 'hello' in vhost '/' refused for user 'admin', class-id=50, method-id=10), null, ""}
at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:67)
at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:33)
at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:343)
at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java:216)
at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:118)
... 3 more
Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; reason: {#method<channel.close>(reply-code=403, reply-text=ACCESS_REFUSED - access to queue 'hello' in vhost '/' refused for user 'admin', class-id=50, method-id=10), null, ""}
at com.rabbitmq.client.impl.ChannelN.asyncShutdown(ChannelN.java:473)
at com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java:313)
at com.rabbitmq.client.impl.AMQChannel.handleCompleteInboundCommand(AMQChannel.java:144)
at com.rabbitmq.client.impl.AMQChannel.handleFrame(AMQChannel.java:91)
at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:533)
操作过程为:在Admin标签页下点击新增的用户"admin",进入授权页面,默认直接点击"set permission"即可:

用户以及授权添加完成之后,在rabbitmq.config.example文件中,添加以下内容,保存后重启RabbitMQ服务:
……
[
{rabbit,
[%%
%% Network Connectivity
%% ====================
%%
%% By default, RabbitMQ will listen on all interfaces, using
%% the standard (reserved) AMQP port.
%%
{tcp_listeners, [5672]},
{loopback_users, ["admin"]},
……
]}
].
在浏览器中输入http://192.168.0.124:15672实现通过IP地址访问,成功登录:

测试用例见博文“RabbitMQ远程调用测试用例”
二、Unix
unix环境下,配置文件在%/rabbitmq_server-3.3.5%/etc/rabbitmq/rabbitmq.config.example
root@master:/opt/rabbitmq_server-3.3.5/etc/rabbitmq# vi rabbitmq.config.example
%% -*- mode: erlang -*-
%% ----------------------------------------------------------------------------
%% RabbitMQ Sample Configuration File.
%%
%% See http://www.rabbitmq.com/configure.html for details.
%% ----------------------------------------------------------------------------
[
{rabbit,
[%%
%% Network Connectivity
%% ====================
%% %% By default, RabbitMQ will listen on all interfaces, using
%% the standard (reserved) AMQP port.
%%
{tcp_listeners, [5672]},
{loopback_users, ["admin"]},
……
]}
].


参考地址:
http://blog.haohtml.com/archives/15249
http://www.rabbitmq.com/access-control.html
https://www.rabbitmq.com/configure.html
解决RabbitMQ远程不能访问的问题的更多相关文章
- RabbitMQ远程不能访问问题的解决
刚刚安装的RabbitMQ-Server-3.3.5,并且也已经开启了Web管理功能,但是现在存在一个问题: 出于安全的考虑,guest这个默认的用户只能通过http://localhost:1567 ...
- RabbitMQ 远程 IP 访问 解决办法 -摘自网络
刚刚安装的RabbitMQ-Server-3.3.5,并且也已经开启了Web管理功能,但是现在存在一个问题: 出于安全的考虑,guest这个默认的用户只能通过http://localhost:1567 ...
- RabbitMQ远程调用测试用例
RabbitMQ远程调用测试,使用外部机器192.168.174.132上的RabbitMQ,使用之前需要对远程调用进行配置,操作过程见博文“解决RabbitMQ远程不能访问的问题”. SendTes ...
- 解决WebService本地访问正常,远程无法访问的问题
发布webservice后部署到自己的服务器上,然后本机,外网远程访问都没事,在用户服务器上部署后只能本机访问,远端访问不了,通过网络搜索到下面方法,但改后仍然不行.原来在自己服务器部署时是在默认网站 ...
- Java调用.Net WebService参数为空解决办法 (远程)调试webservice方法 转
Java调用.Net WebService参数为空解决办法 (远程)调试webservice方法 同事遇到一个很囧的问题,java调,netwebservice的时候,调用无参数方法成功,调用有参 ...
- Windows通过远程桌面访问Ubuntu
关于Windows通过远程桌面访问Ubuntu 问题及目标 Window环境通过远程桌面访问Ubuntu Ubuntu机器端 1. 安装所需软件包 sudoapt-get install x ...
- Ubuntu18.04,安装Redis配置远程连接访问和简单使用Redis
前言 Redis是常用基于内存的Key-Value数据库,比Memcache更先进,支持多种数据结构,高效,快速.用Redis可以很轻松解决高并发的数据访问问题:作为实时监控信号处理也非常不错. 环境 ...
- 设置RabbitMQ远程ip登录
由于账号guest具有所有的操作权限,并且又是默认账号,出于安全因素的考虑,guest用户只能通过localhost登陆使用,并建议修改guest用户的密码以及新建其他账号管理使用rabbitmq. ...
- 解决redis远程连接不上的问题
解决redis远程连接不上的问题 redis现在的版本开启redis-server后,redis-cli只能访问到127.0.0.1,因为在配置文件中固定了ip,因此需要修改redis.conf(有的 ...
随机推荐
- ES6学习笔记第一天
## 三.const和let **3.1 const** const用来定义常量,所谓的常量就是值一旦给定后就不变,一次定义终身不变的量 const a = 10; a = 20; 上面的a就是一个常 ...
- P1113 同颜色询问
题目描述 现在有一个包含 \(n\) 个元素的数组,它的元素的编号从 \(1\) 到 \(n\) . 每一个元素都有一个初始的颜色 \(C_i\) 以及数值 \(W_i\) . 这个数组支持 \(4\ ...
- [转]MySQL常用查询
单表查询 ①查询所有 * mysql> select * from student; ②查询选中字段记录 mysql> select s_name from student; ③条 ...
- js 制作分页
如图所示 在html中调用方法 getpage(7, 1, 1, 'URL') 1.page.js文件 代码 function getpage(count, countPage, pageIndex, ...
- H3C DHCP中继配置示例
- P1037 最小公倍数
题目描述 给你两个正整数A和B,求它们的最小公倍数. 输入格式 两个正整数 \(A,B(1 \le A,B \le 10^9)\) . 输出格式 一个整数,表示A和B的最小公倍数. 样例输入 6 8 ...
- 2018-2-13-C#-解析-sln-文件
title author date CreateTime categories C# 解析 sln 文件 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17:23 ...
- 2019-5-21-win10-uwp-商业游戏-1.1.5
title author date CreateTime categories win10 uwp 商业游戏 1.1.5 lindexi 2019-05-21 11:38:20 +0800 2018- ...
- 多校 HDU - 6614 AND Minimum Spanning Tree (二进制)
传送门 AND Minimum Spanning Tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 ...
- C#面试题整理2(不带答案)
一.C# 理论 1.1.简述 private. protected. public. internal.protected internal 访问修饰符和访问权限 1.2.简述abstract.sea ...