阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

163次阅读
没有评论

共计 7878 个字符,预计需要花费 20 分钟才能阅读完成。

刚刚安装的 RabbitMQ-Server-3.3.5,并且也已经开启了 Web 管理功能,但是现在存在一个问题:

出于安全的考虑,guest 这个默认的用户只能通过 http://localhost:15672 来登录,不能使用 IP 地址登录,也就是不能远程访问,这对于服务器上没有安装桌面的情况是无法管理维护的。

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

要解决这个问题需要配置远程登录权限,这里通过配置文件来实现远程访问。

CentOS 5.6 安装 RabbitMQ http://www.linuxidc.com/Linux/2013-02/79508.htm

RabbitMQ 客户端 C ++ 安装详细记录 http://www.linuxidc.com/Linux/2012-02/53521.htm

用 Python 尝试 RabbitMQ http://www.linuxidc.com/Linux/2011-12/50653.htm

RabbitMQ 集群环境生产实例部署 http://www.linuxidc.com/Linux/2012-10/72720.htm

Ubuntu 下 PHP + RabbitMQ 使用 http://www.linuxidc.com/Linux/2010-07/27309.htm

在 CentOS 上安装 RabbitMQ 流程 http://www.linuxidc.com/Linux/2011-12/49610.htm

这里主要介绍 Unix 和 Windows 的配置文件修改。

一、Windows

    Windows 环境下默认配置文件为目录 /%RabbitMQ Server%/rabbitmq_server-3.3.5/etc 下的 rabbitmq.config.example 文件,我们可以直接在这个文件中修改(可以不用去设置环境变量了),也可以自己再新建一个 rabbitmq.config 文件,然后把这个文件路径配置到环境变量中,这里介绍就直接修改 rabbitmq.config.example 文件。

    注意:修改之前,需要先停止 RabbitMQ 服务!!不然是不能保存的!!!

配置之前需要先添加用户,用于外网的访问,可以使用命令行来实现添加用户,需要在 RabbitMQ 的安装目录 sbin 目录下执行:

duanwf@master:/opt/rabbitmq_server-3.3.5/sbin$ rabbitmqctl add_user admin admin

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

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

    为了授权该用户对 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, “”}

详细错误日志为:

 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 远程不能访问问题的解决

用户以及授权添加完成之后,在 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 远程不能访问问题的解决

测试用例见博文“RabbitMQ 远程调用测试用例 http://www.linuxidc.com/Linux/2014-10/107916.htm”

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2014-10/107917p2.htm

二、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”]},
  ……
  ]}
].

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

 

RabbitMQ 的详细介绍 :请点这里
RabbitMQ 的下载地址 :请点这里

刚刚安装的 RabbitMQ-Server-3.3.5,并且也已经开启了 Web 管理功能,但是现在存在一个问题:

出于安全的考虑,guest 这个默认的用户只能通过 http://localhost:15672 来登录,不能使用 IP 地址登录,也就是不能远程访问,这对于服务器上没有安装桌面的情况是无法管理维护的。

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

要解决这个问题需要配置远程登录权限,这里通过配置文件来实现远程访问。

CentOS 5.6 安装 RabbitMQ http://www.linuxidc.com/Linux/2013-02/79508.htm

RabbitMQ 客户端 C ++ 安装详细记录 http://www.linuxidc.com/Linux/2012-02/53521.htm

用 Python 尝试 RabbitMQ http://www.linuxidc.com/Linux/2011-12/50653.htm

RabbitMQ 集群环境生产实例部署 http://www.linuxidc.com/Linux/2012-10/72720.htm

Ubuntu 下 PHP + RabbitMQ 使用 http://www.linuxidc.com/Linux/2010-07/27309.htm

在 CentOS 上安装 RabbitMQ 流程 http://www.linuxidc.com/Linux/2011-12/49610.htm

这里主要介绍 Unix 和 Windows 的配置文件修改。

一、Windows

    Windows 环境下默认配置文件为目录 /%RabbitMQ Server%/rabbitmq_server-3.3.5/etc 下的 rabbitmq.config.example 文件,我们可以直接在这个文件中修改(可以不用去设置环境变量了),也可以自己再新建一个 rabbitmq.config 文件,然后把这个文件路径配置到环境变量中,这里介绍就直接修改 rabbitmq.config.example 文件。

    注意:修改之前,需要先停止 RabbitMQ 服务!!不然是不能保存的!!!

配置之前需要先添加用户,用于外网的访问,可以使用命令行来实现添加用户,需要在 RabbitMQ 的安装目录 sbin 目录下执行:

duanwf@master:/opt/rabbitmq_server-3.3.5/sbin$ rabbitmqctl add_user admin admin

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

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

    为了授权该用户对 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, “”}

详细错误日志为:

 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 远程不能访问问题的解决

用户以及授权添加完成之后,在 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 远程不能访问问题的解决

测试用例见博文“RabbitMQ 远程调用测试用例 http://www.linuxidc.com/Linux/2014-10/107916.htm”

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2014-10/107917p2.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计7878字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中