解决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目录下执行:

[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"/" 的访问,用户添加之后,需要对该用户进行授权,不然运行会出现错误:

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

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

时间: 2024-08-03 11:29:50

解决RabbitMQ远程不能访问的问题的相关文章

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

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

解决MySql本地能访问,远程不能访问的问题

本地能够连接mysql,为何远程连接不上mysql呢?这是因为默认安装的mysql,出于安全考虑,只能本地连接.如果您需要远程连接,这里就需要设置一下mysql的权限表.具体设置的步骤如下: 1.在MySql本机连接mysql. 2.执行以下mysql命令: use mysql                #打开mysql数据库 #将host设置为%表示任何ip都能连接mysql,当然您也可以将host指定为某个ip update user set host='%' where user='r

如何解决远程桌面访问HASP NOT Found的问题

 背景: 我在进行远程桌面访问时,点击其中一个程序,该程序采用HASP加密.发现无法启动该程序,程序报错,提示Hasp not found.HASP是我插到远程服务器上的 HASP的加密狗. 解决方法: mstsc /admin的方式打开远程访问终端.

Redis:如何停止/重启/启动,以及解决远程不能访问

如果是用apt-get或者yum install安装的redis,可以直接通过下面的命令停止/启动/重启redis /etc/init.d/redis-server stop /etc/init.d/redis-server start /etc/init.d/redis-server restart 如果是通过源码安装的redis,则可以通过redis的客户端程序redis-cli的shutdown命令来重启redis 1.redis关闭 redis-cli -h 127.0.0.1 -p 6

XRDP+VNC远程桌面访问Linux系统

1.安装XRDP 使用rdp协议访问远程Linux桌面 一般情况下,如果需要登陆远程Linux系统,我们会使用ssh/telnet来完成,如果需要登陆到远程Linux系统的桌面环境,我们可能会使用VNC. VNC是大部分Linux发行版默认的基于RFB协议的远程桌面程序,但对于普通用户来说,VNC的用户体验并不好,比较慢,还需要安装客户端. Windows的远程桌面基于RDP协议,在Linux下,我们也是可以找到开源的rdpserver的,这就是xrdp. 下面,我来和大家介绍安装centos下

Windows通过远程桌面访问Ubuntu

关于Windows通过远程桌面访问Ubuntu 问题及目标 Window环境通过远程桌面访问Ubuntu Ubuntu机器端   1.  安装所需软件包 sudoapt-get install xrdp sudo apt-get install vnc4server tightvncserver 2.配置 进入系统->首选项->桌面共享进行如下设置. 执行以下命令(该命令的作用是由于安装了gnome桌面,ubuntu12.04中同时存在unity.GNOME多个桌面管理器,需要启动的时候指定一

关于Windows通过远程桌面访问Ubuntu

问题及目标 Window环境通过远程桌面访问Ubuntu Ubuntu机器端 1.  安装所需软件包 sudoapt-get install xrdp sudo apt-get install vnc4server tightvncserver 2.配置 进入系统->首选项->桌面共享进行如下设置. 执行以下命令(该命令的作用是由于安装了gnome桌面,ubuntu12.04中同时存在unity.GNOME多个桌面管理器,需要启动的时候指定一个,不然即使远程登录验证成功以后,也只是背景,其他什

Linux 安装MongoDB 并设置防火墙,使用远程客户端访问

1. 下载 MongoDB 提供了 linux 各发行版本 64 位的安装包  下载地址:https://www.mongodb.com/download-center#community 2. 安装 1 tar -zxvf mongodb-linux-x86_64-3.0.6.tgz # 解压 2 3 mv mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb # 将解压包拷贝到指定目录 MongoDB 的可执行文件位于 bin 目录下,所以可以将其添加

解决ASP.Net第一次访问慢的处理(IIS8)

本篇经验以IIS8,Windows Server 2012R2做为案例. IIS8 运行在 Windows Server 2012 and Windows 8 版本以上的平台上. IIS中应用程序池和网站是单独存在的,但是网站运行必须建立在对应的应用程序池启动的前提下. 默认情况下,应用程序池在不活动情况下(无请求操作),一段时间后,将被IIS自动回收掉. IIS8 自带应用程序初始化工具包,IIS7.5要搜索独立安装包进行安装,低于7.5的暂时不支持IIS自动初始化. 本篇经验中的方法能解决A