RabbitMQ 远程 IP 访问 解决办法 -摘自网络

刚刚安装的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

[email protected]:/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地址访问,成功登录:

测试用例见博文“RabbitMQ远程调用测试用例

二、Unix

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


1

[email protected]:/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"]},

   ……

   ]}

].

参考地址:

http://blog.haohtml.com/archives/15249

http://www.rabbitmq.com/access-control.html

https://www.rabbitmq.com/configure.html

时间: 2024-10-13 10:40:47

RabbitMQ 远程 IP 访问 解决办法 -摘自网络的相关文章

Linux配置Tomcat8080端口 远程无法访问解决办法

是因为Linux的防火墙没有开放8080端口 解决办法: /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT #开启8080端口 /sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT #开启22端口 /etc/rc.d/init.d/iptables save #保存配置 /etc/rc.d/init.d/iptables restart #重启服务 查看已开放端口 /etc/init.d/

IIS8无法通过IP访问解决办法

今天配置在Windows server 2012 R2 上配置IIS8时,出现局域网内无法使用IP访问站点的问题,查找资料依然无法解决.最后发现IIS8配置好主机名后无法使用主机IP访问站点,只能使用主机名称.所以需要将无法在局域网内访问的站点在IIS8上右击选择编辑绑定然后再选中要更改的网站,再点击右边的编辑,删除主机名称,保存后即可使用主机Ip访问站点了!如果localhost无法访问多半是host文件屏蔽了该IP,需要删除host中的注释即可! 原文地址:https://www.cnblo

新建网站本机能访问外网无法访问解决办法

新建网站本机能访问外网无法访问解决办法 之前带着几个人给某事业单位运用公司新近研发的的一套框架建了个网站,在局域网中试运行了20来天之后应客户的要求发布到公网上之后,出现了无法访问的问题. (其他的像备案,域名,独立IP等之前已经全部都弄好了,通过外网访问的时候端口都对应的打开了,防火墙等因素也不予考虑) 服务器环境 WinServer2008 + IIS7 问题描述 能够Ping通,本机可以访问,外网无法访问. 解决方法 因为网站刚发布的时候使用的是80端口,通过网上了解相关的信息是:80端口

Linux无法显示ip的解决办法

Linux虚拟机无法显示IP的解决办法 1,需要IP地址,所以我们这里先学会查看虚拟机里的Centos7的IP地址在命令行输入ip查询命名: ip a 2,发现ens33 没有inet 这个属性,那么就没法通过IP地址连接虚拟机.接着来查看ens33网卡的配置:vi /etc/sysconfig/network-scripts/ifcfg-ens33 注意vi后面加空格vi是Linux内置的文本编辑器命令 打开文件的意思 3,从配置清单中可以发现 CentOS 7 默认是不启动网卡的(ONBOO

win7系统安装VS2013后,连不上远程sqlserver数据库解决办法

刚搬了地方,顺便把电脑重做了系统,把sql2012和vs2013装好,怎么弄也连不上远程的数据库了,用程序连IIS直接死掉,用ssms连也是直接失去响应,开始以为是网线端口被运营商封杀了,最后发现不是的,是程序的原因.解决办法和大家分享一下,供大家参考: 以管理员的身份运行“命令管理器”,输入:netsh winsock reset 然后重启一下电脑. 本人亲测,问题解决了.参考资料URL:http://social.msdn.microsoft.com/Forums/zh-CN/030f66b

sqlserver 附加数据库失败,错误提示:5拒绝访问 解决办法

sqlserver 附加数据库失败,错误提示:5拒绝访问 解决办法 金刚 sqlserver 附加数据库 拒绝访问 今天把项目拷贝到新硬盘里,发现在附加数据库中提示:操作系统错误5:"5拒绝访问",一看提示就是权限问题. 我把数据库文件的所属文件夹的权限设置了下.文件夹的权限 Authenticated Users用户组权限设置成完全控制 Authenticated Users用户组权限.jpg 还要设置Users用户组权限,设置成完全控制

linux 指定从某个ip访问某个主机或网络

linux 指定从某个ip访问某个主机或网络 测试机A上有3个ip 分别为 eth0    192.168.1.34 eth0:1  192.168.1.36 eth1    192.168.1.35 首先在测试机B上开机apache access_log tail -f /etc/httpd/logs/access_log 接着在测试机A上访问B ,可以看到 192.168.1.34 - - [26/Aug/2014:02:54:24 +0800] "GET / HTTP/1.1"

Win10不能远程其他远程计算机的解决办法

Win10不能远程其他远程计算机的解决办法 转自: https://blog.csdn.net/qq_38197830/article/details/69488236 首先打开控制面板——>选择程序和功能 进去之后点击左上角——>启用或关闭Windows功能 选中Internet Information Services.Internet Information Services 可承载的Web核心和MultiPoint Connector,最后确定即可 原文地址:https://www.c

解决RabbitMQ远程不能访问的问题

刚刚安装的RabbitMQ-Server-3.3.5,并且也已经开启了Web管理功能,但是现在存在一个问题: 出于安全的考虑,guest这个默认的用户只能通过http://localhost:15672 来登录,不能使用IP地址登录,也就是不能远程访问,这对于服务器上没有安装桌面的情况是无法管理维护的. 要解决这个问题需要配置远程登录权限,这里通过配置文件来实现远程访问. 这里主要介绍Unix和Windows的配置文件修改. 一.Windows Windows环境下默认配置文件为目录/%Rabb