博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RabbitMQ 远程 IP 访问 解决办法 -摘自网络
阅读量:4557 次
发布时间:2019-06-08

本文共 4107 字,大约阅读时间需要 13 分钟。

刚刚安装的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目录下执行:

1
duanwf@master:
/opt/rabbitmq_server-3
.3.5
/sbin
$ rabbitmqctl add_user admin admin

    也可以通过web管理页面来添加用户和密码,使用guest登录web管理页面http://localhost:15672,进入“admin”标签页,然后点击“Add a user ”,输入对用的帐号密码,然后选择用户角色(一定要选择):

    为了授权该用户对VirtualHost"/" 的访问,用户添加之后,需要对该用户进行授权,不然运行会出现错误:

1
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, ""}

    详细错误日志为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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服务:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
……
[
 
{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地址访问,成功登录:

 

 

    测试用例见博文“”

 

二、Unix

    unix环境下,配置文件在%/rabbitmq_server-3.3.5%/etc/rabbitmq/rabbitmq.config.example

1
root@master:
/opt/rabbitmq_server-3
.3.5
/etc/rabbitmq
# vi rabbitmq.config.example
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
%% -*- 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"
]},
   
……
   
]}
].

 

 

 

 

参考地址:

转载于:https://www.cnblogs.com/haoliansheng/p/5392860.html

你可能感兴趣的文章
9.Mongodb与python交互
查看>>
18-[JavaScript]-函数,Object对象,定时器,正则表达式
查看>>
读取短信回执
查看>>
EF 数据初始化
查看>>
PreparedStatement与Statement
查看>>
WebService -- Java 实现之 CXF ( 使用CXF工具生成client 程序)
查看>>
[LeetCode]Two Sum
查看>>
Android学习--网络通信之网络图片查看器
查看>>
[LeetCode] Excel Sheet Column Number
查看>>
安卓广播接收者
查看>>
999线监控
查看>>
Redis在python中的使用
查看>>
理解class.forName()
查看>>
每日一小练——数值自乘递归解
查看>>
二叉搜索树 (BST) 的创建以及遍历
查看>>
MyBatis/Ibatis中#和$的区别
查看>>
【JAVASCRIPT】React学习-组件生命周期
查看>>
win 64 文件操作
查看>>
Java范例集锦(二)
查看>>
C语言变量和常量
查看>>